Fix logic error detecting gson preferences

This commit is contained in:
Dave Syer
2018-10-04 09:38:37 +01:00
parent 37729e4583
commit c20433e05f

View File

@@ -40,7 +40,6 @@ import org.springframework.context.support.GenericApplicationContext;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.format.support.DefaultFormattingConversionService;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
/**
* @author Dave Syer
@@ -122,7 +121,7 @@ public class ContextFunctionCatalogInitializer
}
if (ClassUtils.isPresent("com.google.gson.Gson", null)
&& !"gson".equals(context.getEnvironment().getProperty(
&& "gson".equals(context.getEnvironment().getProperty(
ContextFunctionCatalogAutoConfiguration.PREFERRED_MAPPER_PROPERTY,
"gson"))) {
if (context.getBeanFactory().getBeanNamesForType(Gson.class, false, false).length == 0) {
@@ -213,4 +212,26 @@ public class ContextFunctionCatalogInitializer
}
}
// https://jira.spring.io/browse/SPR-17333
static class ClassUtils {
public static boolean isPresent(String string, ClassLoader classLoader) {
if (classLoader==null) {
classLoader = ClassUtils.class.getClassLoader();
}
try {
return Class.forName(string, false, classLoader) != null;
}
catch (Throwable e) {
try {
return Class.forName(string) != null;
}
catch (Throwable t) {
return false;
}
}
}
}
}