#1119 - Moved WebConverters bean declaration into common HateoasConfiguration.
RestTemplateHateoasConfiguration depends on a shared bean WebConverters (previously WebMvcConverters). As it can safely be used in both WebFlux and WebMVC scenarios (as it only depends on types from spring-web), we now include a declaration in the shared HateoasConfiguration. This also allows us to remove the just introduced explicit declaration of a WebConverter bean in WebFluxHateoasConfiguration.
This commit is contained in:
@@ -23,6 +23,7 @@ import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.PropertiesFactoryBean;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
@@ -48,6 +49,8 @@ import org.springframework.plugin.core.config.EnablePluginRegistries;
|
||||
import org.springframework.plugin.core.support.PluginRegistryFactoryBean;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Common HATEOAS specific configuration.
|
||||
*
|
||||
@@ -70,6 +73,12 @@ public class HateoasConfiguration {
|
||||
return MessageResolver.of(lookupMessageSource());
|
||||
}
|
||||
|
||||
@Bean
|
||||
WebConverters hypermediaWebMvcConverters(ObjectProvider<ObjectMapper> mapper,
|
||||
List<HypermediaMappingInformation> information) {
|
||||
return WebConverters.of(mapper.getIfUnique(ObjectMapper::new), information);
|
||||
}
|
||||
|
||||
// RelProvider
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -35,7 +35,7 @@ class RestTemplateHateoasConfiguration {
|
||||
|
||||
@Bean
|
||||
static HypermediaRestTemplateBeanPostProcessor hypermediaRestTemplateBeanPostProcessor(
|
||||
WebMvcConverters converters) {
|
||||
WebConverters converters) {
|
||||
return new HypermediaRestTemplateBeanPostProcessor(converters);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ class RestTemplateHateoasConfiguration {
|
||||
@RequiredArgsConstructor
|
||||
static class HypermediaRestTemplateBeanPostProcessor implements BeanPostProcessor {
|
||||
|
||||
private final WebMvcConverters converters;
|
||||
private final WebConverters converters;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
|
||||
@@ -33,18 +33,18 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
*
|
||||
* @author Oliver Drotbohm
|
||||
*/
|
||||
class WebMvcConverters {
|
||||
class WebConverters {
|
||||
|
||||
private final List<HttpMessageConverter<?>> converters;
|
||||
|
||||
/**
|
||||
* Creates a new {@link WebMvcConverters} from the given {@link ObjectMapper} and
|
||||
* Creates a new {@link WebConverters} from the given {@link ObjectMapper} and
|
||||
* {@link HypermediaMappingInformation}s.
|
||||
*
|
||||
* @param mapper must not be {@literal null}.
|
||||
* @param mappingInformation must not be {@literal null}.
|
||||
*/
|
||||
private WebMvcConverters(ObjectMapper mapper, List<HypermediaMappingInformation> mappingInformation) {
|
||||
private WebConverters(ObjectMapper mapper, List<HypermediaMappingInformation> mappingInformation) {
|
||||
|
||||
this.converters = mappingInformation.stream() //
|
||||
.map(it -> createMessageConverter(it, it.configureObjectMapper(mapper.copy()))) //
|
||||
@@ -52,19 +52,19 @@ class WebMvcConverters {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link WebMvcConverters} from the given {@link ObjectMapper} and
|
||||
* Creates a new {@link WebConverters} from the given {@link ObjectMapper} and
|
||||
* {@link HypermediaMappingInformation}s.
|
||||
*
|
||||
* @param mapper must not be {@literal null}.
|
||||
* @param mappingInformations must not be {@literal null}.
|
||||
* @return
|
||||
*/
|
||||
public static WebMvcConverters of(ObjectMapper mapper, List<HypermediaMappingInformation> mappingInformations) {
|
||||
public static WebConverters of(ObjectMapper mapper, List<HypermediaMappingInformation> mappingInformations) {
|
||||
|
||||
Assert.notNull(mapper, "ObjectMapper must not be null!");
|
||||
Assert.notNull(mappingInformations, "Mapping information must not be null!");
|
||||
|
||||
return new WebMvcConverters(mapper, mappingInformations);
|
||||
return new WebConverters(mapper, mappingInformations);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -47,12 +47,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@Configuration
|
||||
class WebFluxHateoasConfiguration {
|
||||
|
||||
@Bean
|
||||
WebMvcConverters hypermediaWebMvcConverters(ObjectProvider<ObjectMapper> mapper,
|
||||
List<HypermediaMappingInformation> information) {
|
||||
return WebMvcConverters.of(mapper.getIfUnique(ObjectMapper::new), information);
|
||||
}
|
||||
|
||||
@Bean
|
||||
WebFluxCodecs hypermediaConverters(ObjectProvider<ObjectMapper> mapper,
|
||||
List<HypermediaMappingInformation> mappingInformation) {
|
||||
|
||||
@@ -38,8 +38,6 @@ import org.springframework.web.method.support.HandlerMethodReturnValueHandlerCom
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Spring MVC HATEOAS Configuration
|
||||
*
|
||||
@@ -51,13 +49,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
class WebMvcHateoasConfiguration {
|
||||
|
||||
@Bean
|
||||
WebMvcConverters hypermediaWebMvcConverters(ObjectProvider<ObjectMapper> mapper,
|
||||
List<HypermediaMappingInformation> information) {
|
||||
return WebMvcConverters.of(mapper.getIfUnique(ObjectMapper::new), information);
|
||||
}
|
||||
|
||||
@Bean
|
||||
HypermediaWebMvcConfigurer hypermediaWebMvcConfigurer(WebMvcConverters converters) {
|
||||
HypermediaWebMvcConfigurer hypermediaWebMvcConfigurer(WebConverters converters) {
|
||||
return new HypermediaWebMvcConfigurer(converters);
|
||||
}
|
||||
|
||||
@@ -90,7 +82,7 @@ class WebMvcHateoasConfiguration {
|
||||
@RequiredArgsConstructor
|
||||
static class HypermediaWebMvcConfigurer implements WebMvcConfigurer {
|
||||
|
||||
private final @NonNull WebMvcConverters hypermediaConverters;
|
||||
private final @NonNull WebConverters hypermediaConverters;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
|
||||
Reference in New Issue
Block a user