File tree Expand file tree Collapse file tree 3 files changed +27
-0
lines changed
main/java/org/springframework/web/servlet/function
test/java/org/springframework/web/servlet/function Expand file tree Collapse file tree 3 files changed +27
-0
lines changed Original file line number Diff line number Diff line change 5454import org .springframework .util .MultiValueMap ;
5555import org .springframework .util .ObjectUtils ;
5656import org .springframework .web .HttpMediaTypeNotSupportedException ;
57+ import org .springframework .web .servlet .HandlerMapping ;
5758import org .springframework .web .servlet .support .ServletUriComponentsBuilder ;
5859import org .springframework .web .util .UriBuilder ;
60+ import org .springframework .web .util .UrlPathHelper ;
5961
6062/**
6163 * {@code ServerRequest} implementation based on a {@link HttpServletRequest}.
@@ -111,6 +113,16 @@ public UriBuilder uriBuilder() {
111113 return ServletUriComponentsBuilder .fromRequest (servletRequest ());
112114 }
113115
116+ @ Override
117+ public String path () {
118+ String path = (String ) servletRequest ().getAttribute (HandlerMapping .LOOKUP_PATH );
119+ if (path == null ) {
120+ UrlPathHelper helper = new UrlPathHelper ();
121+ path = helper .getLookupPathForRequest (servletRequest ());
122+ }
123+ return path ;
124+ }
125+
114126 @ Override
115127 public Headers headers () {
116128 return this .headers ;
Original file line number Diff line number Diff line change @@ -168,6 +168,8 @@ private void initMessageConverters() {
168168 @ Nullable
169169 @ Override
170170 protected Object getHandlerInternal (@ NotNull HttpServletRequest servletRequest ) throws Exception {
171+ String lookupPath = getUrlPathHelper ().getLookupPathForRequest (servletRequest );
172+ servletRequest .setAttribute (LOOKUP_PATH , lookupPath );
171173 if (this .routerFunction != null ) {
172174 ServerRequest request = ServerRequest .create (servletRequest , this .messageConverters );
173175 servletRequest .setAttribute (RouterFunctions .REQUEST_ATTRIBUTE , request );
Original file line number Diff line number Diff line change @@ -116,6 +116,19 @@ public void path() {
116116 assertThat (predicate .test (request )).isFalse ();
117117 }
118118
119+ @ Test
120+ public void servletPath () {
121+ MockHttpServletRequest servletRequest = new MockHttpServletRequest ("GET" , "/foo/bar" );
122+ servletRequest .setServletPath ("/foo" );
123+ ServerRequest request = new DefaultServerRequest (servletRequest , emptyList ());
124+ RequestPredicate predicate = RequestPredicates .path ("/bar" );
125+ assertThat (predicate .test (request )).isTrue ();
126+
127+ servletRequest = new MockHttpServletRequest ("GET" , "/foo" );
128+ request = new DefaultServerRequest (servletRequest , emptyList ());
129+ assertThat (predicate .test (request )).isFalse ();
130+ }
131+
119132 @ Test
120133 public void pathNoLeadingSlash () {
121134 MockHttpServletRequest servletRequest = new MockHttpServletRequest ("GET" , "/path" );
You can’t perform that action at this time.
0 commit comments