diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java index a400d65a31e..2da1371d14e 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java @@ -56,12 +56,12 @@ class ResourceHandlerFunction implements HandlerFunction { public Mono handle(ServerRequest request) { switch (request.method()) { case GET: - return ServerResponse.ok() - .body(BodyInserters.fromResource(this.resource)); + return EntityResponse.fromObject(this.resource).build() + .map(response -> response); case HEAD: Resource headResource = new HeadMethodResource(this.resource); - return ServerResponse.ok() - .body(BodyInserters.fromResource(headResource)); + return EntityResponse.fromObject(headResource).build() + .map(response -> response); case OPTIONS: return ServerResponse.ok() .allow(SUPPORTED_METHODS) diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/ResourceHandlerFunctionTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/ResourceHandlerFunctionTests.java index ca5b861e9f1..59c51c3fd0d 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/ResourceHandlerFunctionTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/ResourceHandlerFunctionTests.java @@ -57,13 +57,9 @@ public class ResourceHandlerFunctionTests { Mono result = responseMono.flatMap(response -> { assertEquals(HttpStatus.OK, response.statusCode()); - /* - TODO: enable when ServerEntityResponse is reintroduced - StepVerifier.create(response.body()) - .expectNext(this.resource) - .expectComplete() - .verify(); - */ + assertTrue(response instanceof EntityResponse); + EntityResponse entityResponse = (EntityResponse) response; + assertEquals(this.resource, entityResponse.entity()); return response.writeTo(exchange, HandlerStrategies.withDefaults()); }); @@ -92,11 +88,14 @@ public class ResourceHandlerFunctionTests { ServerRequest request = new DefaultServerRequest(exchange, HandlerStrategies.withDefaults()); - Mono response = this.handlerFunction.handle(request); + Mono responseMono = this.handlerFunction.handle(request); - Mono result = response.flatMap(res -> { - assertEquals(HttpStatus.OK, res.statusCode()); - return res.writeTo(exchange, HandlerStrategies.withDefaults()); + Mono result = responseMono.flatMap(response -> { + assertEquals(HttpStatus.OK, response.statusCode()); + assertTrue(response instanceof EntityResponse); + EntityResponse entityResponse = (EntityResponse) response; + assertEquals(this.resource.getFilename(), entityResponse.entity().getFilename()); + return response.writeTo(exchange, HandlerStrategies.withDefaults()); }); StepVerifier.create(result).expectComplete().verify(); @@ -118,12 +117,6 @@ public class ResourceHandlerFunctionTests { assertEquals(HttpStatus.OK, response.statusCode()); assertEquals(EnumSet.of(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.OPTIONS), response.headers().getAllow()); - /* - TODO: enable when ServerEntityResponse is reintroduced - StepVerifier.create(response.body()) - .expectComplete() - .verify(); - */ return response.writeTo(exchange, HandlerStrategies.withDefaults()); });