Fix delegation in ServerRequest decorators

Closes gh-31955
This commit is contained in:
Arjen Poutsma
2024-02-07 16:31:49 +01:00
parent 2724c6d8fe
commit af44b3e6c0
2 changed files with 126 additions and 1 deletions

View File

@@ -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 <T> Mono<T> bind(Class<T> bindType) {
return this.delegate.bind(bindType);
}
@Override
public <T> Mono<T> bind(Class<T> bindType, Consumer<WebDataBinder> dataBinderCustomizer) {
return this.delegate.bind(bindType, dataBinderCustomizer);
}
@Override
public Optional<Object> attribute(String name) {
return this.delegate.attribute(name);
}
@Override
public Map<String, Object> attributes() {
return this.delegate.attributes();
}
@Override
public Optional<String> queryParam(String name) {
return this.delegate.queryParam(name);
}
@Override
public MultiValueMap<String, String> queryParams() {
return this.delegate.queryParams();
}
@Override
public String pathVariable(String name) {
return this.delegate.pathVariable(name);
}
@Override
public Map<String, String> pathVariables() {
return this.delegate.pathVariables();
@@ -1186,9 +1223,24 @@ public abstract class RequestPredicates {
return this.delegate.exchange();
}
@Override
public Mono<ServerResponse> checkNotModified(Instant lastModified) {
return this.delegate.checkNotModified(lastModified);
}
@Override
public Mono<ServerResponse> checkNotModified(String etag) {
return this.delegate.checkNotModified(etag);
}
@Override
public Mono<ServerResponse> 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<Object> attribute(String name) {
return Optional.ofNullable(this.attributes.get(name));
}
@Override
public Map<String, Object> attributes() {
return this.attributes;
}
@Override
public String pathVariable(String name) {
Map<String, String> 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<String, String> 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;
}
}
}

View File

@@ -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<Object> attribute(String name) {
return this.delegate.attribute(name);
}
@Override
public Map<String, Object> attributes() {
return this.delegate.attributes();
}
@Override
public Optional<String> param(String name) {
return this.delegate.param(name);
}
@Override
public MultiValueMap<String, String> 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<String, String> pathVariables() {
return this.delegate.pathVariables();
@@ -1203,12 +1224,27 @@ public abstract class RequestPredicates {
this.attributes = mergeMaps(delegate.attributes(), newAttributes);
}
@Override
public Optional<Object> attribute(String name) {
return Optional.ofNullable(this.attributes.get(name));
}
@Override
public Map<String, Object> attributes() {
return this.attributes;
}
@Override
public String pathVariable(String name) {
Map<String, String> 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<String, String> 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;
}
}
}