Browse Source

Only use Gson if Jackson is missing

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

Fixes gh-1967
pull/1979/head
Phillip Webb 12 years ago
parent
commit
bf0629522c
  1. 2
      spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java
  2. 11
      spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfigurationTests.java

2
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java

@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -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 { @@ -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 {

11
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfigurationTests.java

@ -121,10 +121,9 @@ public class HttpMessageConvertersAutoConfigurationTests { @@ -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 { @@ -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 { @@ -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);

Loading…
Cancel
Save