diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultStrategiesSupplierBuilder.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultHandlerStrategiesBuilder.java similarity index 85% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultStrategiesSupplierBuilder.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultHandlerStrategiesBuilder.java index 4d1d4b1d3a508b925b2586136fe2a9c1f7f0605a..d67fec0c2f04782e30af3e80f01263003744f500 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultStrategiesSupplierBuilder.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultHandlerStrategiesBuilder.java @@ -40,22 +40,22 @@ import org.springframework.util.ClassUtils; import org.springframework.web.reactive.result.view.ViewResolver; /** - * Default implementation of {@link StrategiesSupplier.Builder}. + * Default implementation of {@link HandlerStrategies.Builder}. * * @author Arjen Poutsma * @since 5.0 */ -class DefaultStrategiesSupplierBuilder implements StrategiesSupplier.Builder { +class DefaultHandlerStrategiesBuilder implements HandlerStrategies.Builder { private static final boolean jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", - DefaultStrategiesSupplierBuilder.class.getClassLoader()) && + DefaultHandlerStrategiesBuilder.class.getClassLoader()) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", - DefaultStrategiesSupplierBuilder.class.getClassLoader()); + DefaultHandlerStrategiesBuilder.class.getClassLoader()); private static final boolean jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", - DefaultStrategiesSupplierBuilder.class.getClassLoader()); + DefaultHandlerStrategiesBuilder.class.getClassLoader()); private final List> messageReaders = new ArrayList<>(); @@ -86,33 +86,33 @@ class DefaultStrategiesSupplierBuilder implements StrategiesSupplier.Builder { } @Override - public StrategiesSupplier.Builder messageReader(HttpMessageReader messageReader) { + public HandlerStrategies.Builder messageReader(HttpMessageReader messageReader) { Assert.notNull(messageReader, "'messageReader' must not be null"); this.messageReaders.add(messageReader); return this; } @Override - public StrategiesSupplier.Builder messageWriter(HttpMessageWriter messageWriter) { + public HandlerStrategies.Builder messageWriter(HttpMessageWriter messageWriter) { Assert.notNull(messageWriter, "'messageWriter' must not be null"); this.messageWriters.add(messageWriter); return this; } @Override - public StrategiesSupplier.Builder viewResolver(ViewResolver viewResolver) { + public HandlerStrategies.Builder viewResolver(ViewResolver viewResolver) { Assert.notNull(viewResolver, "'viewResolver' must not be null"); this.viewResolvers.add(viewResolver); return this; } @Override - public StrategiesSupplier build() { - return new DefaultStrategiesSupplier(this.messageReaders, this.messageWriters, + public HandlerStrategies build() { + return new DefaultHandlerStrategies(this.messageReaders, this.messageWriters, this.viewResolvers); } - private static class DefaultStrategiesSupplier implements StrategiesSupplier { + private static class DefaultHandlerStrategies implements HandlerStrategies { private final List> messageReaders; @@ -120,7 +120,7 @@ class DefaultStrategiesSupplierBuilder implements StrategiesSupplier.Builder { private final List viewResolvers; - public DefaultStrategiesSupplier( + public DefaultHandlerStrategies( List> messageReaders, List> messageWriters, List viewResolvers) { diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultRequest.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerRequest.java similarity index 92% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultRequest.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerRequest.java index 8333ac111d8b07799ffd8c914bac002def42af41..1462ea382608231ce91bb7ae42279e0f314e2363 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultRequest.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerRequest.java @@ -37,19 +37,19 @@ import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.web.server.ServerWebExchange; /** - * {@code Request} implementation based on a {@link ServerWebExchange}. + * {@code ServerRequest} implementation based on a {@link ServerWebExchange}. * @author Arjen Poutsma */ -class DefaultRequest implements Request { +class DefaultServerRequest implements ServerRequest { private final ServerWebExchange exchange; private final Headers headers; - private final StrategiesSupplier strategies; + private final HandlerStrategies strategies; - DefaultRequest(ServerWebExchange exchange, StrategiesSupplier strategies) { + DefaultServerRequest(ServerWebExchange exchange, HandlerStrategies strategies) { this.exchange = exchange; this.strategies = strategies; this.headers = new DefaultHeaders(); @@ -77,7 +77,7 @@ class DefaultRequest implements Request { new BodyExtractor.Context() { @Override public Supplier>> messageReaders() { - return DefaultRequest.this.strategies.messageReaders(); + return DefaultServerRequest.this.strategies.messageReaders(); } }); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultResponseBuilder.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java similarity index 73% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultResponseBuilder.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java index 2236be22770a3cc22d505a672fc58526ef30a784..a872e82117a9a8dea562b0c3c3b06759949c8acd 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultResponseBuilder.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/DefaultServerResponseBuilder.java @@ -26,7 +26,6 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Locale; import java.util.Map; -import java.util.function.BiFunction; import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -36,12 +35,14 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.core.Conventions; +import org.springframework.core.ResolvableType; import org.springframework.http.CacheControl; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.codec.BodyInserter; +import org.springframework.http.codec.BodyInserters; import org.springframework.http.codec.HttpMessageWriter; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.util.Assert; @@ -50,22 +51,22 @@ import org.springframework.web.reactive.result.view.ViewResolver; import org.springframework.web.server.ServerWebExchange; /** - * Default {@link Response.BodyBuilder} implementation. + * Default {@link ServerResponse.BodyBuilder} implementation. * * @author Arjen Poutsma */ -class DefaultResponseBuilder implements Response.BodyBuilder { +class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { private final int statusCode; private final HttpHeaders headers = new HttpHeaders(); - public DefaultResponseBuilder(int statusCode) { + public DefaultServerResponseBuilder(int statusCode) { this.statusCode = statusCode; } @Override - public Response.BodyBuilder header(String headerName, String... headerValues) { + public ServerResponse.BodyBuilder header(String headerName, String... headerValues) { for (String headerValue : headerValues) { this.headers.add(headerName, headerValue); } @@ -73,7 +74,7 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response.BodyBuilder headers(HttpHeaders headers) { + public ServerResponse.BodyBuilder headers(HttpHeaders headers) { if (headers != null) { this.headers.putAll(headers); } @@ -81,25 +82,25 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response.BodyBuilder allow(HttpMethod... allowedMethods) { + public ServerResponse.BodyBuilder allow(HttpMethod... allowedMethods) { this.headers.setAllow(new LinkedHashSet<>(Arrays.asList(allowedMethods))); return this; } @Override - public Response.BodyBuilder contentLength(long contentLength) { + public ServerResponse.BodyBuilder contentLength(long contentLength) { this.headers.setContentLength(contentLength); return this; } @Override - public Response.BodyBuilder contentType(MediaType contentType) { + public ServerResponse.BodyBuilder contentType(MediaType contentType) { this.headers.setContentType(contentType); return this; } @Override - public Response.BodyBuilder eTag(String eTag) { + public ServerResponse.BodyBuilder eTag(String eTag) { if (eTag != null) { if (!eTag.startsWith("\"") && !eTag.startsWith("W/\"")) { eTag = "\"" + eTag; @@ -113,7 +114,7 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response.BodyBuilder lastModified(ZonedDateTime lastModified) { + public ServerResponse.BodyBuilder lastModified(ZonedDateTime lastModified) { ZonedDateTime gmt = lastModified.withZoneSameInstant(ZoneId.of("GMT")); String headerValue = DateTimeFormatter.RFC_1123_DATE_TIME.format(gmt); this.headers.set(HttpHeaders.LAST_MODIFIED, headerValue); @@ -121,13 +122,13 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response.BodyBuilder location(URI location) { + public ServerResponse.BodyBuilder location(URI location) { this.headers.setLocation(location); return this; } @Override - public Response.BodyBuilder cacheControl(CacheControl cacheControl) { + public ServerResponse.BodyBuilder cacheControl(CacheControl cacheControl) { String ccValue = cacheControl.getHeaderValue(); if (ccValue != null) { this.headers.setCacheControl(cacheControl.getHeaderValue()); @@ -136,20 +137,20 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response.BodyBuilder varyBy(String... requestHeaders) { + public ServerResponse.BodyBuilder varyBy(String... requestHeaders) { this.headers.setVary(Arrays.asList(requestHeaders)); return this; } @Override - public Response build() { + public ServerResponse build() { return body(BodyInserter.of( (response, context) -> response.setComplete(), () -> null)); } @Override - public > Response build(T voidPublisher) { + public > ServerResponse build(T voidPublisher) { Assert.notNull(voidPublisher, "'voidPublisher' must not be null"); return body(BodyInserter.of( (response, context) -> Flux.from(voidPublisher).then(response.setComplete()), @@ -157,19 +158,23 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response body(BiFunction> writer, - Supplier supplier) { - return body(BodyInserter.of(writer, supplier)); + public ServerResponse body(BodyInserter inserter) { + Assert.notNull(inserter, "'inserter' must not be null"); + return new BodyInserterServerResponse(this.statusCode, this.headers, inserter); } @Override - public Response body(BodyInserter inserter) { - Assert.notNull(inserter, "'inserter' must not be null"); - return new BodyInserterResponse(this.statusCode, this.headers, inserter); + public , T> ServerResponse body(S publisher, Class elementClass) { + return body(BodyInserters.fromPublisher(publisher, elementClass)); + } + + @Override + public , T> ServerResponse body(S publisher, ResolvableType elementType) { + return body(BodyInserters.fromPublisher(publisher, elementType)); } @Override - public Response render(String name, Object... modelAttributes) { + public ServerResponse render(String name, Object... modelAttributes) { Assert.hasLength(name, "'name' must not be empty"); return render(name, toModelMap(modelAttributes)); } @@ -190,24 +195,24 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Response render(String name, Map model) { + public ServerResponse render(String name, Map model) { Assert.hasLength(name, "'name' must not be empty"); Map modelMap = new LinkedHashMap<>(); if (model != null) { modelMap.putAll(model); } - return new RenderingResponse(this.statusCode, this.headers, name, modelMap); + return new RenderingServerResponse(this.statusCode, this.headers, name, modelMap); } - private static abstract class AbstractResponse implements Response { + private static abstract class AbstractServerResponse implements ServerResponse { private final int statusCode; private final HttpHeaders headers; - protected AbstractResponse(int statusCode, HttpHeaders headers) { + protected AbstractServerResponse(int statusCode, HttpHeaders headers) { this.statusCode = statusCode; this.headers = HttpHeaders.readOnlyHttpHeaders(headers); } @@ -235,12 +240,12 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } } - private static final class BodyInserterResponse extends AbstractResponse { + private static final class BodyInserterServerResponse extends AbstractServerResponse { private final BodyInserter inserter; - public BodyInserterResponse(int statusCode, HttpHeaders headers, + public BodyInserterServerResponse(int statusCode, HttpHeaders headers, BodyInserter inserter) { super(statusCode, headers); @@ -253,7 +258,7 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Mono writeTo(ServerWebExchange exchange, StrategiesSupplier strategies) { + public Mono writeTo(ServerWebExchange exchange, HandlerStrategies strategies) { ServerHttpResponse response = exchange.getResponse(); writeStatusAndHeaders(response); return this.inserter.insert(response, new BodyInserter.Context() { @@ -267,7 +272,7 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } - private static final class RenderingResponse extends AbstractResponse { + private static final class RenderingServerResponse extends AbstractServerResponse { private final String name; @@ -275,7 +280,7 @@ class DefaultResponseBuilder implements Response.BodyBuilder { private final Rendering rendering; - public RenderingResponse(int statusCode, HttpHeaders headers, String name, + public RenderingServerResponse(int statusCode, HttpHeaders headers, String name, Map model) { super(statusCode, headers); this.name = name; @@ -289,7 +294,7 @@ class DefaultResponseBuilder implements Response.BodyBuilder { } @Override - public Mono writeTo(ServerWebExchange exchange, StrategiesSupplier strategies) { + public Mono writeTo(ServerWebExchange exchange, HandlerStrategies strategies) { ServerHttpResponse response = exchange.getResponse(); writeStatusAndHeaders(response); MediaType contentType = exchange.getResponse().getHeaders().getContentType(); diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/FilterFunction.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFilterFunction.java similarity index 78% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/FilterFunction.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFilterFunction.java index a770ae4145270f2ed3bede83cfb3451d587bdeb8..cacedeb5cfb93a2aa636adc01e13d643c436d892 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/FilterFunction.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFilterFunction.java @@ -16,7 +16,7 @@ package org.springframework.web.reactive.function; -import org.springframework.web.reactive.function.support.RequestWrapper; +import org.springframework.web.reactive.function.support.ServerRequestWrapper; /** * Represents a function that filters a {@linkplain HandlerFunction handler function}. @@ -25,22 +25,22 @@ import org.springframework.web.reactive.function.support.RequestWrapper; * @param the type of the response of the function * @author Arjen Poutsma * @since 5.0 - * @see RouterFunction#filter(FilterFunction) + * @see RouterFunction#filter(HandlerFilterFunction) */ @FunctionalInterface -public interface FilterFunction { +public interface HandlerFilterFunction { /** * Apply this filter to the given handler function. The given * {@linkplain HandlerFunction handler function} represents the next entity in the - * chain, and can be {@linkplain HandlerFunction#handle(Request) invoked} in order + * chain, and can be {@linkplain HandlerFunction#handle(ServerRequest) invoked} in order * to proceed to this entity, or not invoked to block the chain. * * @param request the request * @param next the next handler or filter function in the chain * @return the filtered response - * @see RequestWrapper + * @see ServerRequestWrapper */ - Response filter(Request request, HandlerFunction next); + ServerResponse filter(ServerRequest request, HandlerFunction next); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFunction.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFunction.java index e6429b46f812f57bebf767083de5683b53d95548..64c61683feb5f9453a6604676495ac9c934c8d6b 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFunction.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerFunction.java @@ -17,7 +17,7 @@ package org.springframework.web.reactive.function; /** - * Represents a function that handles a {@linkplain Request request}. + * Represents a function that handles a {@linkplain ServerRequest request}. * * @param the type of the response of the function * @author Arjen Poutsma @@ -31,6 +31,6 @@ public interface HandlerFunction { * @param request the request to handle * @return the response */ - Response handle(Request request); + ServerResponse handle(ServerRequest request); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/StrategiesSupplier.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerStrategies.java similarity index 79% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/StrategiesSupplier.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerStrategies.java index 46a60b6c5a1489fdbf5cfd146bb8489cbb5487e4..3f6084da4a66a1f28d2fcea732595e20c47bca38 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/StrategiesSupplier.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/HandlerStrategies.java @@ -29,16 +29,16 @@ import org.springframework.web.reactive.result.view.ViewResolver; * Defines the strategies to be used for processing {@link HandlerFunction}s. An instance of * this class is immutable; instances are typically created through the mutable {@link Builder}: * either through {@link #builder()} to set up default strategies, or {@link #empty()} to start from - * scratch. Alternatively, {@code StrategiesSupplier} instances can be created through + * scratch. Alternatively, {@code HandlerStrategies} instances can be created through * {@link #of(Supplier, Supplier, Supplier)}. * * @author Arjen Poutsma * @author Juergen Hoeller * @since 5.0 - * @see RouterFunctions#toHttpHandler(RouterFunction, StrategiesSupplier) - * @see RouterFunctions#toHandlerMapping(RouterFunction, StrategiesSupplier) + * @see RouterFunctions#toHttpHandler(RouterFunction, HandlerStrategies) + * @see RouterFunctions#toHandlerMapping(RouterFunction, HandlerStrategies) */ -public interface StrategiesSupplier { +public interface HandlerStrategies { // Instance methods @@ -67,41 +67,41 @@ public interface StrategiesSupplier { // Static methods /** - * Return a new {@code StrategiesSupplier} with default initialization. - * @return the new {@code StrategiesSupplier} + * Return a new {@code HandlerStrategies} with default initialization. + * @return the new {@code HandlerStrategies} */ - static StrategiesSupplier withDefaults() { + static HandlerStrategies withDefaults() { return builder().build(); } /** - * Return a new {@code StrategiesSupplier} based on the given + * Return a new {@code HandlerStrategies} based on the given * {@linkplain ApplicationContext application context}. * The returned supplier will search for all {@link HttpMessageReader}, {@link HttpMessageWriter}, * and {@link ViewResolver} instances in the given application context and return them for * {@link #messageReaders()}, {@link #messageWriters()}, and {@link #viewResolvers()} * respectively. * @param applicationContext the application context to base the strategies on - * @return the new {@code StrategiesSupplier} + * @return the new {@code HandlerStrategies} */ - static StrategiesSupplier of(ApplicationContext applicationContext) { + static HandlerStrategies of(ApplicationContext applicationContext) { return builder(applicationContext).build(); } /** - * Return a new {@code StrategiesSupplier} described by the given supplier functions. + * Return a new {@code HandlerStrategies} described by the given supplier functions. * All provided supplier function parameters can be {@code null} to indicate an empty * stream is to be returned. * @param messageReaders the supplier function for {@link HttpMessageReader} instances (can be {@code null}) * @param messageWriters the supplier function for {@link HttpMessageWriter} instances (can be {@code null}) * @param viewResolvers the supplier function for {@link ViewResolver} instances (can be {@code null}) - * @return the new {@code StrategiesSupplier} + * @return the new {@code HandlerStrategies} */ - static StrategiesSupplier of(Supplier>> messageReaders, + static HandlerStrategies of(Supplier>> messageReaders, Supplier>> messageWriters, Supplier> viewResolvers) { - return new StrategiesSupplier() { + return new HandlerStrategies() { @Override public Supplier>> messageReaders() { return checkForNull(messageReaders); @@ -124,11 +124,11 @@ public interface StrategiesSupplier { // Builder methods /** - * Return a mutable builder for a {@code StrategiesSupplier} with default initialization. + * Return a mutable builder for a {@code HandlerStrategies} with default initialization. * @return the builder */ static Builder builder() { - DefaultStrategiesSupplierBuilder builder = new DefaultStrategiesSupplierBuilder(); + DefaultHandlerStrategiesBuilder builder = new DefaultHandlerStrategiesBuilder(); builder.defaultConfiguration(); return builder; } @@ -144,22 +144,22 @@ public interface StrategiesSupplier { */ static Builder builder(ApplicationContext applicationContext) { Assert.notNull(applicationContext, "ApplicationContext must not be null"); - DefaultStrategiesSupplierBuilder builder = new DefaultStrategiesSupplierBuilder(); + DefaultHandlerStrategiesBuilder builder = new DefaultHandlerStrategiesBuilder(); builder.applicationContext(applicationContext); return builder; } /** - * Return a mutable, empty builder for a {@code StrategiesSupplier}. + * Return a mutable, empty builder for a {@code HandlerStrategies}. * @return the builder */ static Builder empty() { - return new DefaultStrategiesSupplierBuilder(); + return new DefaultHandlerStrategiesBuilder(); } /** - * A mutable builder for a {@link StrategiesSupplier}. + * A mutable builder for a {@link HandlerStrategies}. */ interface Builder { @@ -185,10 +185,10 @@ public interface StrategiesSupplier { Builder viewResolver(ViewResolver viewResolver); /** - * Builds the {@link StrategiesSupplier}. + * Builds the {@link HandlerStrategies}. * @return the built strategies */ - StrategiesSupplier build(); + HandlerStrategies build(); } } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicate.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicate.java index 1741e82221103f40ea9be9df6ed1fe83430afc8b..1f70cddbe590acc952fc726c53a83ed0eadd84b2 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicate.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicate.java @@ -19,7 +19,7 @@ package org.springframework.web.reactive.function; import org.springframework.util.Assert; /** - * Represents a function that evaluates on a given {@link Request}. + * Represents a function that evaluates on a given {@link ServerRequest}. * Instances of this function that evaluate on common request properties can be found in {@link RequestPredicates}. * * @author Arjen Poutsma @@ -38,7 +38,7 @@ public interface RequestPredicate { * @param request the request to match against * @return {@code true} if the request matches the predicate; {@code false} otherwise */ - boolean test(Request request); + boolean test(ServerRequest request); /** * Returns a composed request predicate that tests against both this predicate AND the {@code other} predicate. @@ -52,12 +52,12 @@ public interface RequestPredicate { Assert.notNull(other, "'other' must not be null"); return new RequestPredicate() { @Override - public boolean test(Request t) { + public boolean test(ServerRequest t) { return RequestPredicate.this.test(t) && other.test(t); } @Override - public Request subRequest(Request request) { + public ServerRequest subRequest(ServerRequest request) { return other.subRequest(RequestPredicate.this.subRequest(request)); } }; @@ -85,7 +85,7 @@ public interface RequestPredicate { return (t) -> test(t) || other.test(t); } - default Request subRequest(Request request) { + default ServerRequest subRequest(ServerRequest request) { return request; } } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicates.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicates.java index c88c918ea03af61d5eb483f1600cf31acf7f64c2..b66e6f46c531a793694cba04742234bd4be05280 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicates.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RequestPredicates.java @@ -90,13 +90,13 @@ public abstract class RequestPredicates { * @param headersPredicate a predicate that tests against the request headers * @return a predicate that tests against the given header predicate */ - public static RequestPredicate headers(Predicate headersPredicate) { + public static RequestPredicate headers(Predicate headersPredicate) { return new HeaderPredicates(headersPredicate); } /** * Return a {@code RequestPredicate} that tests if the request's - * {@linkplain Request.Headers#contentType() content type} is {@linkplain MediaType#includes(MediaType) included} + * {@linkplain ServerRequest.Headers#contentType() content type} is {@linkplain MediaType#includes(MediaType) included} * by any of the given media types. * * @param mediaTypes the media types to match the request's content type against @@ -115,7 +115,7 @@ public abstract class RequestPredicates { /** * Return a {@code RequestPredicate} that tests if the request's - * {@linkplain Request.Headers#accept() accept} header is + * {@linkplain ServerRequest.Headers#accept() accept} header is * {@linkplain MediaType#isCompatibleWith(MediaType) compatible} with any of the given media types. * * @param mediaTypes the media types to match the request's accept header against @@ -227,7 +227,7 @@ public abstract class RequestPredicates { } @Override - public boolean test(Request request) { + public boolean test(ServerRequest request) { return this.httpMethod == request.method(); } } @@ -246,11 +246,11 @@ public abstract class RequestPredicates { } @Override - public boolean test(Request request) { + public boolean test(ServerRequest request) { String path = request.path(); if (this.pathMatcher.match(this.pattern, path)) { - if (request instanceof DefaultRequest) { - DefaultRequest defaultRequest = (DefaultRequest) request; + if (request instanceof DefaultServerRequest) { + DefaultServerRequest defaultRequest = (DefaultServerRequest) request; Map uriTemplateVariables = this.pathMatcher.extractUriTemplateVariables(this.pattern, path); defaultRequest.exchange().getAttributes().put(RouterFunctions.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables); } @@ -262,35 +262,35 @@ public abstract class RequestPredicates { } @Override - public Request subRequest(Request request) { + public ServerRequest subRequest(ServerRequest request) { String requestPath = request.path(); String subPath = this.pathMatcher.extractPathWithinPattern(this.pattern, requestPath); - return new SubPathRequestWrapper(request, subPath); + return new SubPathServerRequestWrapper(request, subPath); } } private static class HeaderPredicates implements RequestPredicate { - private final Predicate headersPredicate; + private final Predicate headersPredicate; - public HeaderPredicates(Predicate headersPredicate) { + public HeaderPredicates(Predicate headersPredicate) { Assert.notNull(headersPredicate, "'headersPredicate' must not be null"); this.headersPredicate = headersPredicate; } @Override - public boolean test(Request request) { + public boolean test(ServerRequest request) { return this.headersPredicate.test(request.headers()); } } - private static class SubPathRequestWrapper implements Request { + private static class SubPathServerRequestWrapper implements ServerRequest { - private final Request request; + private final ServerRequest request; private final String subPath; - public SubPathRequestWrapper(Request request, String subPath) { + public SubPathServerRequestWrapper(ServerRequest request, String subPath) { this.request = request; this.subPath = subPath; } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunction.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunction.java index f359bac6b53062d112cdc59937b9e4a33383188c..04d24c2db00eb8567adfe51acff4c8ee166e14af 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunction.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunction.java @@ -35,7 +35,7 @@ public interface RouterFunction { * @return an {@code Optional} describing the {@code HandlerFunction} that matches this request, * or an empty {@code Optional} if there is no match */ - Optional> route(Request request); + Optional> route(ServerRequest request); /** * Return a composed routing function that first invokes this function, @@ -73,13 +73,13 @@ public interface RouterFunction { /** * Filter all {@linkplain HandlerFunction handler functions} routed by this function with the given - * {@linkplain FilterFunction filter function}. + * {@linkplain HandlerFilterFunction filter function}. * * @param filterFunction the filter to apply * @param the filter return type * @return the filtered routing function */ - default RouterFunction filter(FilterFunction filterFunction) { + default RouterFunction filter(HandlerFilterFunction filterFunction) { return request -> this.route(request) .map(handlerFunction -> filterRequest -> filterFunction.filter(filterRequest, handlerFunction)); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunctions.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunctions.java index cfdcaf26e5ded25cb233e8ca7c736a59977f7630..0fbed629473fbf6f0f4b79e1bdeccee6b3177b67 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunctions.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/RouterFunctions.java @@ -38,7 +38,7 @@ import org.springframework.web.server.adapter.HttpWebHandlerAdapter; *

Additionally, this class can {@linkplain #toHttpHandler(RouterFunction) transform} a * {@code RouterFunction} into an {@code HttpHandler}, which can be run in Servlet 3.1+, * Reactor, RxNetty, or Undertow. - * And it can {@linkplain #toHandlerMapping(RouterFunction, StrategiesSupplier) transform} a + * And it can {@linkplain #toHandlerMapping(RouterFunction, HandlerStrategies) transform} a * {@code RouterFunction} into an {@code HandlerMapping}, which can be run in a * {@code DispatcherHandler}. * @@ -48,7 +48,7 @@ import org.springframework.web.server.adapter.HttpWebHandlerAdapter; public abstract class RouterFunctions { /** - * Name of the {@link ServerWebExchange} attribute that contains the {@link Request}. + * Name of the {@link ServerWebExchange} attribute that contains the {@link ServerRequest}. */ public static final String REQUEST_ATTRIBUTE = RouterFunctions.class.getName() + ".request"; @@ -59,7 +59,7 @@ public abstract class RouterFunctions { public static final String URI_TEMPLATE_VARIABLES_ATTRIBUTE = RouterFunctions.class.getName() + ".uriTemplateVariables"; - private static final HandlerFunction NOT_FOUND_HANDLER = request -> Response.notFound().build(); + private static final HandlerFunction NOT_FOUND_HANDLER = request -> ServerResponse.notFound().build(); /** @@ -93,7 +93,7 @@ public abstract class RouterFunctions { return request -> { if (predicate.test(request)) { - Request subRequest = predicate.subRequest(request); + ServerRequest subRequest = predicate.subRequest(request); return routerFunction.route(subRequest); } else { @@ -104,7 +104,7 @@ public abstract class RouterFunctions { /** * Convert the given {@linkplain RouterFunction routing function} into a {@link HttpHandler}. - * This conversion uses {@linkplain StrategiesSupplier#builder() default strategies}. + * This conversion uses {@linkplain HandlerStrategies#builder() default strategies}. *

The returned {@code HttpHandler} can be adapted to run in *

    *
  • Servlet 3.1+ using the @@ -120,7 +120,7 @@ public abstract class RouterFunctions { * @return an http handler that handles HTTP request using the given routing function */ public static HttpHandler toHttpHandler(RouterFunction routerFunction) { - return toHttpHandler(routerFunction, StrategiesSupplier.withDefaults()); + return toHttpHandler(routerFunction, HandlerStrategies.withDefaults()); } /** @@ -141,31 +141,31 @@ public abstract class RouterFunctions { * @param strategies the strategies to use * @return an http handler that handles HTTP request using the given routing function */ - public static HttpHandler toHttpHandler(RouterFunction routerFunction, StrategiesSupplier strategies) { + public static HttpHandler toHttpHandler(RouterFunction routerFunction, HandlerStrategies strategies) { Assert.notNull(routerFunction, "RouterFunction must not be null"); - Assert.notNull(strategies, "StrategiesSupplier must not be null"); + Assert.notNull(strategies, "HandlerStrategies must not be null"); return new HttpWebHandlerAdapter(exchange -> { - Request request = new DefaultRequest(exchange, strategies); + ServerRequest request = new DefaultServerRequest(exchange, strategies); addAttributes(exchange, request); HandlerFunction handlerFunction = routerFunction.route(request).orElse(notFound()); - Response response = handlerFunction.handle(request); + ServerResponse response = handlerFunction.handle(request); return response.writeTo(exchange, strategies); }); } /** * Convert the given {@code RouterFunction} into a {@code HandlerMapping}. - * This conversion uses {@linkplain StrategiesSupplier#builder() default strategies}. + * This conversion uses {@linkplain HandlerStrategies#builder() default strategies}. *

    The returned {@code HandlerMapping} can be run in a * {@link org.springframework.web.reactive.DispatcherHandler}. * @param routerFunction the routing function to convert * @return an handler mapping that maps HTTP request to a handler using the given routing function * @see org.springframework.web.reactive.function.support.HandlerFunctionAdapter - * @see org.springframework.web.reactive.function.support.ResponseResultHandler + * @see org.springframework.web.reactive.function.support.ServerResponseResultHandler */ public static HandlerMapping toHandlerMapping(RouterFunction routerFunction) { - return toHandlerMapping(routerFunction, StrategiesSupplier.withDefaults()); + return toHandlerMapping(routerFunction, HandlerStrategies.withDefaults()); } /** @@ -177,14 +177,14 @@ public abstract class RouterFunctions { * @param strategies the strategies to use * @return an handler mapping that maps HTTP request to a handler using the given routing function * @see org.springframework.web.reactive.function.support.HandlerFunctionAdapter - * @see org.springframework.web.reactive.function.support.ResponseResultHandler + * @see org.springframework.web.reactive.function.support.ServerResponseResultHandler */ - public static HandlerMapping toHandlerMapping(RouterFunction routerFunction, StrategiesSupplier strategies) { + public static HandlerMapping toHandlerMapping(RouterFunction routerFunction, HandlerStrategies strategies) { Assert.notNull(routerFunction, "RouterFunction must not be null"); - Assert.notNull(strategies, "StrategiesSupplier must not be null"); + Assert.notNull(strategies, "HandlerStrategies must not be null"); return exchange -> { - Request request = new DefaultRequest(exchange, strategies); + ServerRequest request = new DefaultServerRequest(exchange, strategies); addAttributes(exchange, request); Optional> route = routerFunction.route(request); return Mono.justOrEmpty(route); @@ -192,7 +192,7 @@ public abstract class RouterFunctions { } - private static void addAttributes(ServerWebExchange exchange, Request request) { + private static void addAttributes(ServerWebExchange exchange, ServerRequest request) { Map attributes = exchange.getAttributes(); attributes.put(REQUEST_ATTRIBUTE, request); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/Request.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/ServerRequest.java similarity index 96% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/Request.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/ServerRequest.java index 1ab0f09bb0e99962439633efb05c631e236a57ae..7d73cce3df55bf113b3058c5a91760aa79f1b213 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/Request.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/ServerRequest.java @@ -32,14 +32,14 @@ import org.springframework.http.codec.BodyExtractor; import org.springframework.http.server.reactive.ServerHttpRequest; /** - * Represents an HTTP request, as handled by a {@code HandlerFunction}. + * Represents a server-side HTTP request, as handled by a {@code HandlerFunction}. * Access to headers and body is offered by {@link Headers} and * {@link #body(BodyExtractor)} respectively. * * @author Arjen Poutsma * @since 5.0 */ -public interface Request { +public interface ServerRequest { /** * Return the HTTP method. @@ -115,7 +115,7 @@ public interface Request { /** * Represents the headers of the HTTP request. - * @see Request#headers() + * @see ServerRequest#headers() */ interface Headers { diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/Response.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/ServerResponse.java similarity index 80% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/Response.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/ServerResponse.java index 37122a1a435528d40d367b8eff20b7436a86ab35..3c543717c339299b6b3047dfc7c2242cb6a2cf86 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/Response.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/ServerResponse.java @@ -21,31 +21,31 @@ import java.time.ZonedDateTime; import java.util.Collection; import java.util.Map; import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Supplier; import org.reactivestreams.Publisher; import reactor.core.publisher.Mono; +import org.springframework.core.ResolvableType; import org.springframework.http.CacheControl; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.codec.BodyInserter; +import org.springframework.http.codec.BodyInserters; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.util.Assert; import org.springframework.web.server.ServerWebExchange; /** - * Represents a typed HTTP response, as returned by a {@linkplain HandlerFunction handler function} or - * {@linkplain FilterFunction filter function}. + * Represents a typed, server-side HTTP response, as returned by a + * {@linkplain HandlerFunction handler function} or {@linkplain HandlerFilterFunction filter function}. * * @author Arjen Poutsma * @since 5.0 * @param the type of the body that this response contains */ -public interface Response { +public interface ServerResponse { // Instance methods @@ -69,9 +69,9 @@ public interface Response { * * @param exchange the web exchange to write to * @param strategies the strategies to use when writing - * @return {@code Mono} to indicate when request handling is complete + * @return {@code Mono} to indicate when writing is complete */ - Mono writeTo(ServerWebExchange exchange, StrategiesSupplier strategies); + Mono writeTo(ServerWebExchange exchange, HandlerStrategies strategies); // Static builder methods @@ -81,9 +81,9 @@ public interface Response { * @param other the response to copy the status and headers from * @return the created builder */ - static BodyBuilder from(Response other) { + static BodyBuilder from(ServerResponse other) { Assert.notNull(other, "'other' must not be null"); - DefaultResponseBuilder builder = new DefaultResponseBuilder(other.statusCode().value()); + DefaultServerResponseBuilder builder = new DefaultServerResponseBuilder(other.statusCode().value()); return builder.headers(other.headers()); } @@ -95,7 +95,7 @@ public interface Response { */ static BodyBuilder status(HttpStatus status) { Assert.notNull(status, "HttpStatus must not be null"); - return new DefaultResponseBuilder(status.value()); + return new DefaultServerResponseBuilder(status.value()); } /** @@ -105,7 +105,7 @@ public interface Response { * @return the created builder */ static BodyBuilder status(int status) { - return new DefaultResponseBuilder(status); + return new DefaultServerResponseBuilder(status); } /** @@ -271,7 +271,7 @@ public interface Response { * * @return the built response */ - Response build(); + ServerResponse build(); /** * Build the response entity with no body. @@ -280,7 +280,7 @@ public interface Response { * @param voidPublisher publisher publisher to indicate when the response should be committed * @return the built response */ - > Response build(T voidPublisher); + > ServerResponse build(T voidPublisher); } @@ -310,23 +310,36 @@ public interface Response { BodyBuilder contentType(MediaType contentType); /** - * Set the body with the given {@code supplier} function, and write it with the given - * {@code writer} function. - * @param writer a function that writes the body to the {@code ServerHttpResponse} - * @param supplier a function that returns the body instance + * Set the body of the response to the given {@code BodyInserter} and return it. + * @param inserter the {@code BodyInserter} that writes to the response * @param the type contained in the body * @return the built response */ - Response body(BiFunction> writer, - Supplier supplier); + ServerResponse body(BodyInserter inserter); /** - * Set the body of the response to the given {@code BodyInserter} and return it. - * @param inserter the {@code BodyInserter} that writes to the response - * @param the type contained in the body - * @return the built response + * Set the body of the response to the given {@code Publisher} and return it. This + * convenience method combines {@link #body(BodyInserter)} and + * {@link BodyInserters#fromPublisher(Publisher, Class)}. + * @param publisher the {@code Publisher} to write to the response + * @param elementClass the class of elements contained in the publisher + * @param the type of the elements contained in the publisher + * @param the type of the {@code Publisher} + * @return the built request + */ + , T> ServerResponse body(S publisher, Class elementClass); + + /** + * Set the body of the response to the given {@code Publisher} and return it. This + * convenience method combines {@link #body(BodyInserter)} and + * {@link BodyInserters#fromPublisher(Publisher, ResolvableType)}. + * @param publisher the {@code Publisher} to write to the response + * @param elementType the type of elements contained in the publisher + * @param the type of the elements contained in the publisher + * @param the type of the {@code Publisher} + * @return the built request */ - Response body(BodyInserter inserter); + , T> ServerResponse body(S publisher, ResolvableType elementType); /** * Render the template with the given {@code name} using the given {@code modelAttributes}. @@ -339,7 +352,7 @@ public interface Response { * @param modelAttributes the modelAttributes used to render the template * @return the built response */ - Response render(String name, Object... modelAttributes); + ServerResponse render(String name, Object... modelAttributes); /** * Render the template with the given {@code name} using the given {@code model}. @@ -347,7 +360,7 @@ public interface Response { * @param model the model used to render the template * @return the built response */ - Response render(String name, Map model); + ServerResponse render(String name, Map model); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/HandlerFunctionAdapter.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/HandlerFunctionAdapter.java index 90444df3102b04c0e412850e1954a32f62dc067d..6daa7038153d5486802e3f84aab5eb8dda7b3580 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/HandlerFunctionAdapter.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/HandlerFunctionAdapter.java @@ -24,9 +24,9 @@ import org.springframework.core.MethodParameter; import org.springframework.web.reactive.HandlerAdapter; import org.springframework.web.reactive.HandlerResult; import org.springframework.web.reactive.function.HandlerFunction; -import org.springframework.web.reactive.function.Request; -import org.springframework.web.reactive.function.Response; import org.springframework.web.reactive.function.RouterFunctions; +import org.springframework.web.reactive.function.ServerRequest; +import org.springframework.web.reactive.function.ServerResponse; import org.springframework.web.server.ServerWebExchange; /** @@ -41,7 +41,7 @@ public class HandlerFunctionAdapter implements HandlerAdapter { static { try { - Method method = HandlerFunction.class.getMethod("handle", Request.class); + Method method = HandlerFunction.class.getMethod("handle", ServerRequest.class); HANDLER_FUNCTION_RETURN_TYPE = new MethodParameter(method, -1); } catch (NoSuchMethodException ex) { @@ -57,11 +57,12 @@ public class HandlerFunctionAdapter implements HandlerAdapter { @Override public Mono handle(ServerWebExchange exchange, Object handler) { HandlerFunction handlerFunction = (HandlerFunction) handler; - Request request = - exchange.getAttribute(RouterFunctions.REQUEST_ATTRIBUTE) - .orElseThrow(() -> new IllegalStateException("Could not find Request in exchange attributes")); + ServerRequest request = + exchange.getAttribute(RouterFunctions.REQUEST_ATTRIBUTE) + .orElseThrow(() -> new IllegalStateException( + "Could not find ServerRequest in exchange attributes")); - Response response = handlerFunction.handle(request); + ServerResponse response = handlerFunction.handle(request); HandlerResult handlerResult = new HandlerResult(handlerFunction, response, HANDLER_FUNCTION_RETURN_TYPE); return Mono.just(handlerResult); diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/RequestWrapper.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ServerRequestWrapper.java similarity index 90% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/RequestWrapper.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ServerRequestWrapper.java index c11b091e95e4f07fd6c30454143ab077fe5f3be9..7cf5dec2156c6e465ecb50807ef22666f6fda070 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/RequestWrapper.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ServerRequestWrapper.java @@ -32,18 +32,18 @@ import org.springframework.http.codec.BodyExtractor; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.util.Assert; import org.springframework.web.reactive.function.HandlerFunction; -import org.springframework.web.reactive.function.Request; +import org.springframework.web.reactive.function.ServerRequest; /** - * Implementation of the {@link Request} interface that can be subclassed to adapt the request to a + * Implementation of the {@link ServerRequest} interface that can be subclassed to adapt the request to a * {@link HandlerFunction handler function}. All methods default to calling through to the wrapped request. * * @author Arjen Poutsma * @since 5.0 */ -public class RequestWrapper implements Request { +public class ServerRequestWrapper implements ServerRequest { - private final Request request; + private final ServerRequest request; /** @@ -51,7 +51,7 @@ public class RequestWrapper implements Request { * * @param request the request to wrap */ - public RequestWrapper(Request request) { + public ServerRequestWrapper(ServerRequest request) { Assert.notNull(request, "'request' must not be null"); this.request = request; } @@ -59,7 +59,7 @@ public class RequestWrapper implements Request { /** * Return the wrapped request. */ - public Request request() { + public ServerRequest request() { return this.request; } @@ -117,7 +117,7 @@ public class RequestWrapper implements Request { * Implementation of the {@link Headers} interface that can be subclassed to adapt the headers to a * {@link HandlerFunction handler function}. All methods default to calling through to the wrapped headers. */ - public static class HeadersWrapper implements Request.Headers { + public static class HeadersWrapper implements ServerRequest.Headers { private final Headers headers; diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ResponseResultHandler.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ServerResponseResultHandler.java similarity index 74% rename from spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ResponseResultHandler.java rename to spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ServerResponseResultHandler.java index 077586c07e43ea4eca05ac68354a761325301ed1..0257f6bdd40896fd1641107dc98ab9c87b80596c 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ResponseResultHandler.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/ServerResponseResultHandler.java @@ -21,31 +21,31 @@ import reactor.core.publisher.Mono; import org.springframework.util.Assert; import org.springframework.web.reactive.HandlerResult; import org.springframework.web.reactive.HandlerResultHandler; -import org.springframework.web.reactive.function.Response; -import org.springframework.web.reactive.function.StrategiesSupplier; +import org.springframework.web.reactive.function.ServerResponse; +import org.springframework.web.reactive.function.HandlerStrategies; import org.springframework.web.server.ServerWebExchange; /** - * {@code HandlerResultHandler} implementation that supports {@link Response}s. + * {@code HandlerResultHandler} implementation that supports {@link ServerResponse}s. * * @author Arjen Poutsma * @since 5.0 */ -public class ResponseResultHandler implements HandlerResultHandler { +public class ServerResponseResultHandler implements HandlerResultHandler { - private final StrategiesSupplier strategies; + private final HandlerStrategies strategies; /** * Create a {@code ResponseResultHandler} with default strategies. */ - public ResponseResultHandler() { - this(StrategiesSupplier.builder().build()); + public ServerResponseResultHandler() { + this(HandlerStrategies.builder().build()); } /** * Create a {@code ResponseResultHandler} with the given strategies. */ - public ResponseResultHandler(StrategiesSupplier strategies) { + public ServerResponseResultHandler(HandlerStrategies strategies) { Assert.notNull(strategies, "'strategies' must not be null"); this.strategies = strategies; } @@ -53,13 +53,13 @@ public class ResponseResultHandler implements HandlerResultHandler { @Override public boolean supports(HandlerResult result) { return result.getReturnValue() - .filter(o -> o instanceof Response) + .filter(o -> o instanceof ServerResponse) .isPresent(); } @Override public Mono handleResult(ServerWebExchange exchange, HandlerResult result) { - Response response = (Response) result.getReturnValue().orElseThrow( + ServerResponse response = (ServerResponse) result.getReturnValue().orElseThrow( IllegalStateException::new); return response.writeTo(exchange, this.strategies); } diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/package-info.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/package-info.java index 34a2692cfee24ac2d510cdce66e2f7d3b5db9a36..5abbc451fa35b6734b74b503b6e9dc458de7d1f2 100644 --- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/package-info.java +++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/function/support/package-info.java @@ -1,7 +1,7 @@ /** * Classes supporting the {@code org.springframework.web.reactive.function} package. * Contains a {@code HandlerAdapter} that supports {@code HandlerFunction}s, - * a {@code HandlerResultHandler} that supports {@code Response}s, and - * a {@code Request} wrapper to adapt a request. + * a {@code HandlerResultHandler} that supports {@code ServerResponse}s, and + * a {@code ServerRequest} wrapper to adapt a request. */ package org.springframework.web.reactive.function.support; \ No newline at end of file diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultRequestTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultServerRequestTests.java similarity index 93% rename from spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultRequestTests.java rename to spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultServerRequestTests.java index aeff32af0534e67ed9c4bf3bf58a12b26584da36..fb656606d205142397237ab318fa525b83abb4e1 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultRequestTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultServerRequestTests.java @@ -57,7 +57,7 @@ import static org.springframework.http.codec.BodyExtractors.toMono; /** * @author Arjen Poutsma */ -public class DefaultRequestTests { +public class DefaultServerRequestTests { private ServerHttpRequest mockRequest; @@ -65,9 +65,9 @@ public class DefaultRequestTests { private ServerWebExchange mockExchange; - private StrategiesSupplier mockStrategiesSupplier; + private HandlerStrategies mockHandlerStrategies; - private DefaultRequest defaultRequest; + private DefaultServerRequest defaultRequest; @Before public void createMocks() { @@ -77,9 +77,9 @@ public class DefaultRequestTests { mockExchange = mock(ServerWebExchange.class); when(mockExchange.getRequest()).thenReturn(mockRequest); when(mockExchange.getResponse()).thenReturn(mockResponse); - mockStrategiesSupplier = mock(StrategiesSupplier.class); + mockHandlerStrategies = mock(HandlerStrategies.class); - defaultRequest = new DefaultRequest(mockExchange, mockStrategiesSupplier); + defaultRequest = new DefaultServerRequest(mockExchange, mockHandlerStrategies); } @Test @@ -149,7 +149,7 @@ public class DefaultRequestTests { when(mockRequest.getHeaders()).thenReturn(httpHeaders); - Request.Headers headers = defaultRequest.headers(); + ServerRequest.Headers headers = defaultRequest.headers(); assertEquals(accept, headers.accept()); assertEquals(acceptCharset, headers.acceptCharset()); assertEquals(OptionalLong.of(contentLength), headers.contentLength()); @@ -171,7 +171,7 @@ public class DefaultRequestTests { Set> messageReaders = Collections .singleton(new DecoderHttpMessageReader(new StringDecoder())); - when(mockStrategiesSupplier.messageReaders()).thenReturn(messageReaders::stream); + when(mockHandlerStrategies.messageReaders()).thenReturn(messageReaders::stream); Mono resultMono = defaultRequest.body(toMono(String.class)); assertEquals("foo", resultMono.block()); diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultResponseBuilderTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultServerResponseBuilderTests.java similarity index 77% rename from spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultResponseBuilderTests.java rename to spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultServerResponseBuilderTests.java index 110db3b3eb742981431f86e03dd87d53cd03f567..7f6241b436583f3be849af3c2570a0d46f6c8eaa 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultResponseBuilderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DefaultServerResponseBuilderTests.java @@ -61,137 +61,137 @@ import static org.mockito.Mockito.when; /** * @author Arjen Poutsma */ -public class DefaultResponseBuilderTests { +public class DefaultServerResponseBuilderTests { @Test public void from() throws Exception { - Response other = Response.ok().header("foo", "bar").build(); - Response result = Response.from(other).build(); + ServerResponse other = ServerResponse.ok().header("foo", "bar").build(); + ServerResponse result = ServerResponse.from(other).build(); assertEquals(HttpStatus.OK, result.statusCode()); assertEquals("bar", result.headers().getFirst("foo")); } @Test public void status() throws Exception { - Response result = Response.status(HttpStatus.CREATED).build(); + ServerResponse result = ServerResponse.status(HttpStatus.CREATED).build(); assertEquals(HttpStatus.CREATED, result.statusCode()); } @Test public void statusInt() throws Exception { - Response result = Response.status(201).build(); + ServerResponse result = ServerResponse.status(201).build(); assertEquals(HttpStatus.CREATED, result.statusCode()); } @Test public void ok() throws Exception { - Response result = Response.ok().build(); + ServerResponse result = ServerResponse.ok().build(); assertEquals(HttpStatus.OK, result.statusCode()); } @Test public void created() throws Exception { URI location = URI.create("http://example.com"); - Response result = Response.created(location).build(); + ServerResponse result = ServerResponse.created(location).build(); assertEquals(HttpStatus.CREATED, result.statusCode()); assertEquals(location, result.headers().getLocation()); } @Test public void accepted() throws Exception { - Response result = Response.accepted().build(); + ServerResponse result = ServerResponse.accepted().build(); assertEquals(HttpStatus.ACCEPTED, result.statusCode()); } @Test public void noContent() throws Exception { - Response result = Response.noContent().build(); + ServerResponse result = ServerResponse.noContent().build(); assertEquals(HttpStatus.NO_CONTENT, result.statusCode()); } @Test public void badRequest() throws Exception { - Response result = Response.badRequest().build(); + ServerResponse result = ServerResponse.badRequest().build(); assertEquals(HttpStatus.BAD_REQUEST, result.statusCode()); } @Test public void notFound() throws Exception { - Response result = Response.notFound().build(); + ServerResponse result = ServerResponse.notFound().build(); assertEquals(HttpStatus.NOT_FOUND, result.statusCode()); } @Test public void unprocessableEntity() throws Exception { - Response result = Response.unprocessableEntity().build(); + ServerResponse result = ServerResponse.unprocessableEntity().build(); assertEquals(HttpStatus.UNPROCESSABLE_ENTITY, result.statusCode()); } @Test public void allow() throws Exception { - Response result = Response.ok().allow(HttpMethod.GET).build(); + ServerResponse result = ServerResponse.ok().allow(HttpMethod.GET).build(); assertEquals(Collections.singleton(HttpMethod.GET), result.headers().getAllow()); } @Test public void contentLength() throws Exception { - Response result = Response.ok().contentLength(42).build(); + ServerResponse result = ServerResponse.ok().contentLength(42).build(); assertEquals(42, result.headers().getContentLength()); } @Test public void contentType() throws Exception { - Response result = Response.ok().contentType(MediaType.APPLICATION_JSON).build(); + ServerResponse result = ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).build(); assertEquals(MediaType.APPLICATION_JSON, result.headers().getContentType()); } @Test public void eTag() throws Exception { - Response result = Response.ok().eTag("foo").build(); + ServerResponse result = ServerResponse.ok().eTag("foo").build(); assertEquals("\"foo\"", result.headers().getETag()); } @Test public void lastModified() throws Exception { ZonedDateTime now = ZonedDateTime.now(); - Response result = Response.ok().lastModified(now).build(); + ServerResponse result = ServerResponse.ok().lastModified(now).build(); assertEquals(now.toInstant().toEpochMilli()/1000, result.headers().getLastModified()/1000); } @Test public void cacheControlTag() throws Exception { - Response result = Response.ok().cacheControl(CacheControl.noCache()).build(); + ServerResponse result = ServerResponse.ok().cacheControl(CacheControl.noCache()).build(); assertEquals("no-cache", result.headers().getCacheControl()); } @Test public void varyBy() throws Exception { - Response result = Response.ok().varyBy("foo").build(); + ServerResponse result = ServerResponse.ok().varyBy("foo").build(); assertEquals(Collections.singletonList("foo"), result.headers().getVary()); } @Test public void statusCode() throws Exception { HttpStatus statusCode = HttpStatus.ACCEPTED; - Response result = Response.status(statusCode).build(); + ServerResponse result = ServerResponse.status(statusCode).build(); assertSame(statusCode, result.statusCode()); } @Test public void headers() throws Exception { HttpHeaders headers = new HttpHeaders(); - Response result = Response.ok().headers(headers).build(); + ServerResponse result = ServerResponse.ok().headers(headers).build(); assertEquals(headers, result.headers()); } @Test public void build() throws Exception { - Response result = Response.status(201).header("MyKey", "MyValue").build(); + ServerResponse result = ServerResponse.status(201).header("MyKey", "MyValue").build(); ServerWebExchange exchange = mock(ServerWebExchange.class); MockServerHttpResponse response = new MockServerHttpResponse(); when(exchange.getResponse()).thenReturn(response); - StrategiesSupplier strategies = mock(StrategiesSupplier.class); + HandlerStrategies strategies = mock(HandlerStrategies.class); result.writeTo(exchange, strategies).block(); assertEquals(201, response.getStatusCode().value()); @@ -203,12 +203,12 @@ public class DefaultResponseBuilderTests { @Test public void buildVoidPublisher() throws Exception { Mono mono = Mono.empty(); - Response> result = Response.ok().build(mono); + ServerResponse> result = ServerResponse.ok().build(mono); ServerWebExchange exchange = mock(ServerWebExchange.class); MockServerHttpResponse response = new MockServerHttpResponse(); when(exchange.getResponse()).thenReturn(response); - StrategiesSupplier strategies = mock(StrategiesSupplier.class); + HandlerStrategies strategies = mock(HandlerStrategies.class); result.writeTo(exchange, strategies).block(); assertNull(response.getBody()); @@ -227,7 +227,7 @@ public class DefaultResponseBuilderTests { return response.writeWith(Mono.just(buffer)); }; - Response result = Response.ok().body(writer, supplier); + ServerResponse result = ServerResponse.ok().body(BodyInserter.of(writer, supplier)); assertEquals(body, result.body()); MockServerHttpRequest request = @@ -239,7 +239,7 @@ public class DefaultResponseBuilderTests { List> messageWriters = new ArrayList<>(); messageWriters.add(new EncoderHttpMessageWriter(new CharSequenceEncoder())); - StrategiesSupplier strategies = mock(StrategiesSupplier.class); + HandlerStrategies strategies = mock(HandlerStrategies.class); when(strategies.messageWriters()).thenReturn(messageWriters::stream); result.writeTo(exchange, strategies).block(); @@ -249,7 +249,7 @@ public class DefaultResponseBuilderTests { @Test public void render() throws Exception { Map model = Collections.singletonMap("foo", "bar"); - Response result = Response.ok().render("view", model); + ServerResponse result = ServerResponse.ok().render("view", model); assertEquals("view", result.body().name()); assertEquals(model, result.body().model()); @@ -265,7 +265,7 @@ public class DefaultResponseBuilderTests { List viewResolvers = new ArrayList<>(); viewResolvers.add(viewResolver); - StrategiesSupplier mockConfig = mock(StrategiesSupplier.class); + HandlerStrategies mockConfig = mock(HandlerStrategies.class); when(mockConfig.viewResolvers()).thenReturn(viewResolvers::stream); result.writeTo(exchange, mockConfig).block(); @@ -273,11 +273,11 @@ public class DefaultResponseBuilderTests { @Test public void renderObjectArray() throws Exception { - Response result = - Response.ok().render("name", this, Collections.emptyList(), "foo"); + ServerResponse result = + ServerResponse.ok().render("name", this, Collections.emptyList(), "foo"); Map model = result.body().model(); assertEquals(2, model.size()); - assertEquals(this, model.get("defaultResponseBuilderTests")); + assertEquals(this, model.get("defaultServerResponseBuilderTests")); assertEquals("foo", model.get("string")); } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DispatcherHandlerIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DispatcherHandlerIntegrationTests.java index 278d565a374a6ffcc80d411e22db3ee0195a4e39..ed41d5fba44bfc5e801deaa5fba4bc4d6abb2827 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DispatcherHandlerIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/DispatcherHandlerIntegrationTests.java @@ -45,7 +45,7 @@ import org.springframework.web.reactive.HandlerAdapter; import org.springframework.web.reactive.HandlerMapping; import org.springframework.web.reactive.config.WebReactiveConfigurationSupport; import org.springframework.web.reactive.function.support.HandlerFunctionAdapter; -import org.springframework.web.reactive.function.support.ResponseResultHandler; +import org.springframework.web.reactive.function.support.ServerResponseResultHandler; import org.springframework.web.reactive.result.view.ViewResolver; import org.springframework.web.server.adapter.WebHttpHandlerBuilder; @@ -121,7 +121,7 @@ public class DispatcherHandlerIntegrationTests extends AbstractHttpHandlerIntegr public HandlerMapping handlerMapping(RouterFunction routerFunction, ApplicationContext applicationContext) { return RouterFunctions.toHandlerMapping(routerFunction, - new StrategiesSupplier() { + new HandlerStrategies() { @Override public Supplier>> messageReaders() { return () -> getMessageReaders().stream(); @@ -147,22 +147,22 @@ public class DispatcherHandlerIntegrationTests extends AbstractHttpHandlerIntegr } @Bean - public ResponseResultHandler responseResultHandler() { - return new ResponseResultHandler(); + public ServerResponseResultHandler responseResultHandler() { + return new ServerResponseResultHandler(); } } private static class PersonHandler { - public Response> mono(Request request) { + public ServerResponse> mono(ServerRequest request) { Person person = new Person("John"); - return Response.ok().body(fromPublisher(Mono.just(person), Person.class)); + return ServerResponse.ok().body(fromPublisher(Mono.just(person), Person.class)); } - public Response> flux(Request request) { + public ServerResponse> flux(ServerRequest request) { Person person1 = new Person("John"); Person person2 = new Person("Jane"); - return Response.ok().body( + return ServerResponse.ok().body( fromPublisher(Flux.just(person1, person2), Person.class)); } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/StrategiesSupplierTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HandlerStrategiesTests.java similarity index 94% rename from spring-web-reactive/src/test/java/org/springframework/web/reactive/function/StrategiesSupplierTests.java rename to spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HandlerStrategiesTests.java index edb1c0cd9214f5394fd1cb6aec6aeda09b7d4bc7..37bde92b3c6171561a867d27b4e6615687ea5fed 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/StrategiesSupplierTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HandlerStrategiesTests.java @@ -41,11 +41,11 @@ import static org.junit.Assert.*; /** * @author Arjen Poutsma */ -public class StrategiesSupplierTests { +public class HandlerStrategiesTests { @Test public void empty() { - StrategiesSupplier strategies = StrategiesSupplier.empty().build(); + HandlerStrategies strategies = HandlerStrategies.empty().build(); assertEquals(Optional.empty(), strategies.messageReaders().get().findFirst()); assertEquals(Optional.empty(), strategies.messageWriters().get().findFirst()); assertEquals(Optional.empty(), strategies.viewResolvers().get().findFirst()); @@ -56,7 +56,7 @@ public class StrategiesSupplierTests { HttpMessageReader messageReader = new DummyMessageReader(); HttpMessageWriter messageWriter = new DummyMessageWriter(); - StrategiesSupplier strategies = StrategiesSupplier.of( + HandlerStrategies strategies = HandlerStrategies.of( () -> Stream.of(messageReader), () -> Stream.of(messageWriter), null); @@ -77,7 +77,7 @@ public class StrategiesSupplierTests { applicationContext.registerSingleton("messageReader", DummyMessageReader.class); applicationContext.refresh(); - StrategiesSupplier strategies = StrategiesSupplier.of(applicationContext); + HandlerStrategies strategies = HandlerStrategies.of(applicationContext); assertTrue(strategies.messageReaders().get() .allMatch(r -> r instanceof DummyMessageReader)); assertTrue(strategies.messageWriters().get() diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HeadersWrapperTest.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HeadersWrapperTest.java index a1047ace75adeea962589eed2cfb62f935ae0f8d..1533ed82ead2d1938a59a9e5be7867a5d09983b5 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HeadersWrapperTest.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/HeadersWrapperTest.java @@ -30,7 +30,7 @@ import org.junit.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpRange; import org.springframework.http.MediaType; -import org.springframework.web.reactive.function.support.RequestWrapper; +import org.springframework.web.reactive.function.support.ServerRequestWrapper; import static org.junit.Assert.assertSame; import static org.mockito.Mockito.mock; @@ -41,15 +41,15 @@ import static org.mockito.Mockito.when; */ public class HeadersWrapperTest { - private Request.Headers mockHeaders; + private ServerRequest.Headers mockHeaders; - private RequestWrapper.HeadersWrapper wrapper; + private ServerRequestWrapper.HeadersWrapper wrapper; @Before public void createWrapper() { - mockHeaders = mock(Request.Headers.class); - wrapper = new RequestWrapper.HeadersWrapper(mockHeaders); + mockHeaders = mock(ServerRequest.Headers.class); + wrapper = new ServerRequestWrapper.HeadersWrapper(mockHeaders); } @Test diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/MockRequest.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/MockServerRequest.java similarity index 94% rename from spring-web-reactive/src/test/java/org/springframework/web/reactive/function/MockRequest.java rename to spring-web-reactive/src/test/java/org/springframework/web/reactive/function/MockServerRequest.java index 13f8a5990365cedaaeec00bc8b3bb0a90f375e2e..7a2111f8c9ee7af7aa55ed2dbe68aeedc5c244d0 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/MockRequest.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/MockServerRequest.java @@ -42,7 +42,7 @@ import org.springframework.util.MultiValueMap; /** * @author Arjen Poutsma */ -public class MockRequest implements Request { +public class MockServerRequest implements ServerRequest { private final HttpMethod method; @@ -58,7 +58,7 @@ public class MockRequest implements Request { private final Map pathVariables; - private MockRequest(HttpMethod method, URI uri, + private MockServerRequest(HttpMethod method, URI uri, MockHeaders headers, T body, Map attributes, MultiValueMap queryParams, Map pathVariables) { @@ -134,9 +134,9 @@ public class MockRequest implements Request { Builder pathVariables(Map pathVariables); - MockRequest body(T body); + MockServerRequest body(T body); - MockRequest build(); + MockServerRequest build(); } @@ -231,15 +231,15 @@ public class MockRequest implements Request { } @Override - public MockRequest body(T body) { + public MockServerRequest body(T body) { this.body = body; - return new MockRequest(this.method, this.uri, this.headers, this.body, + return new MockServerRequest(this.method, this.uri, this.headers, this.body, this.attributes, this.queryParams, this.pathVariables); } @Override - public MockRequest build() { - return new MockRequest(this.method, this.uri, this.headers, null, + public MockServerRequest build() { + return new MockServerRequest(this.method, this.uri, this.headers, null, this.attributes, this.queryParams, this.pathVariables); } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/PublisherHandlerFunctionIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/PublisherHandlerFunctionIntegrationTests.java index 633b74dab87ed6da7ffe9241d4c2a46fd94ec7a4..a10df72914664f650a9063d4ebe71132ed945528 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/PublisherHandlerFunctionIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/PublisherHandlerFunctionIntegrationTests.java @@ -97,20 +97,20 @@ public class PublisherHandlerFunctionIntegrationTests private static class PersonHandler { - public Response> mono(Request request) { + public ServerResponse> mono(ServerRequest request) { Person person = new Person("John"); - return Response.ok().body(fromPublisher(Mono.just(person), Person.class)); + return ServerResponse.ok().body(fromPublisher(Mono.just(person), Person.class)); } - public Response> postMono(Request request) { + public ServerResponse> postMono(ServerRequest request) { Mono personMono = request.body(toMono(Person.class)); - return Response.ok().body(fromPublisher(personMono, Person.class)); + return ServerResponse.ok().body(fromPublisher(personMono, Person.class)); } - public Response> flux(Request request) { + public ServerResponse> flux(ServerRequest request) { Person person1 = new Person("John"); Person person2 = new Person("Jane"); - return Response.ok().body( + return ServerResponse.ok().body( fromPublisher(Flux.just(person1, person2), Person.class)); } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicateTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicateTests.java index 4169f93cf28997a64a02f6103bb3e3d2215c2ce7..d1ef1d314d91aa2244313131fa1c2bc72b57b315 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicateTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicateTests.java @@ -32,7 +32,7 @@ public class RequestPredicateTests { RequestPredicate predicate2 = request -> true; RequestPredicate predicate3 = request -> false; - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); assertTrue(predicate1.and(predicate2).test(request)); assertTrue(predicate2.and(predicate1).test(request)); assertFalse(predicate1.and(predicate3).test(request)); @@ -43,7 +43,7 @@ public class RequestPredicateTests { RequestPredicate predicate = request -> false; RequestPredicate negated = predicate.negate(); - MockRequest mockRequest = MockRequest.builder().build(); + MockServerRequest mockRequest = MockServerRequest.builder().build(); assertTrue(negated.test(mockRequest)); predicate = request -> true; @@ -58,7 +58,7 @@ public class RequestPredicateTests { RequestPredicate predicate2 = request -> false; RequestPredicate predicate3 = request -> false; - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); assertTrue(predicate1.or(predicate2).test(request)); assertTrue(predicate2.or(predicate1).test(request)); assertFalse(predicate2.or(predicate3).test(request)); diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicatesTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicatesTests.java index 8daebdae5d6accc6b54eac11c8c7e6410adb71c5..00b13d4735eaa21de842cee446a27d233a0e4499 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicatesTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestPredicatesTests.java @@ -35,7 +35,7 @@ public class RequestPredicatesTests { @Test public void all() throws Exception { RequestPredicate predicate = RequestPredicates.all(); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); assertTrue(predicate.test(request)); } @@ -43,10 +43,10 @@ public class RequestPredicatesTests { public void method() throws Exception { HttpMethod httpMethod = HttpMethod.GET; RequestPredicate predicate = RequestPredicates.method(httpMethod); - MockRequest request = MockRequest.builder().method(httpMethod).build(); + MockServerRequest request = MockServerRequest.builder().method(httpMethod).build(); assertTrue(predicate.test(request)); - request = MockRequest.builder().method(HttpMethod.POST).build(); + request = MockServerRequest.builder().method(HttpMethod.POST).build(); assertFalse(predicate.test(request)); } @@ -55,31 +55,31 @@ public class RequestPredicatesTests { URI uri = URI.create("http://localhost/path"); RequestPredicate predicate = RequestPredicates.GET("/p*"); - MockRequest request = MockRequest.builder().method(HttpMethod.GET).uri(uri).build(); + MockServerRequest request = MockServerRequest.builder().method(HttpMethod.GET).uri(uri).build(); assertTrue(predicate.test(request)); predicate = RequestPredicates.HEAD("/p*"); - request = MockRequest.builder().method(HttpMethod.HEAD).uri(uri).build(); + request = MockServerRequest.builder().method(HttpMethod.HEAD).uri(uri).build(); assertTrue(predicate.test(request)); predicate = RequestPredicates.POST("/p*"); - request = MockRequest.builder().method(HttpMethod.POST).uri(uri).build(); + request = MockServerRequest.builder().method(HttpMethod.POST).uri(uri).build(); assertTrue(predicate.test(request)); predicate = RequestPredicates.PUT("/p*"); - request = MockRequest.builder().method(HttpMethod.PUT).uri(uri).build(); + request = MockServerRequest.builder().method(HttpMethod.PUT).uri(uri).build(); assertTrue(predicate.test(request)); predicate = RequestPredicates.PATCH("/p*"); - request = MockRequest.builder().method(HttpMethod.PATCH).uri(uri).build(); + request = MockServerRequest.builder().method(HttpMethod.PATCH).uri(uri).build(); assertTrue(predicate.test(request)); predicate = RequestPredicates.DELETE("/p*"); - request = MockRequest.builder().method(HttpMethod.DELETE).uri(uri).build(); + request = MockServerRequest.builder().method(HttpMethod.DELETE).uri(uri).build(); assertTrue(predicate.test(request)); predicate = RequestPredicates.OPTIONS("/p*"); - request = MockRequest.builder().method(HttpMethod.OPTIONS).uri(uri).build(); + request = MockServerRequest.builder().method(HttpMethod.OPTIONS).uri(uri).build(); assertTrue(predicate.test(request)); } @@ -88,10 +88,10 @@ public class RequestPredicatesTests { public void path() throws Exception { URI uri = URI.create("http://localhost/path"); RequestPredicate predicate = RequestPredicates.path("/p*"); - MockRequest request = MockRequest.builder().uri(uri).build(); + MockServerRequest request = MockServerRequest.builder().uri(uri).build(); assertTrue(predicate.test(request)); - request = MockRequest.builder().build(); + request = MockServerRequest.builder().build(); assertFalse(predicate.test(request)); } @@ -104,10 +104,10 @@ public class RequestPredicatesTests { return headers.header(name).equals( Collections.singletonList(value)); }); - MockRequest request = MockRequest.builder().header(name, value).build(); + MockServerRequest request = MockServerRequest.builder().header(name, value).build(); assertTrue(predicate.test(request)); - request = MockRequest.builder().build(); + request = MockServerRequest.builder().build(); assertFalse(predicate.test(request)); } @@ -115,10 +115,11 @@ public class RequestPredicatesTests { public void contentType() throws Exception { MediaType json = MediaType.APPLICATION_JSON; RequestPredicate predicate = RequestPredicates.contentType(json); - MockRequest request = MockRequest.builder().header("Content-Type", json.toString()).build(); + MockServerRequest + request = MockServerRequest.builder().header("Content-Type", json.toString()).build(); assertTrue(predicate.test(request)); - request = MockRequest.builder().build(); + request = MockServerRequest.builder().build(); assertFalse(predicate.test(request)); } @@ -126,10 +127,10 @@ public class RequestPredicatesTests { public void accept() throws Exception { MediaType json = MediaType.APPLICATION_JSON; RequestPredicate predicate = RequestPredicates.accept(json); - MockRequest request = MockRequest.builder().header("Accept", json.toString()).build(); + MockServerRequest request = MockServerRequest.builder().header("Accept", json.toString()).build(); assertTrue(predicate.test(request)); - request = MockRequest.builder().build(); + request = MockServerRequest.builder().build(); assertFalse(predicate.test(request)); } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionTests.java index 4cddcdd18bc71d0e58f7c25e9c06787daae45b32..770c4e4efc1182b5a5ef4c5eec9515f96a9f8c10 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionTests.java @@ -33,14 +33,14 @@ public class RouterFunctionTests { @Test public void andSame() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().build(); + HandlerFunction handlerFunction = request -> ServerResponse.ok().build(); RouterFunction routerFunction1 = request -> Optional.empty(); RouterFunction routerFunction2 = request -> Optional.of(handlerFunction); RouterFunction result = routerFunction1.andSame(routerFunction2); assertNotNull(result); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); Optional> resultHandlerFunction = result.route(request); assertTrue(resultHandlerFunction.isPresent()); assertEquals(handlerFunction, resultHandlerFunction.get()); @@ -48,14 +48,14 @@ public class RouterFunctionTests { @Test public void and() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().body(fromObject("42")); + HandlerFunction handlerFunction = request -> ServerResponse.ok().body(fromObject("42")); RouterFunction routerFunction1 = request -> Optional.empty(); RouterFunction routerFunction2 = request -> Optional.of(handlerFunction); RouterFunction result = routerFunction1.and(routerFunction2); assertNotNull(result); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); Optional> resultHandlerFunction = result.route(request); assertTrue(resultHandlerFunction.isPresent()); assertEquals(handlerFunction, resultHandlerFunction.get()); @@ -63,21 +63,21 @@ public class RouterFunctionTests { @Test public void filter() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().body(fromObject("42")); + HandlerFunction handlerFunction = request -> ServerResponse.ok().body(fromObject("42")); RouterFunction routerFunction = request -> Optional.of(handlerFunction); - FilterFunction filterFunction = (request, next) -> { - Response response = next.handle(request); + HandlerFilterFunction filterFunction = (request, next) -> { + ServerResponse response = next.handle(request); int i = Integer.parseInt(response.body()); - return Response.ok().body(fromObject(i)); + return ServerResponse.ok().body(fromObject(i)); }; RouterFunction result = routerFunction.filter(filterFunction); assertNotNull(result); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); Optional> resultHandlerFunction = result.route(request); assertTrue(resultHandlerFunction.isPresent()); - Response resultResponse = resultHandlerFunction.get().handle(request); + ServerResponse resultResponse = resultHandlerFunction.get().handle(request); assertEquals(42, resultResponse.body()); } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionsTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionsTests.java index d108d1bb11960c9ad5e6fc97a3d15291244ca352..039f406481cbdcec707ccbbc9fde25e4609d9197 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionsTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RouterFunctionsTests.java @@ -48,9 +48,9 @@ public class RouterFunctionsTests { @Test public void routeMatch() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().build(); + HandlerFunction handlerFunction = request -> ServerResponse.ok().build(); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); RequestPredicate requestPredicate = mock(RequestPredicate.class); when(requestPredicate.test(request)).thenReturn(true); @@ -64,9 +64,9 @@ public class RouterFunctionsTests { @Test public void routeNoMatch() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().build(); + HandlerFunction handlerFunction = request -> ServerResponse.ok().build(); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); RequestPredicate requestPredicate = mock(RequestPredicate.class); when(requestPredicate.test(request)).thenReturn(false); @@ -79,10 +79,10 @@ public class RouterFunctionsTests { @Test public void subrouteMatch() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().build(); + HandlerFunction handlerFunction = request -> ServerResponse.ok().build(); RouterFunction routerFunction = request -> Optional.of(handlerFunction); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); RequestPredicate requestPredicate = mock(RequestPredicate.class); when(requestPredicate.test(request)).thenReturn(true); @@ -96,10 +96,10 @@ public class RouterFunctionsTests { @Test public void subrouteNoMatch() throws Exception { - HandlerFunction handlerFunction = request -> Response.ok().build(); + HandlerFunction handlerFunction = request -> ServerResponse.ok().build(); RouterFunction routerFunction = request -> Optional.of(handlerFunction); - MockRequest request = MockRequest.builder().build(); + MockServerRequest request = MockServerRequest.builder().build(); RequestPredicate requestPredicate = mock(RequestPredicate.class); when(requestPredicate.test(request)).thenReturn(false); @@ -112,7 +112,7 @@ public class RouterFunctionsTests { @Test public void toHttpHandler() throws Exception { - StrategiesSupplier strategies = mock(StrategiesSupplier.class); + HandlerStrategies strategies = mock(HandlerStrategies.class); when(strategies.messageReaders()).thenReturn( () -> Collections.>emptyList().stream()); when(strategies.messageWriters()).thenReturn( @@ -120,15 +120,15 @@ public class RouterFunctionsTests { when(strategies.viewResolvers()).thenReturn( () -> Collections.emptyList().stream()); - Request request = mock(Request.class); - Response response = mock(Response.class); + ServerRequest request = mock(ServerRequest.class); + ServerResponse response = mock(ServerResponse.class); when(response.writeTo(any(ServerWebExchange.class), eq(strategies))).thenReturn(Mono.empty()); HandlerFunction handlerFunction = mock(HandlerFunction.class); - when(handlerFunction.handle(any(Request.class))).thenReturn(response); + when(handlerFunction.handle(any(ServerRequest.class))).thenReturn(response); RouterFunction routerFunction = mock(RouterFunction.class); - when(routerFunction.route(any(Request.class))).thenReturn(Optional.of(handlerFunction)); + when(routerFunction.route(any(ServerRequest.class))).thenReturn(Optional.of(handlerFunction)); RequestPredicate requestPredicate = mock(RequestPredicate.class); when(requestPredicate.test(request)).thenReturn(false); diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/SseHandlerFunctionIntegrationTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/SseHandlerFunctionIntegrationTests.java index b4f1f728402d1cf2c0331f296efdac3a82ead6e9..22d5096ec89761de783676344472e85a39cbde0c 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/SseHandlerFunctionIntegrationTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/SseHandlerFunctionIntegrationTests.java @@ -129,25 +129,25 @@ public class SseHandlerFunctionIntegrationTests private static class SseHandler { - public Response> string(Request request) { + public ServerResponse> string(ServerRequest request) { Flux flux = Flux.interval(Duration.ofMillis(100)).map(l -> "foo " + l).take(2); - return Response.ok().body(fromServerSentEvents(flux, String.class)); + return ServerResponse.ok().body(fromServerSentEvents(flux, String.class)); } - public Response> person(Request request) { + public ServerResponse> person(ServerRequest request) { Flux flux = Flux.interval(Duration.ofMillis(100)) .map(l -> new Person("foo " + l)).take(2); - return Response.ok().body(fromServerSentEvents(flux, Person.class)); + return ServerResponse.ok().body(fromServerSentEvents(flux, Person.class)); } - public Response>> sse(Request request) { + public ServerResponse>> sse(ServerRequest request) { Flux> flux = Flux.interval(Duration.ofMillis(100)) .map(l -> ServerSentEvent.builder().data("foo") .id(Long.toString(l)) .comment("bar") .build()).take(2); - return Response.ok().body(fromServerSentEvents(flux)); + return ServerResponse.ok().body(fromServerSentEvents(flux)); } } diff --git a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestWrapperTests.java b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/support/ServerRequestWrapperTests.java similarity index 88% rename from spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestWrapperTests.java rename to spring-web-reactive/src/test/java/org/springframework/web/reactive/function/support/ServerRequestWrapperTests.java index f21468c7033873c0434b83538216207d15d0c924..c619b48491afc4a8ad9f7013ae0c506b5da81724 100644 --- a/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/RequestWrapperTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/web/reactive/function/support/ServerRequestWrapperTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.web.reactive.function; +package org.springframework.web.reactive.function.support; import java.net.URI; import java.util.Collections; @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.http.HttpMethod; -import org.springframework.web.reactive.function.support.RequestWrapper; +import org.springframework.web.reactive.function.ServerRequest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; @@ -36,16 +36,16 @@ import static org.mockito.Mockito.when; /** * @author Arjen Poutsma */ -public class RequestWrapperTests { +public class ServerRequestWrapperTests { - private Request mockRequest; + private ServerRequest mockRequest; - private RequestWrapper wrapper; + private ServerRequestWrapper wrapper; @Before public void createWrapper() { - mockRequest = mock(Request.class); - wrapper = new RequestWrapper(mockRequest); + mockRequest = mock(ServerRequest.class); + wrapper = new ServerRequestWrapper(mockRequest); } @Test @@ -79,7 +79,7 @@ public class RequestWrapperTests { @Test public void headers() throws Exception { - Request.Headers headers = mock(Request.Headers.class); + ServerRequest.Headers headers = mock(ServerRequest.Headers.class); when(mockRequest.headers()).thenReturn(headers); assertSame(headers, wrapper.headers());