From 8e81360eba8cca33522872cdf48eb5f0b84644cb Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 29 Apr 2020 17:16:03 +0200 Subject: [PATCH] Use pre-parsed PathContainer in WebMvc.fn This commit makes the default ServerRequest implementation use a pre- parsed path container, instead of parsing the path for each invocation of pathContainer(). --- .../web/servlet/function/DefaultServerRequest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java index 7f6e815ccc5..a3f5fe8f4af 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java @@ -52,6 +52,7 @@ import org.springframework.http.HttpRange; import org.springframework.http.MediaType; import org.springframework.http.converter.GenericHttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.server.PathContainer; import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; @@ -76,6 +77,8 @@ class DefaultServerRequest implements ServerRequest { private final ServletServerHttpRequest serverHttpRequest; + private final PathContainer pathContainer; + private final Headers headers; private final List> messageConverters; @@ -98,6 +101,8 @@ class DefaultServerRequest implements ServerRequest { this.headers = new DefaultRequestHeaders(this.serverHttpRequest.getHeaders()); this.params = CollectionUtils.toMultiValueMap(new ServletParametersMap(servletRequest)); this.attributes = new ServletAttributesMap(servletRequest); + + this.pathContainer = PathContainer.parsePath(path()); } private static List allSupportedMediaTypes(List> messageConverters) { @@ -133,6 +138,11 @@ class DefaultServerRequest implements ServerRequest { return path; } + @Override + public PathContainer pathContainer() { + return this.pathContainer; + } + @Override public Headers headers() { return this.headers;