Only use Gson if Jackson is missing

Update HttpMessageConvertersAutoConfiguration to only register Gson
support when Jackson is not on the classpath.

Fixes gh-1967
This commit is contained in:
Phillip Webb
2014-11-20 17:21:25 -08:00
parent 2b57c5a4dd
commit bf0629522c
2 changed files with 6 additions and 7 deletions

View File

@@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -113,6 +114,7 @@ public class HttpMessageConvertersAutoConfiguration {
@Configuration
@ConditionalOnClass(Gson.class)
@ConditionalOnMissingClass(name = "com.fasterxml.jackson.core.JsonGenerator")
@ConditionalOnBean(Gson.class)
protected static class GsonHttpMessageConverterConfiguration {

View File

@@ -121,10 +121,9 @@ public class HttpMessageConvertersAutoConfigurationTests {
this.context.register(GsonConfig.class,
HttpMessageConvertersAutoConfiguration.class);
this.context.refresh();
assertConverterBeanExists(GsonHttpMessageConverter.class,
"gsonHttpMessageConverter");
assertConverterBeanRegisteredWithHttpMessageConverters(GsonHttpMessageConverter.class);
// Shouldn't be registered because we have Jackson
assertEquals(0, this.context.getBeansOfType(GsonHttpMessageConverter.class)
.size());
}
@Test
@@ -165,8 +164,7 @@ public class HttpMessageConvertersAutoConfigurationTests {
this.context.refresh();
MappingJackson2HttpMessageConverter converter = this.context
.getBean(MappingJackson2HttpMessageConverter.class);
assertNull(new DirectFieldAccessor(converter)
.getPropertyValue("prettyPrint"));
assertNull(new DirectFieldAccessor(converter).getPropertyValue("prettyPrint"));
}
@Test
@@ -189,7 +187,6 @@ public class HttpMessageConvertersAutoConfigurationTests {
}
private void assertConverterBeanRegisteredWithHttpMessageConverters(Class<?> type) {
Object converter = this.context.getBean(type);
HttpMessageConverters converters = this.context
.getBean(HttpMessageConverters.class);