From 11c8220377b0e71bd12f9362ce305f69bd7779f0 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 11 May 2015 14:30:23 +0100 Subject: [PATCH] =?UTF-8?q?DATAREST-538=20-=20Expose=20Jackson=20converter?= =?UTF-8?q?=20beans=20as=20being=20TypeConstrained=E2=80=A6Converters.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, RepositoryRestMvcConfiguration exposed its two ResourceSupportHttpMessageConverter beans as MappingJackson2HttpMessageConverters. This made it impossible for Spring Boot support for conditional beans to identify that they were type-constrained and, therefore, were not a suitable replacement for a general-purpose Mapping Jackson2HttpMessageConverter bean. This commit updates RepositoryRestMvcConfiguration to expose both of its Jackson message converters as TypeConstrinaedMappingJackson2HttpMessageConverter instances. This will also Spring Boot to identify that their converters are type-constrained so that it can continue to auto-configure its general purpose converter. This is important as it allows Boot to provide a converter that honors the user’s configuration rather than Spring MVC’s default converter which does not. See spring-projects/spring-boot#2914 for details. Original pull request: #174. --- .../webmvc/config/RepositoryRestMvcConfiguration.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java index eb621e721..c2925979d 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java @@ -387,7 +387,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon * @return */ @Bean - public MappingJackson2HttpMessageConverter jacksonHttpMessageConverter() { + public TypeConstrainedMappingJackson2HttpMessageConverter jacksonHttpMessageConverter() { List mediaTypes = new ArrayList(); @@ -403,7 +403,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon RestMediaTypes.JSON_PATCH_JSON, RestMediaTypes.MERGE_PATCH_JSON, // RestMediaTypes.SPRING_DATA_VERBOSE_JSON, RestMediaTypes.SPRING_DATA_COMPACT_JSON)); - MappingJackson2HttpMessageConverter jacksonConverter = new ResourceSupportHttpMessageConverter(order); + TypeConstrainedMappingJackson2HttpMessageConverter jacksonConverter = new ResourceSupportHttpMessageConverter(order); jacksonConverter.setObjectMapper(objectMapper()); jacksonConverter.setSupportedMediaTypes(mediaTypes); @@ -415,7 +415,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon // @Bean - public MappingJackson2HttpMessageConverter halJacksonHttpMessageConverter() { + public TypeConstrainedMappingJackson2HttpMessageConverter halJacksonHttpMessageConverter() { ArrayList mediaTypes = new ArrayList(); mediaTypes.add(MediaTypes.HAL_JSON); @@ -428,7 +428,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon int order = config().useHalAsDefaultJsonMediaType() ? Ordered.LOWEST_PRECEDENCE - 10 : Ordered.LOWEST_PRECEDENCE - 1; - MappingJackson2HttpMessageConverter converter = new ResourceSupportHttpMessageConverter(order); + TypeConstrainedMappingJackson2HttpMessageConverter converter = new ResourceSupportHttpMessageConverter(order); converter.setObjectMapper(halObjectMapper()); converter.setSupportedMediaTypes(mediaTypes);