Browse Source

Polish

pull/1203/head
Rossen Stoyanchev 9 years ago
parent
commit
1de73b9b4f
  1. 18
      spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfiguration.java
  2. 83
      spring-web-reactive/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestMappingHandlerAdapter.java
  3. 7
      spring-web/src/main/java/org/springframework/http/codec/Jackson2ServerHttpMessageWriter.java
  4. 8
      spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageWriter.java
  5. 12
      spring-web/src/main/java/org/springframework/web/bind/support/DefaultDataBinderFactory.java

18
spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfiguration.java

@ -86,8 +86,10 @@ import org.springframework.web.server.ServerWebExchange; @@ -86,8 +86,10 @@ import org.springframework.web.server.ServerWebExchange;
public class WebReactiveConfiguration implements ApplicationContextAware {
private static final boolean jackson2Present =
ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", WebReactiveConfiguration.class.getClassLoader()) &&
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", WebReactiveConfiguration.class.getClassLoader());
ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper",
WebReactiveConfiguration.class.getClassLoader()) &&
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator",
WebReactiveConfiguration.class.getClassLoader());
private static final boolean jaxb2Present =
ClassUtils.isPresent("javax.xml.bind.Binder", WebReactiveConfiguration.class.getClassLoader());
@ -318,7 +320,8 @@ public class WebReactiveConfiguration implements ApplicationContextAware { @@ -318,7 +320,8 @@ public class WebReactiveConfiguration implements ApplicationContextAware {
readers.add(new DecoderHttpMessageReader<>(new Jaxb2XmlDecoder()));
}
if (jackson2Present) {
readers.add(new Jackson2ServerHttpMessageReader(new DecoderHttpMessageReader<>(new Jackson2JsonDecoder())));
readers.add(new Jackson2ServerHttpMessageReader(
new DecoderHttpMessageReader<>(new Jackson2JsonDecoder())));
}
}
@ -454,10 +457,11 @@ public class WebReactiveConfiguration implements ApplicationContextAware { @@ -454,10 +457,11 @@ public class WebReactiveConfiguration implements ApplicationContextAware {
writers.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
}
if (jackson2Present) {
Jackson2JsonEncoder jacksonEncoder = new Jackson2JsonEncoder();
writers.add(new Jackson2ServerHttpMessageWriter(new EncoderHttpMessageWriter<>(jacksonEncoder)));
sseDataEncoders.add(jacksonEncoder);
writers.add(new Jackson2ServerHttpMessageWriter(new ServerSentEventHttpMessageWriter(sseDataEncoders)));
Jackson2JsonEncoder encoder = new Jackson2JsonEncoder();
writers.add(new Jackson2ServerHttpMessageWriter(encoder));
sseDataEncoders.add(encoder);
HttpMessageWriter<Object> writer = new ServerSentEventHttpMessageWriter(sseDataEncoders);
writers.add(new Jackson2ServerHttpMessageWriter(writer));
}
else {
writers.add(new ServerSentEventHttpMessageWriter(sseDataEncoders));

83
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestMappingHandlerAdapter.java

@ -61,15 +61,15 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory @@ -61,15 +61,15 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
private static final Log logger = LogFactory.getLog(RequestMappingHandlerAdapter.class);
private List<HandlerMethodArgumentResolver> customArgumentResolvers;
private List<HandlerMethodArgumentResolver> argumentResolvers;
private final List<HttpMessageReader<?>> messageReaders = new ArrayList<>(10);
private WebBindingInitializer webBindingInitializer;
private ReactiveAdapterRegistry reactiveAdapters = new ReactiveAdapterRegistry();
private WebBindingInitializer webBindingInitializer;
private List<HandlerMethodArgumentResolver> customArgumentResolvers;
private List<HandlerMethodArgumentResolver> argumentResolvers;
private ConversionService conversionService = new DefaultFormattingConversionService();
@ -77,7 +77,8 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory @@ -77,7 +77,8 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
private ConfigurableBeanFactory beanFactory;
private final Map<Class<?>, ExceptionHandlerMethodResolver> exceptionHandlerCache = new ConcurrentHashMap<>(64);
private final Map<Class<?>, ExceptionHandlerMethodResolver> exceptionHandlerCache =
new ConcurrentHashMap<>(64);
@ -88,47 +89,33 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory @@ -88,47 +89,33 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
/**
* Provide custom argument resolvers without overriding the built-in ones.
*/
public void setCustomArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
this.customArgumentResolvers = argumentResolvers;
}
/**
* Return the custom argument resolvers.
*/
public List<HandlerMethodArgumentResolver> getCustomArgumentResolvers() {
return this.customArgumentResolvers;
}
/**
* Configure the complete list of supported argument types thus overriding
* the resolvers that would otherwise be configured by default.
* Configure message readers to de-serialize the request body with.
*/
public void setArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
this.argumentResolvers = new ArrayList<>(resolvers);
public void setMessageReaders(List<HttpMessageReader<?>> messageReaders) {
this.messageReaders.clear();
this.messageReaders.addAll(messageReaders);
}
/**
* Return the configured argument resolvers.
* Return the configured message readers.
*/
public List<HandlerMethodArgumentResolver> getArgumentResolvers() {
return this.argumentResolvers;
public List<HttpMessageReader<?>> getMessageReaders() {
return this.messageReaders;
}
/**
* Configure message readers to de-serialize the request body with.
* Provide a WebBindingInitializer with "global" initialization to apply
* to every DataBinder instance.
*/
public void setMessageReaders(List<HttpMessageReader<?>> messageReaders) {
this.messageReaders.clear();
this.messageReaders.addAll(messageReaders);
public void setWebBindingInitializer(WebBindingInitializer webBindingInitializer) {
this.webBindingInitializer = webBindingInitializer;
}
/**
* Return the configured message readers.
* Return the configured WebBindingInitializer, or {@code null} if none.
*/
public List<HttpMessageReader<?>> getMessageReaders() {
return this.messageReaders;
public WebBindingInitializer getWebBindingInitializer() {
return this.webBindingInitializer;
}
public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry) {
@ -140,18 +127,32 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory @@ -140,18 +127,32 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
}
/**
* Provide a WebBindingInitializer with "global" initialization to apply
* to every DataBinder instance.
* Provide custom argument resolvers without overriding the built-in ones.
*/
public void setWebBindingInitializer(WebBindingInitializer webBindingInitializer) {
this.webBindingInitializer = webBindingInitializer;
public void setCustomArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
this.customArgumentResolvers = argumentResolvers;
}
/**
* Return the configured WebBindingInitializer, or {@code null} if none.
* Return the custom argument resolvers.
*/
public WebBindingInitializer getWebBindingInitializer() {
return this.webBindingInitializer;
public List<HandlerMethodArgumentResolver> getCustomArgumentResolvers() {
return this.customArgumentResolvers;
}
/**
* Configure the complete list of supported argument types thus overriding
* the resolvers that would otherwise be configured by default.
*/
public void setArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
this.argumentResolvers = new ArrayList<>(resolvers);
}
/**
* Return the configured argument resolvers.
*/
public List<HandlerMethodArgumentResolver> getArgumentResolvers() {
return this.argumentResolvers;
}
/**

7
spring-web/src/main/java/org/springframework/http/codec/Jackson2ServerHttpMessageWriter.java

@ -24,6 +24,7 @@ import com.fasterxml.jackson.annotation.JsonView; @@ -24,6 +24,7 @@ import com.fasterxml.jackson.annotation.JsonView;
import org.springframework.core.MethodParameter;
import org.springframework.core.ResolvableType;
import org.springframework.core.codec.Encoder;
import org.springframework.http.MediaType;
import org.springframework.http.codec.json.AbstractJackson2Codec;
import org.springframework.http.server.reactive.ServerHttpRequest;
@ -40,10 +41,16 @@ import org.springframework.http.server.reactive.ServerHttpRequest; @@ -40,10 +41,16 @@ import org.springframework.http.server.reactive.ServerHttpRequest;
*/
public class Jackson2ServerHttpMessageWriter extends AbstractServerHttpMessageWriter<Object> {
public Jackson2ServerHttpMessageWriter(Encoder<Object> encoder) {
super(new EncoderHttpMessageWriter<>(encoder));
}
public Jackson2ServerHttpMessageWriter(HttpMessageWriter<Object> writer) {
super(writer);
}
@Override
protected Map<String, Object> resolveWriteHints(ResolvableType streamType,
ResolvableType elementType, MediaType mediaType, ServerHttpRequest request) {

8
spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageWriter.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.http.codec;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -47,20 +48,21 @@ import org.springframework.util.MimeTypeUtils; @@ -47,20 +48,21 @@ import org.springframework.util.MimeTypeUtils;
*/
public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Object> {
private static final MediaType TEXT_EVENT_STREAM =
new MediaType("text", "event-stream");
private static final MediaType TEXT_EVENT_STREAM = new MediaType("text", "event-stream");
private final List<Encoder<?>> dataEncoders;
public ServerSentEventHttpMessageWriter() {
this.dataEncoders = Collections.emptyList();
}
public ServerSentEventHttpMessageWriter(List<Encoder<?>> dataEncoders) {
Assert.notNull(dataEncoders, "'dataEncoders' must not be null");
this.dataEncoders = dataEncoders;
this.dataEncoders = new ArrayList<>(dataEncoders);
}
@Override
public boolean canWrite(ResolvableType elementType, MediaType mediaType) {
return mediaType == null || TEXT_EVENT_STREAM.isCompatibleWith(mediaType) ||

12
spring-web/src/main/java/org/springframework/web/bind/support/DefaultDataBinderFactory.java

@ -48,8 +48,8 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory { @@ -48,8 +48,8 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory {
*/
@Override
@SuppressWarnings("deprecation")
public final WebDataBinder createBinder(NativeWebRequest webRequest, Object target, String objectName)
throws Exception {
public final WebDataBinder createBinder(NativeWebRequest webRequest, Object target,
String objectName) throws Exception {
WebDataBinder dataBinder = createBinderInstance(target, objectName, webRequest);
if (this.initializer != null) {
@ -67,8 +67,8 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory { @@ -67,8 +67,8 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory {
* @param webRequest the current request
* @throws Exception in case of invalid state or arguments
*/
protected WebDataBinder createBinderInstance(Object target, String objectName, NativeWebRequest webRequest)
throws Exception {
protected WebDataBinder createBinderInstance(Object target, String objectName,
NativeWebRequest webRequest) throws Exception {
return new WebRequestDataBinder(target, objectName);
}
@ -81,7 +81,9 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory { @@ -81,7 +81,9 @@ public class DefaultDataBinderFactory implements WebDataBinderFactory {
* @param webRequest the current request
* @throws Exception if initialization fails
*/
protected void initBinder(WebDataBinder dataBinder, NativeWebRequest webRequest) throws Exception {
protected void initBinder(WebDataBinder dataBinder, NativeWebRequest webRequest)
throws Exception {
}
}

Loading…
Cancel
Save