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/DefaultRequest.java index 42714bc5de..6ae47f7a50 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/DefaultRequest.java @@ -86,11 +86,6 @@ class DefaultRequest implements Request { return this.exchange.getAttribute(name); } - @Override - public Map attributes() { - return this.exchange.getAttributes(); - } - @Override public List queryParams(String name) { List queryParams = request().getQueryParams().get(name); @@ -107,6 +102,10 @@ class DefaultRequest implements Request { return this.exchange.getRequest(); } + ServerWebExchange exchange() { + return this.exchange; + } + private class DefaultHeaders implements Headers { 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/Request.java index d05f581f3a..9ca0b1d7af 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/Request.java @@ -77,11 +77,6 @@ public interface Request { */ Optional attribute(String name); - /** - * Return a mutable map of attributes for this request. - */ - Map attributes(); - /** * Return the first query parameter with the given name, if present. * @param name the parameter name @@ -168,7 +163,7 @@ public interface Request { List header(String headerName); /** - * Return the headers as a "live" {@link HttpHeaders} instance. + * Return the headers as a {@link HttpHeaders} instance. */ HttpHeaders asHttpHeaders(); 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 796412dd58..aa4033a487 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 @@ -246,8 +246,11 @@ public abstract class RequestPredicates { public boolean test(Request request) { String path = request.path(); if (this.pathMatcher.match(this.pattern, path)) { - Map uriTemplateVariables = this.pathMatcher.extractUriTemplateVariables(this.pattern, path); - request.attributes().put(Router.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables); + if (request instanceof DefaultRequest) { + DefaultRequest defaultRequest = (DefaultRequest) request; + Map uriTemplateVariables = this.pathMatcher.extractUriTemplateVariables(this.pattern, path); + defaultRequest.exchange().getAttributes().put(Router.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables); + } return true; } else { 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/RequestWrapper.java index a4c83611fc..5c9439b30d 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/RequestWrapper.java @@ -95,11 +95,6 @@ public class RequestWrapper implements Request { return this.request.attribute(name); } - @Override - public Map attributes() { - return this.request.attributes(); - } - @Override public Optional queryParam(String name) { return this.request.queryParam(name); 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/DefaultRequestTests.java index 0c7957b850..394eb03049 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/DefaultRequestTests.java @@ -22,7 +22,6 @@ import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -94,11 +93,10 @@ public class DefaultRequestTests { } @Test - public void attributes() throws Exception { - Map attributes = new LinkedHashMap<>(); - when(mockExchange.getAttributes()).thenReturn(attributes); + public void attribute() throws Exception { + when(mockExchange.getAttribute("foo")).thenReturn(Optional.of("bar")); - assertEquals(attributes, defaultRequest.attributes()); + assertEquals(Optional.of("bar"), defaultRequest.attribute("foo")); } @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/MockRequest.java index 61b5b100fd..3c6cd171dc 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/MockRequest.java @@ -103,11 +103,6 @@ public class MockRequest implements Request { return Optional.ofNullable((T) this.attributes.get(name)); } - @Override - public Map attributes() { - return this.attributes; - } - @Override public List queryParams(String name) { return Collections.unmodifiableList(this.queryParams.get(name)); 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/RequestWrapperTests.java index 748ab1bc26..0d620e44bd 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/RequestWrapperTests.java @@ -102,14 +102,6 @@ public class RequestWrapperTests { assertEquals(Optional.of(value), wrapper.attribute(name)); } - @Test - public void attributes() throws Exception { - Map attributes = Collections.singletonMap("foo", "bar"); - when(mockRequest.attributes()).thenReturn(attributes); - - assertSame(attributes, wrapper.attributes()); - } - @Test public void queryParam() throws Exception { String name = "foo";