From 1bf75e330c932a140447d5b0f245c62cf49d3a67 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Sat, 17 Sep 2016 11:04:59 +0200 Subject: [PATCH] Fix tangle Fixed package tangle between w.r.f.RequestPredicates and w.r.f.support.RequestWrapper. --- .../reactive/function/RequestPredicates.java | 72 +++++++++++++++++-- 1 file changed, 65 insertions(+), 7 deletions(-) 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 1ea3c82b38..09b6c0f054 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 @@ -16,10 +16,12 @@ package org.springframework.web.reactive.function; +import java.net.URI; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.function.Predicate; @@ -28,7 +30,6 @@ import org.springframework.http.MediaType; import org.springframework.util.AntPathMatcher; import org.springframework.util.Assert; import org.springframework.util.PathMatcher; -import org.springframework.web.reactive.function.support.RequestWrapper; /** * Implementations of {@link RequestPredicate} that implement various useful request matching operations, such as @@ -262,12 +263,7 @@ public abstract class RequestPredicates { public Request subRequest(Request request) { String requestPath = request.path(); String subPath = this.pathMatcher.extractPathWithinPattern(this.pattern, requestPath); - return new RequestWrapper(request) { - @Override - public String path() { - return subPath; - } - }; + return new SubPathRequestWrapper(request, subPath); } } @@ -285,4 +281,66 @@ public abstract class RequestPredicates { return this.headersPredicate.test(request.headers()); } } + + private static class SubPathRequestWrapper implements Request { + + private final Request request; + + private final String subPath; + + public SubPathRequestWrapper(Request request, String subPath) { + this.request = request; + this.subPath = subPath; + } + + @Override + public HttpMethod method() { + return this.request.method(); + } + + @Override + public URI uri() { + return this.request.uri(); + } + + @Override + public String path() { + return this.subPath; + } + + @Override + public Headers headers() { + return this.request.headers(); + } + + @Override + public T body(BodyExtractor extractor) { + return this.request.body(extractor); + } + + @Override + public Optional attribute(String name) { + return this.request.attribute(name); + } + + @Override + public Optional queryParam(String name) { + return this.request.queryParam(name); + } + + @Override + public List queryParams(String name) { + return this.request.queryParams(name); + } + + @Override + public Optional pathVariable(String name) { + return this.request.pathVariable(name); + } + + @Override + public Map pathVariables() { + return this.request.pathVariables(); + } + } } -- GitLab