From 77abe07807ad9f1c150388011402a4436c4c4db6 Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Tue, 30 Sep 2014 05:07:31 +0200 Subject: [PATCH] Set Jackson DEFAULT_VIEW_INCLUSION property to false by default Issue: SPR-12179 --- .../http/converter/json/Jackson2ObjectMapperBuilder.java | 9 +++++++++ .../converter/json/Jackson2ObjectMapperFactoryBean.java | 9 +++++++++ .../converter/json/Jackson2ObjectMapperBuilderTests.java | 4 ++-- .../json/Jackson2ObjectMapperFactoryBeanTests.java | 2 +- .../json/MappingJackson2HttpMessageConverterTests.java | 4 ++-- .../xml/MappingJackson2XmlHttpMessageConverterTests.java | 2 +- .../web/client/RestTemplateIntegrationTests.java | 2 +- .../web/servlet/config/MvcNamespaceTests.java | 4 ++-- .../WebMvcConfigurationSupportExtensionTests.java | 4 ++-- .../annotation/WebMvcConfigurationSupportTests.java | 4 ++-- .../RequestResponseBodyMethodProcessorTests.java | 8 ++++---- 11 files changed, 35 insertions(+), 17 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java index be4d7dd715..9adf4d27de 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java @@ -47,6 +47,12 @@ import org.springframework.util.ClassUtils; /** * A builder used to create {@link ObjectMapper} instances with a fluent API. * + *

It customizes Jackson defaults properties with the following ones: + *

+ * *

Note that Jackson's JSR-310 and Joda-Time support modules will be registered automatically * when available (and when Java 8 and Joda-Time themselves are available, respectively). * @@ -384,6 +390,9 @@ public class Jackson2ObjectMapperBuilder { this.objectMapper.registerModule(module); } + if(!features.containsKey(MapperFeature.DEFAULT_VIEW_INCLUSION)) { + configureFeature(MapperFeature.DEFAULT_VIEW_INCLUSION, false); + } if(!features.containsKey(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)) { configureFeature(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java index ceaca5ce55..931694337b 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java @@ -52,6 +52,12 @@ import org.springframework.util.ClassUtils; * {@link XmlMapper} ({@code createXmlMapper} property set to true) with setters * to enable or disable Jackson features from within XML configuration. * + *

It customizes Jackson defaults properties with the following ones: + *

+ * *

Example usage with * {@link MappingJackson2HttpMessageConverter}: * @@ -413,6 +419,9 @@ public class Jackson2ObjectMapperFactoryBean implements FactoryBeanwith")); assertThat(result, not(containsString("with"))); - assertThat(result, containsString("without")); + assertThat(result, not(containsString("without"))); } @Test diff --git a/spring-web/src/test/java/org/springframework/web/client/RestTemplateIntegrationTests.java b/spring-web/src/test/java/org/springframework/web/client/RestTemplateIntegrationTests.java index aed9c339fa..b5be18bf83 100644 --- a/spring-web/src/test/java/org/springframework/web/client/RestTemplateIntegrationTests.java +++ b/spring-web/src/test/java/org/springframework/web/client/RestTemplateIntegrationTests.java @@ -226,7 +226,7 @@ public class RestTemplateIntegrationTests extends AbstractJettyServerTestCase { String s = template.postForObject(baseUrl + "/jsonpost", entity, String.class, "post"); assertTrue(s.contains("\"with1\":\"with\"")); assertFalse(s.contains("\"with2\":\"with\"")); - assertTrue(s.contains("\"without\":\"without\"")); + assertFalse(s.contains("\"without\":\"without\"")); } // SPR-12123 diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java index 7b057ffb7e..d1bc899594 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java @@ -173,8 +173,8 @@ public class MvcNamespaceTests { for(HttpMessageConverter converter : converters) { if(converter instanceof AbstractJackson2HttpMessageConverter) { ObjectMapper objectMapper = ((AbstractJackson2HttpMessageConverter)converter).getObjectMapper(); - assertTrue(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); - assertTrue(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); + assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); + assertFalse(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); assertFalse(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); if(converter instanceof MappingJackson2XmlHttpMessageConverter) { assertEquals(XmlMapper.class, objectMapper.getClass()); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportExtensionTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportExtensionTests.java index 0182852351..89daebb68c 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportExtensionTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportExtensionTests.java @@ -162,8 +162,8 @@ public class WebMvcConfigurationSupportExtensionTests { assertEquals(1, adapter.getMessageConverters().size()); assertEquals(MappingJackson2HttpMessageConverter.class, adapter.getMessageConverters().get(0).getClass()); ObjectMapper objectMapper = ((MappingJackson2HttpMessageConverter)adapter.getMessageConverters().get(0)).getObjectMapper(); - assertTrue(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); - assertTrue(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); + assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); + assertFalse(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); assertFalse(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(adapter); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java index 9c4166289e..c6b0cf291c 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java @@ -162,8 +162,8 @@ public class WebMvcConfigurationSupportTests { for(HttpMessageConverter converter : converters) { if(converter instanceof AbstractJackson2HttpMessageConverter) { ObjectMapper objectMapper = ((AbstractJackson2HttpMessageConverter)converter).getObjectMapper(); - assertTrue(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); - assertTrue(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); + assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); + assertFalse(objectMapper.getSerializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); assertFalse(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); if(converter instanceof MappingJackson2XmlHttpMessageConverter) { assertEquals(XmlMapper.class, objectMapper.getClass()); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java index 02797b1f10..2cdad9a065 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java @@ -322,7 +322,7 @@ public class RequestResponseBodyMethodProcessorTests { String content = this.servletResponse.getContentAsString(); assertFalse(content.contains("\"withView1\":\"with\"")); assertTrue(content.contains("\"withView2\":\"with\"")); - assertTrue(content.contains("\"withoutView\":\"without\"")); + assertFalse(content.contains("\"withoutView\":\"without\"")); } @Test @@ -343,7 +343,7 @@ public class RequestResponseBodyMethodProcessorTests { String content = this.servletResponse.getContentAsString(); assertFalse(content.contains("\"withView1\":\"with\"")); assertTrue(content.contains("\"withView2\":\"with\"")); - assertTrue(content.contains("\"withoutView\":\"without\"")); + assertFalse(content.contains("\"withoutView\":\"without\"")); } // SPR-12149 @@ -366,7 +366,7 @@ public class RequestResponseBodyMethodProcessorTests { String content = this.servletResponse.getContentAsString(); assertFalse(content.contains("with")); assertTrue(content.contains("with")); - assertTrue(content.contains("without")); + assertFalse(content.contains("without")); } // SPR-12149 @@ -389,7 +389,7 @@ public class RequestResponseBodyMethodProcessorTests { String content = this.servletResponse.getContentAsString(); assertFalse(content.contains("with")); assertTrue(content.contains("with")); - assertTrue(content.contains("without")); + assertFalse(content.contains("without")); } -- GitLab