From ef3560a55a0925a0be099803f039b2ab95be201f Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 8 Dec 2015 15:29:54 -0500 Subject: [PATCH] Add HttpHandlerDecorator and fix test package --- .../reactive/FilterChainHttpHandler.java | 10 ++-- .../server/reactive/HttpHandlerDecorator.java | 52 +++++++++++++++++++ .../AbstractHttpHandlerIntegrationTests.java | 2 +- .../server/{ => reactive}/EchoHandler.java | 2 +- .../EchoHandlerIntegrationTests.java | 2 +- .../FilterChainHttpHandlerTests.java | 9 +--- .../server/{ => reactive}/RandomHandler.java | 6 +-- .../RandomHandlerIntegrationTests.java | 2 +- .../server/{ => reactive}/XmlHandler.java | 5 +- .../XmlHandlerIntegrationTests.java | 3 +- ...mpleUrlHandlerMappingIntegrationTests.java | 2 +- .../RequestMappingIntegrationTests.java | 2 +- 12 files changed, 65 insertions(+), 32 deletions(-) create mode 100644 spring-web-reactive/src/main/java/org/springframework/http/server/reactive/HttpHandlerDecorator.java rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/AbstractHttpHandlerIntegrationTests.java (97%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/EchoHandler.java (95%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/EchoHandlerIntegrationTests.java (98%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/FilterChainHttpHandlerTests.java (89%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/RandomHandler.java (90%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/RandomHandlerIntegrationTests.java (97%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/XmlHandler.java (91%) rename spring-web-reactive/src/test/java/org/springframework/http/server/{ => reactive}/XmlHandlerIntegrationTests.java (95%) diff --git a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/FilterChainHttpHandler.java b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/FilterChainHttpHandler.java index 729f5dd36b..224e0fcf9d 100644 --- a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/FilterChainHttpHandler.java +++ b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/FilterChainHttpHandler.java @@ -21,7 +21,6 @@ import java.util.List; import org.reactivestreams.Publisher; -import org.springframework.util.Assert; /** * {@link HttpHandler} that delegates to a chain of {@link HttpFilter}s followed @@ -29,17 +28,14 @@ import org.springframework.util.Assert; * * @author Rossen Stoyanchev */ -public class FilterChainHttpHandler implements HttpHandler { +public class FilterChainHttpHandler extends HttpHandlerDecorator { private final List filters; - private final HttpHandler targetHandler; - public FilterChainHttpHandler(HttpHandler targetHandler, HttpFilter... filters) { - Assert.notNull(targetHandler, "'targetHandler' is required."); + super(targetHandler); this.filters = (filters != null ? Arrays.asList(filters) : Collections.emptyList()); - this.targetHandler = targetHandler; } @@ -60,7 +56,7 @@ public class FilterChainHttpHandler implements HttpHandler { return filter.filter(request, response, this); } else { - return targetHandler.handle(request, response); + return getDelegate().handle(request, response); } } } diff --git a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/HttpHandlerDecorator.java b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/HttpHandlerDecorator.java new file mode 100644 index 0000000000..e8ba2baf77 --- /dev/null +++ b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/HttpHandlerDecorator.java @@ -0,0 +1,52 @@ +/* + * Copyright 2002-2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.http.server.reactive; + +import org.reactivestreams.Publisher; + +import org.springframework.util.Assert; + +/** + * + * @author Rossen Stoyanchev + */ +public class HttpHandlerDecorator implements HttpHandler { + + private final HttpHandler delegate; + + + public HttpHandlerDecorator(HttpHandler delegate) { + Assert.notNull(delegate, "'delegate' must not be null"); + this.delegate = delegate; + } + + + public HttpHandler getDelegate() { + return this.delegate; + } + + + @Override + public Publisher handle(ServerHttpRequest request, ServerHttpResponse response) { + return this.delegate.handle(request, response); + } + + @Override + public String toString() { + return getClass().getSimpleName() + " [delegate=" + this.delegate + "]"; + } + +} diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/AbstractHttpHandlerIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/AbstractHttpHandlerIntegrationTests.java similarity index 97% rename from spring-web-reactive/src/test/java/org/springframework/http/server/AbstractHttpHandlerIntegrationTests.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/AbstractHttpHandlerIntegrationTests.java index 4b5b2edd52..fb11e7b151 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/AbstractHttpHandlerIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/AbstractHttpHandlerIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import org.junit.After; import org.junit.Before; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/EchoHandler.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/EchoHandler.java similarity index 95% rename from spring-web-reactive/src/test/java/org/springframework/http/server/EchoHandler.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/EchoHandler.java index 97a7c8cd08..684f1f52be 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/EchoHandler.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/EchoHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import org.reactivestreams.Publisher; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/EchoHandlerIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/EchoHandlerIntegrationTests.java similarity index 98% rename from spring-web-reactive/src/test/java/org/springframework/http/server/EchoHandlerIntegrationTests.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/EchoHandlerIntegrationTests.java index 8d4b114843..5a27960114 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/EchoHandlerIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/EchoHandlerIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import java.net.URI; import java.util.Random; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/FilterChainHttpHandlerTests.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/FilterChainHttpHandlerTests.java similarity index 89% rename from spring-web-reactive/src/test/java/org/springframework/http/server/FilterChainHttpHandlerTests.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/FilterChainHttpHandlerTests.java index 63abca219a..c53e01395c 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/FilterChainHttpHandlerTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/FilterChainHttpHandlerTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import java.util.concurrent.TimeUnit; @@ -24,13 +24,6 @@ import org.reactivestreams.Publisher; import reactor.Publishers; import reactor.rx.Streams; -import org.springframework.http.server.reactive.FilterChainHttpHandler; -import org.springframework.http.server.reactive.HttpFilter; -import org.springframework.http.server.reactive.HttpFilterChain; -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpResponse; - import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/RandomHandler.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/RandomHandler.java similarity index 90% rename from spring-web-reactive/src/test/java/org/springframework/http/server/RandomHandler.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/RandomHandler.java index ab21f071da..97af86dc70 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/RandomHandler.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/RandomHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import java.nio.ByteBuffer; import java.util.Random; @@ -27,10 +27,6 @@ import org.reactivestreams.Subscription; import reactor.io.buffer.Buffer; import reactor.rx.Streams; -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpResponse; - import static org.junit.Assert.assertEquals; /** diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/RandomHandlerIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/RandomHandlerIntegrationTests.java similarity index 97% rename from spring-web-reactive/src/test/java/org/springframework/http/server/RandomHandlerIntegrationTests.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/RandomHandlerIntegrationTests.java index ba3f76a5d0..d7925d3ca0 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/RandomHandlerIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/RandomHandlerIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import java.net.URI; import java.util.Random; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/XmlHandler.java similarity index 91% rename from spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/XmlHandler.java index d4cd4eab20..838d1ad877 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandler.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/XmlHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; @@ -27,9 +27,6 @@ import reactor.io.buffer.Buffer; import reactor.rx.Streams; import org.springframework.http.MediaType; -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.util.BufferOutputStream; import org.springframework.util.ByteBufferPublisherInputStream; diff --git a/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandlerIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/XmlHandlerIntegrationTests.java similarity index 95% rename from spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandlerIntegrationTests.java rename to spring-web-reactive/src/test/java/org/springframework/http/server/reactive/XmlHandlerIntegrationTests.java index 59bb92ebae..c805886bf1 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/server/XmlHandlerIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/server/reactive/XmlHandlerIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.http.server; +package org.springframework.http.server.reactive; import java.net.URI; import javax.xml.bind.annotation.XmlRootElement; @@ -23,7 +23,6 @@ import org.junit.Test; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; -import org.springframework.http.server.reactive.HttpHandler; import org.springframework.web.client.RestTemplate; /** diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/handler/SimpleUrlHandlerMappingIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/handler/SimpleUrlHandlerMappingIntegrationTests.java index 4ffb123a28..0cc303e0c9 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/handler/SimpleUrlHandlerMappingIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/handler/SimpleUrlHandlerMappingIntegrationTests.java @@ -31,7 +31,7 @@ import org.springframework.context.support.StaticApplicationContext; import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; -import org.springframework.http.server.AbstractHttpHandlerIntegrationTests; +import org.springframework.http.server.reactive.AbstractHttpHandlerIntegrationTests; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java index e10e22fd31..dbb016a39f 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/method/annotation/RequestMappingIntegrationTests.java @@ -51,7 +51,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; -import org.springframework.http.server.AbstractHttpHandlerIntegrationTests; +import org.springframework.http.server.reactive.AbstractHttpHandlerIntegrationTests; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody;