DATAREST-538 - Expose Jackson converter beans as being TypeConstrained…Converters.
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.
This commit is contained in:
committed by
Oliver Gierke
parent
aecc0aa26a
commit
11c8220377
@@ -387,7 +387,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public MappingJackson2HttpMessageConverter jacksonHttpMessageConverter() {
|
||||
public TypeConstrainedMappingJackson2HttpMessageConverter jacksonHttpMessageConverter() {
|
||||
|
||||
List<MediaType> mediaTypes = new ArrayList<MediaType>();
|
||||
|
||||
@@ -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<MediaType> mediaTypes = new ArrayList<MediaType>();
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user