Introduce HttpMessage hierarchy
This commit introduces "reactive" sub-interfaces of the HttpMessage interface found in the Spring Framework.
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.reactive.web.dispatch.handler;
|
||||
|
||||
import java.net.URI;
|
||||
@@ -27,12 +28,12 @@ import reactor.rx.Streams;
|
||||
|
||||
import org.springframework.http.RequestEntity;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.http.server.ReactiveServerHttpRequest;
|
||||
import org.springframework.http.server.ReactiveServerHttpResponse;
|
||||
import org.springframework.reactive.web.dispatch.DispatcherHandler;
|
||||
import org.springframework.reactive.web.dispatch.SimpleHandlerResultHandler;
|
||||
import org.springframework.reactive.web.http.AbstractHttpHandlerIntegrationTests;
|
||||
import org.springframework.reactive.web.http.HttpHandler;
|
||||
import org.springframework.reactive.web.http.ServerHttpRequest;
|
||||
import org.springframework.reactive.web.http.ServerHttpResponse;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.context.support.StaticWebApplicationContext;
|
||||
|
||||
@@ -99,16 +100,16 @@ public class SimpleUrlHandlerMappingIntegrationTests extends AbstractHttpHandler
|
||||
private static class FooHandler implements HttpHandler {
|
||||
|
||||
@Override
|
||||
public Publisher<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
|
||||
return response.writeWith(Streams.just(Buffer.wrap("foo").byteBuffer()));
|
||||
public Publisher<Void> handle(ReactiveServerHttpRequest request, ReactiveServerHttpResponse response) {
|
||||
return response.addBody(Streams.just(Buffer.wrap("foo").byteBuffer()));
|
||||
}
|
||||
}
|
||||
|
||||
private static class BarHandler implements HttpHandler {
|
||||
|
||||
@Override
|
||||
public Publisher<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
|
||||
return response.writeWith(Streams.just(Buffer.wrap("bar").byteBuffer()));
|
||||
public Publisher<Void> handle(ReactiveServerHttpRequest request, ReactiveServerHttpResponse response) {
|
||||
return response.addBody(Streams.just(Buffer.wrap("bar").byteBuffer()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,20 +20,21 @@ import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.reactive.web.http.ServerHttpRequest;
|
||||
import org.springframework.http.server.ReactiveServerHttpRequest;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.context.support.StaticWebApplicationContext;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* @author Sebastien Deleuze
|
||||
*/
|
||||
@@ -52,14 +53,14 @@ public class RequestMappingHandlerMappingTests {
|
||||
|
||||
@Test
|
||||
public void path() throws NoSuchMethodException {
|
||||
ServerHttpRequest request = new MockServerHttpRequest(HttpMethod.GET, "boo");
|
||||
ReactiveServerHttpRequest request = new MockServerHttpRequest(HttpMethod.GET, "boo");
|
||||
HandlerMethod handler = (HandlerMethod) this.mapping.getHandler(request);
|
||||
assertEquals(TestController.class.getMethod("boo"), handler.getMethod());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void method() throws NoSuchMethodException {
|
||||
ServerHttpRequest request = new MockServerHttpRequest(HttpMethod.POST, "foo");
|
||||
ReactiveServerHttpRequest request = new MockServerHttpRequest(HttpMethod.POST, "foo");
|
||||
HandlerMethod handler = (HandlerMethod) this.mapping.getHandler(request);
|
||||
assertEquals(TestController.class.getMethod("postFoo"), handler.getMethod());
|
||||
|
||||
@@ -104,7 +105,7 @@ public class RequestMappingHandlerMappingTests {
|
||||
|
||||
}
|
||||
|
||||
private static class MockServerHttpRequest implements ServerHttpRequest{
|
||||
private static class MockServerHttpRequest implements ReactiveServerHttpRequest{
|
||||
|
||||
private HttpMethod method;
|
||||
|
||||
|
||||
@@ -18,13 +18,16 @@ package org.springframework.reactive.web.http;
|
||||
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
import org.springframework.http.server.ReactiveServerHttpRequest;
|
||||
import org.springframework.http.server.ReactiveServerHttpResponse;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*/
|
||||
public class EchoHandler implements HttpHandler {
|
||||
|
||||
@Override
|
||||
public Publisher<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
|
||||
return response.writeWith(request.getBody());
|
||||
public Publisher<Void> handle(ReactiveServerHttpRequest request, ReactiveServerHttpResponse response) {
|
||||
return response.addBody(request.getBody());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,9 @@ import org.reactivestreams.Subscription;
|
||||
import reactor.io.buffer.Buffer;
|
||||
import reactor.rx.Streams;
|
||||
|
||||
import org.springframework.http.server.ReactiveServerHttpRequest;
|
||||
import org.springframework.http.server.ReactiveServerHttpResponse;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
@@ -41,7 +44,7 @@ public class RandomHandler implements HttpHandler {
|
||||
private final Random rnd = new Random();
|
||||
|
||||
@Override
|
||||
public Publisher<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
|
||||
public Publisher<Void> handle(ReactiveServerHttpRequest request, ReactiveServerHttpResponse response) {
|
||||
|
||||
request.getBody().subscribe(new Subscriber<ByteBuffer>() {
|
||||
private Subscription s;
|
||||
@@ -73,7 +76,7 @@ public class RandomHandler implements HttpHandler {
|
||||
});
|
||||
|
||||
response.getHeaders().setContentLength(RESPONSE_SIZE);
|
||||
return response.writeWith(Streams.just(ByteBuffer.wrap(randomBytes())));
|
||||
return response.addBody(Streams.just(ByteBuffer.wrap(randomBytes())));
|
||||
}
|
||||
|
||||
private byte[] randomBytes() {
|
||||
|
||||
@@ -23,14 +23,16 @@ import javax.xml.bind.Unmarshaller;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.reactivestreams.Publisher;
|
||||
import reactor.io.buffer.Buffer;
|
||||
import reactor.rx.Streams;
|
||||
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.server.ReactiveServerHttpRequest;
|
||||
import org.springframework.http.server.ReactiveServerHttpResponse;
|
||||
import org.springframework.reactive.io.BufferOutputStream;
|
||||
import org.springframework.reactive.io.ByteBufferPublisherInputStream;
|
||||
|
||||
import static org.junit.Assert.fail;
|
||||
import reactor.io.buffer.Buffer;
|
||||
import reactor.rx.Streams;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
@@ -40,8 +42,8 @@ public class XmlHandler implements HttpHandler {
|
||||
private static final Log logger = LogFactory.getLog(XmlHandler.class);
|
||||
|
||||
@Override
|
||||
public Publisher<Void> handle(ServerHttpRequest request,
|
||||
ServerHttpResponse response) {
|
||||
public Publisher<Void> handle(ReactiveServerHttpRequest request,
|
||||
ReactiveServerHttpResponse response) {
|
||||
try {
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(XmlHandlerIntegrationTests.Person.class);
|
||||
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||
@@ -73,7 +75,7 @@ public class XmlHandler implements HttpHandler {
|
||||
bos.close();
|
||||
buffer.flip();
|
||||
|
||||
return response.writeWith(Streams.just(buffer.byteBuffer()));
|
||||
return response.addBody(Streams.just(buffer.byteBuffer()));
|
||||
}
|
||||
catch (Exception ex) {
|
||||
logger.error(ex, ex);
|
||||
|
||||
Reference in New Issue
Block a user