ResourceHandlerFunction returns EntityResponse

The ResourceHandlerFunction now returns an `EntityResponse<Resource>`
(instead of a `ServerResponse`), so that filters can inspect/change the
returned Resource.
This commit is contained in:
Arjen Poutsma 2017-05-10 15:07:54 +02:00
parent 8db4b2f7ed
commit ad9cf99420
2 changed files with 14 additions and 21 deletions

View File

@ -56,12 +56,12 @@ class ResourceHandlerFunction implements HandlerFunction<ServerResponse> {
public Mono<ServerResponse> 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)

View File

@ -57,13 +57,9 @@ public class ResourceHandlerFunctionTests {
Mono<Void> 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<Resource> entityResponse = (EntityResponse<Resource>) 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<ServerResponse> response = this.handlerFunction.handle(request);
Mono<ServerResponse> responseMono = this.handlerFunction.handle(request);
Mono<Void> result = response.flatMap(res -> {
assertEquals(HttpStatus.OK, res.statusCode());
return res.writeTo(exchange, HandlerStrategies.withDefaults());
Mono<Void> result = responseMono.flatMap(response -> {
assertEquals(HttpStatus.OK, response.statusCode());
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();
@ -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());
});