diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java index 6a6af19d5e7..b37e58bc026 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java @@ -19,6 +19,7 @@ package org.springframework.web.reactive.function.server; import java.net.InetSocketAddress; import java.net.URI; import java.security.Principal; +import java.time.Instant; import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashMap; @@ -1086,6 +1087,22 @@ public abstract class RequestPredicates { return this.delegate.uriBuilder(); } + @Override + public String path() { + return this.delegate.path(); + } + + @Override + @Deprecated + public PathContainer pathContainer() { + return this.delegate.pathContainer(); + } + + @Override + public RequestPath requestPath() { + return this.delegate.requestPath(); + } + @Override public Headers headers() { return this.delegate.headers(); @@ -1141,21 +1158,41 @@ public abstract class RequestPredicates { return this.delegate.bodyToFlux(typeReference); } + @Override + public Mono bind(Class bindType) { + return this.delegate.bind(bindType); + } + @Override public Mono bind(Class bindType, Consumer dataBinderCustomizer) { return this.delegate.bind(bindType, dataBinderCustomizer); } + @Override + public Optional attribute(String name) { + return this.delegate.attribute(name); + } + @Override public Map attributes() { return this.delegate.attributes(); } + @Override + public Optional queryParam(String name) { + return this.delegate.queryParam(name); + } + @Override public MultiValueMap queryParams() { return this.delegate.queryParams(); } + @Override + public String pathVariable(String name) { + return this.delegate.pathVariable(name); + } + @Override public Map pathVariables() { return this.delegate.pathVariables(); @@ -1186,9 +1223,24 @@ public abstract class RequestPredicates { return this.delegate.exchange(); } + @Override + public Mono checkNotModified(Instant lastModified) { + return this.delegate.checkNotModified(lastModified); + } + + @Override + public Mono checkNotModified(String etag) { + return this.delegate.checkNotModified(etag); + } + + @Override + public Mono checkNotModified(Instant lastModified, String etag) { + return this.delegate.checkNotModified(lastModified, etag); + } + @Override public String toString() { - return this.delegate.toString(); + return String.format("HTTP %s %s", method(), path()); } } @@ -1204,12 +1256,27 @@ public abstract class RequestPredicates { this.attributes = mergeMaps(delegate.attributes(), newAttributes); } + @Override + public Optional attribute(String name) { + return Optional.ofNullable(this.attributes.get(name)); + } @Override public Map attributes() { return this.attributes; } + @Override + public String pathVariable(String name) { + Map pathVariables = pathVariables(); + if (pathVariables.containsKey(name)) { + return pathVariables().get(name); + } + else { + throw new IllegalArgumentException("No path variable with name \"" + name + "\" available"); + } + } + @Override @SuppressWarnings("unchecked") public Map pathVariables() { @@ -1259,5 +1326,16 @@ public abstract class RequestPredicates { public RequestPath requestPath() { return this.requestPath; } + + @Override + public String path() { + return this.requestPath.pathWithinApplication().value(); + } + + @Override + @Deprecated + public PathContainer pathContainer() { + return this.requestPath; + } } } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java index 0523bccbc9d..d326bf05473 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java @@ -1090,6 +1090,12 @@ public abstract class RequestPredicates { return this.delegate.path(); } + @Override + @Deprecated + public PathContainer pathContainer() { + return this.delegate.pathContainer(); + } + @Override public RequestPath requestPath() { return this.delegate.requestPath(); @@ -1135,11 +1141,21 @@ public abstract class RequestPredicates { return this.delegate.bind(bindType, dataBinderCustomizer); } + @Override + public Optional attribute(String name) { + return this.delegate.attribute(name); + } + @Override public Map attributes() { return this.delegate.attributes(); } + @Override + public Optional param(String name) { + return this.delegate.param(name); + } + @Override public MultiValueMap params() { return this.delegate.params(); @@ -1150,6 +1166,11 @@ public abstract class RequestPredicates { return this.delegate.multipartData(); } + @Override + public String pathVariable(String name) { + return this.delegate.pathVariable(name); + } + @Override public Map pathVariables() { return this.delegate.pathVariables(); @@ -1203,12 +1224,27 @@ public abstract class RequestPredicates { this.attributes = mergeMaps(delegate.attributes(), newAttributes); } + @Override + public Optional attribute(String name) { + return Optional.ofNullable(this.attributes.get(name)); + } @Override public Map attributes() { return this.attributes; } + @Override + public String pathVariable(String name) { + Map pathVariables = pathVariables(); + if (pathVariables.containsKey(name)) { + return pathVariables().get(name); + } + else { + throw new IllegalArgumentException("No path variable with name \"" + name + "\" available"); + } + } + @Override @SuppressWarnings("unchecked") public Map pathVariables() { @@ -1258,5 +1294,16 @@ public abstract class RequestPredicates { public RequestPath requestPath() { return this.requestPath; } + + @Override + public String path() { + return this.requestPath.pathWithinApplication().value(); + } + + @Override + @Deprecated + public PathContainer pathContainer() { + return this.requestPath; + } } }