This commit is contained in:
Rossen Stoyanchev
2016-10-10 05:45:37 -04:00
parent b28b3e8877
commit 1de73b9b4f
5 changed files with 75 additions and 59 deletions

View File

@@ -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;
*/
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) {

View File

@@ -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;
*/
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) ||

View File

@@ -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 {
* @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 {
* @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 {
}
}