Browse Source

Update order of method in WebReactiveConfigurer

pull/1193/merge
Rossen Stoyanchev 9 years ago
parent
commit
44717af0e5
  1. 50
      spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfigurer.java
  2. 40
      spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfigurerComposite.java

50
spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfigurer.java

@ -31,15 +31,6 @@ import org.springframework.web.reactive.result.method.annotation.RequestMappingH
*/ */
public interface WebReactiveConfigurer { public interface WebReactiveConfigurer {
/**
* Provide a custom sub-class of {@link RequestMappingHandlerMapping}
* instead of the one created by default.
* The default implementation returns {@code Optional.empty()}.
*/
default Optional<RequestMappingHandlerMapping> createRequestMappingHandlerMapping() {
return Optional.empty();
}
/** /**
* Configure how the requested content type is resolved. * Configure how the requested content type is resolved.
* <p>The given builder will create a composite of multiple * <p>The given builder will create a composite of multiple
@ -73,15 +64,6 @@ public interface WebReactiveConfigurer {
default void addResourceHandlers(ResourceHandlerRegistry registry) { default void addResourceHandlers(ResourceHandlerRegistry registry) {
} }
/**
* Provide a custom sub-class of {@link RequestMappingHandlerAdapter}
* instead of the one created by default.
* The default implementation returns {@code Optional.empty()}.
*/
default Optional<RequestMappingHandlerAdapter> createRequestMappingHandlerAdapter() {
return Optional.empty();
}
/** /**
* Provide custom argument resolvers without overriding the built-in ones. * Provide custom argument resolvers without overriding the built-in ones.
* @param resolvers a list of resolvers to add to the built-in ones * @param resolvers a list of resolvers to add to the built-in ones
@ -93,16 +75,16 @@ public interface WebReactiveConfigurer {
* Configure the message readers to use for decoding controller method arguments. * Configure the message readers to use for decoding controller method arguments.
* <p>If no message readers are specified, default readers will be added via * <p>If no message readers are specified, default readers will be added via
* {@link WebReactiveConfigurationSupport#addDefaultHttpMessageReaders}. * {@link WebReactiveConfigurationSupport#addDefaultHttpMessageReaders}.
* @param messageReaders a list to add message readers to, initially an empty list * @param readers a list to add message readers to, initially an empty list
*/ */
default void configureMessageReaders(List<HttpMessageReader<?>> messageReaders) { default void configureMessageReaders(List<HttpMessageReader<?>> readers) {
} }
/** /**
* Modify the list of message readers to use for decoding controller method arguments, * Modify the list of message readers to use for decoding controller method arguments,
* for example to add some in addition to the ones already configured. * for example to add some in addition to the ones already configured.
*/ */
default void extendMessageReaders(List<HttpMessageReader<?>> messageReaders) { default void extendMessageReaders(List<HttpMessageReader<?>> readers) {
} }
/** /**
@ -134,16 +116,16 @@ public interface WebReactiveConfigurer {
* Configure the message writers to use for encoding return values. * Configure the message writers to use for encoding return values.
* <p>If no message writers are specified, default writers will be added via * <p>If no message writers are specified, default writers will be added via
* {@link WebReactiveConfigurationSupport#addDefaultHttpMessageWriters(List)}. * {@link WebReactiveConfigurationSupport#addDefaultHttpMessageWriters(List)}.
* @param messageWriters a list to add message writers to, initially an empty list * @param writers a list to add message writers to, initially an empty list
*/ */
default void configureMessageWriters(List<HttpMessageWriter<?>> messageWriters) { default void configureMessageWriters(List<HttpMessageWriter<?>> writers) {
} }
/** /**
* Modify the list of message writers to use for encoding return values, * Modify the list of message writers to use for encoding return values,
* for example to add some in addition to the ones already configured. * for example to add some in addition to the ones already configured.
*/ */
default void extendMessageWriters(List<HttpMessageWriter<?>> messageWriters) { default void extendMessageWriters(List<HttpMessageWriter<?>> writers) {
} }
/** /**
@ -153,4 +135,24 @@ public interface WebReactiveConfigurer {
default void configureViewResolvers(ViewResolverRegistry registry) { default void configureViewResolvers(ViewResolverRegistry registry) {
} }
/**
* Factory method for the {@link RequestMappingHandlerMapping} bean creating
* an instance or a custom extension of it. Note that only one configurer
* is allowed to implement this method.
* The default implementation returns {@code Optional.empty()}.
*/
default Optional<RequestMappingHandlerMapping> createRequestMappingHandlerMapping() {
return Optional.empty();
}
/**
* Factory method for the {@link RequestMappingHandlerAdapter} bean creating
* an instance or a custom extension of it. Note that only one configurer
* is allowed to implement this method.
* The default implementation returns {@code Optional.empty()}.
*/
default Optional<RequestMappingHandlerAdapter> createRequestMappingHandlerAdapter() {
return Optional.empty();
}
} }

40
spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfigurerComposite.java

@ -36,12 +36,6 @@ public class WebReactiveConfigurerComposite implements WebReactiveConfigurer {
} }
@Override
public Optional<RequestMappingHandlerMapping> createRequestMappingHandlerMapping() {
return createSingleBean(WebReactiveConfigurer::createRequestMappingHandlerMapping,
RequestMappingHandlerMapping.class);
}
@Override @Override
public void configureRequestedContentTypeResolver(RequestedContentTypeResolverBuilder builder) { public void configureRequestedContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
this.delegates.stream().forEach(delegate -> delegate.configureRequestedContentTypeResolver(builder)); this.delegates.stream().forEach(delegate -> delegate.configureRequestedContentTypeResolver(builder));
@ -62,25 +56,19 @@ public class WebReactiveConfigurerComposite implements WebReactiveConfigurer {
this.delegates.stream().forEach(delegate -> delegate.addResourceHandlers(registry)); this.delegates.stream().forEach(delegate -> delegate.addResourceHandlers(registry));
} }
@Override
public Optional<RequestMappingHandlerAdapter> createRequestMappingHandlerAdapter() {
return createSingleBean(WebReactiveConfigurer::createRequestMappingHandlerAdapter,
RequestMappingHandlerAdapter.class);
}
@Override @Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
this.delegates.stream().forEach(delegate -> delegate.addArgumentResolvers(resolvers)); this.delegates.stream().forEach(delegate -> delegate.addArgumentResolvers(resolvers));
} }
@Override @Override
public void configureMessageReaders(List<HttpMessageReader<?>> messageReaders) { public void configureMessageReaders(List<HttpMessageReader<?>> readers) {
this.delegates.stream().forEach(delegate -> delegate.configureMessageReaders(messageReaders)); this.delegates.stream().forEach(delegate -> delegate.configureMessageReaders(readers));
} }
@Override @Override
public void extendMessageReaders(List<HttpMessageReader<?>> messageReaders) { public void extendMessageReaders(List<HttpMessageReader<?>> readers) {
this.delegates.stream().forEach(delegate -> delegate.extendMessageReaders(messageReaders)); this.delegates.stream().forEach(delegate -> delegate.extendMessageReaders(readers));
} }
@Override @Override
@ -99,13 +87,13 @@ public class WebReactiveConfigurerComposite implements WebReactiveConfigurer {
} }
@Override @Override
public void configureMessageWriters(List<HttpMessageWriter<?>> messageWriters) { public void configureMessageWriters(List<HttpMessageWriter<?>> writers) {
this.delegates.stream().forEach(delegate -> delegate.configureMessageWriters(messageWriters)); this.delegates.stream().forEach(delegate -> delegate.configureMessageWriters(writers));
} }
@Override @Override
public void extendMessageWriters(List<HttpMessageWriter<?>> messageWriters) { public void extendMessageWriters(List<HttpMessageWriter<?>> writers) {
this.delegates.stream().forEach(delegate -> delegate.extendMessageWriters(messageWriters)); this.delegates.stream().forEach(delegate -> delegate.extendMessageWriters(writers));
} }
@Override @Override
@ -113,6 +101,18 @@ public class WebReactiveConfigurerComposite implements WebReactiveConfigurer {
this.delegates.stream().forEach(delegate -> delegate.configureViewResolvers(registry)); this.delegates.stream().forEach(delegate -> delegate.configureViewResolvers(registry));
} }
@Override
public Optional<RequestMappingHandlerMapping> createRequestMappingHandlerMapping() {
return createSingleBean(WebReactiveConfigurer::createRequestMappingHandlerMapping,
RequestMappingHandlerMapping.class);
}
@Override
public Optional<RequestMappingHandlerAdapter> createRequestMappingHandlerAdapter() {
return createSingleBean(WebReactiveConfigurer::createRequestMappingHandlerAdapter,
RequestMappingHandlerAdapter.class);
}
private <T> Optional<T> createSingleBean(Function<WebReactiveConfigurer, Optional<T>> factory, private <T> Optional<T> createSingleBean(Function<WebReactiveConfigurer, Optional<T>> factory,
Class<T> beanType) { Class<T> beanType) {

Loading…
Cancel
Save