Browse Source

ResourceHandlerFunction returns EntityResponse

The ResourceHandlerFunction now returns an `EntityResponse<Resource>`
(instead of a `ServerResponse`), so that filters can inspect/change the
returned Resource.
pull/1424/head
Arjen Poutsma 9 years ago
parent
commit
ad9cf99420
  1. 8
      spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java
  2. 27
      spring-webflux/src/test/java/org/springframework/web/reactive/function/server/ResourceHandlerFunctionTests.java

8
spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ResourceHandlerFunction.java

@ -56,12 +56,12 @@ class ResourceHandlerFunction implements HandlerFunction<ServerResponse> {
public Mono<ServerResponse> handle(ServerRequest request) { public Mono<ServerResponse> handle(ServerRequest request) {
switch (request.method()) { switch (request.method()) {
case GET: case GET:
return ServerResponse.ok() return EntityResponse.fromObject(this.resource).build()
.body(BodyInserters.fromResource(this.resource)); .map(response -> response);
case HEAD: case HEAD:
Resource headResource = new HeadMethodResource(this.resource); Resource headResource = new HeadMethodResource(this.resource);
return ServerResponse.ok() return EntityResponse.fromObject(headResource).build()
.body(BodyInserters.fromResource(headResource)); .map(response -> response);
case OPTIONS: case OPTIONS:
return ServerResponse.ok() return ServerResponse.ok()
.allow(SUPPORTED_METHODS) .allow(SUPPORTED_METHODS)

27
spring-webflux/src/test/java/org/springframework/web/reactive/function/server/ResourceHandlerFunctionTests.java

@ -57,13 +57,9 @@ public class ResourceHandlerFunctionTests {
Mono<Void> result = responseMono.flatMap(response -> { Mono<Void> result = responseMono.flatMap(response -> {
assertEquals(HttpStatus.OK, response.statusCode()); assertEquals(HttpStatus.OK, response.statusCode());
/* assertTrue(response instanceof EntityResponse);
TODO: enable when ServerEntityResponse is reintroduced EntityResponse<Resource> entityResponse = (EntityResponse<Resource>) response;
StepVerifier.create(response.body()) assertEquals(this.resource, entityResponse.entity());
.expectNext(this.resource)
.expectComplete()
.verify();
*/
return response.writeTo(exchange, HandlerStrategies.withDefaults()); return response.writeTo(exchange, HandlerStrategies.withDefaults());
}); });
@ -92,11 +88,14 @@ public class ResourceHandlerFunctionTests {
ServerRequest request = new DefaultServerRequest(exchange, HandlerStrategies.withDefaults()); ServerRequest request = new DefaultServerRequest(exchange, HandlerStrategies.withDefaults());
Mono<ServerResponse> response = this.handlerFunction.handle(request); Mono<ServerResponse> responseMono = this.handlerFunction.handle(request);
Mono<Void> result = response.flatMap(res -> { Mono<Void> result = responseMono.flatMap(response -> {
assertEquals(HttpStatus.OK, res.statusCode()); assertEquals(HttpStatus.OK, response.statusCode());
return res.writeTo(exchange, HandlerStrategies.withDefaults()); assertTrue(response instanceof EntityResponse);
EntityResponse<Resource> entityResponse = (EntityResponse<Resource>) response;
assertEquals(this.resource.getFilename(), entityResponse.entity().getFilename());
return response.writeTo(exchange, HandlerStrategies.withDefaults());
}); });
StepVerifier.create(result).expectComplete().verify(); StepVerifier.create(result).expectComplete().verify();
@ -118,12 +117,6 @@ public class ResourceHandlerFunctionTests {
assertEquals(HttpStatus.OK, response.statusCode()); assertEquals(HttpStatus.OK, response.statusCode());
assertEquals(EnumSet.of(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.OPTIONS), assertEquals(EnumSet.of(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.OPTIONS),
response.headers().getAllow()); response.headers().getAllow());
/*
TODO: enable when ServerEntityResponse is reintroduced
StepVerifier.create(response.body())
.expectComplete()
.verify();
*/
return response.writeTo(exchange, HandlerStrategies.withDefaults()); return response.writeTo(exchange, HandlerStrategies.withDefaults());
}); });

Loading…
Cancel
Save