From 1b0b2693708c5de003805630a1c469c50e9d9139 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 27 Oct 2016 17:41:33 +0200 Subject: [PATCH] DefaultServerResponseBuilder uses Reactor's new thenEmpty method (fixing deprecation error) --- .../DefaultServerResponseBuilder.java | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java index f8c1e4ad0d..f7548e6b43 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java @@ -21,7 +21,6 @@ import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; -import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Locale; @@ -60,10 +59,12 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { private final HttpHeaders headers = new HttpHeaders(); + public DefaultServerResponseBuilder(int statusCode) { this.statusCode = statusCode; } + @Override public ServerResponse.BodyBuilder header(String headerName, String... headerValues) { for (String headerValue : headerValues) { @@ -152,7 +153,7 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { public > ServerResponse build(T voidPublisher) { Assert.notNull(voidPublisher, "'voidPublisher' must not be null"); return body(BodyInserter.of( - (response, context) -> Flux.from(voidPublisher).then(response.setComplete()), + (response, context) -> Flux.from(voidPublisher).thenEmpty(response.setComplete()), () -> null)); } @@ -173,21 +174,6 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { return render(name, toModelMap(modelAttributes)); } - private static Map toModelMap(Object[] modelAttributes) { - if (!ObjectUtils.isEmpty(modelAttributes)) { - return Arrays.stream(modelAttributes) - .filter(o -> !isEmptyCollection(o)) - .collect(Collectors.toMap(Conventions::getVariableName, o -> o)); - } - else { - return null; - } - } - - private static boolean isEmptyCollection(Object o) { - return o instanceof Collection && ((Collection) o).isEmpty(); - } - @Override public ServerResponse render(String name, Map model) { Assert.hasLength(name, "'name' must not be empty"); @@ -198,6 +184,15 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { return new RenderingServerResponse(this.statusCode, this.headers, name, modelMap); } + private Map toModelMap(Object[] modelAttributes) { + if (ObjectUtils.isEmpty(modelAttributes)) { + return null; + } + return Arrays.stream(modelAttributes) + .filter(val -> !ObjectUtils.isEmpty(val)) + .collect(Collectors.toMap(Conventions::getVariableName, val -> val)); + } + private static abstract class AbstractServerResponse implements ServerResponse { @@ -205,7 +200,6 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { private final HttpHeaders headers; - protected AbstractServerResponse(int statusCode, HttpHeaders headers) { this.statusCode = statusCode; this.headers = HttpHeaders.readOnlyHttpHeaders(headers); @@ -234,11 +228,11 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { } } + private static final class BodyInserterServerResponse extends AbstractServerResponse { private final BodyInserter inserter; - public BodyInserterServerResponse(int statusCode, HttpHeaders headers, BodyInserter inserter) { @@ -262,7 +256,6 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { } }); } - } @@ -274,8 +267,7 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { private final Rendering rendering; - public RenderingServerResponse(int statusCode, HttpHeaders headers, String name, - Map model) { + public RenderingServerResponse(int statusCode, HttpHeaders headers, String name, Map model) { super(statusCode, headers); this.name = name; this.model = model; @@ -314,9 +306,6 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { return model; } } - - } - }