From 24f7f26fe613a0067c81922021ef32e590e3b7f2 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 22 Mar 2017 12:30:48 +0100 Subject: [PATCH] Add RenderingResponse.from This commit introduces RenderingResponse.from(RenderingResponse), allowing for easier response filtering. --- .../function/server/RenderingResponse.java | 14 ++++++++++++++ .../server/RenderingResponseIntegrationTests.java | 11 +++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RenderingResponse.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RenderingResponse.java index 74fe5ef357..b6127f31f0 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RenderingResponse.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RenderingResponse.java @@ -46,6 +46,20 @@ public interface RenderingResponse extends ServerResponse { // Builder + /** + * Create a builder with the template name, status code, headers and model of the given response. + * @param other the response to copy the values from + * @return the created builder + */ + static Builder from(RenderingResponse other) { + Assert.notNull(other, "'other' must not be null"); + DefaultRenderingResponseBuilder builder = new DefaultRenderingResponseBuilder(other.name()); + builder.status(other.statusCode()); + builder.headers(other.headers()); + builder.modelAttributes(other.model()); + return builder; + } + /** * Create a builder with the given template name. * @param name the name of the template to render diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/RenderingResponseIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/RenderingResponseIntegrationTests.java index 8f6dc7255c..69bdb7dbd3 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/RenderingResponseIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/RenderingResponseIntegrationTests.java @@ -56,14 +56,9 @@ public class RenderingResponseIntegrationTests extends AbstractRouterFunctionInt RouterFunction normalRoute = route(GET("/normal"), handler::render); RouterFunction filteredRoute = route(GET("/filter"), handler::render) .filter(ofResponseProcessor( - response -> { - Map model = new LinkedHashMap<>(response.model()); - model.put("qux", "quux"); - - return RenderingResponse.create(response.name()) - .modelAttributes(model) - .build(); - })); + response -> RenderingResponse.from(response) + .modelAttribute("qux", "quux") + .build())); return normalRoute.and(filteredRoute); } -- GitLab