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 54
54
import org .springframework .util .MultiValueMap ;
55
55
import org .springframework .util .ObjectUtils ;
56
56
import org .springframework .web .HttpMediaTypeNotSupportedException ;
57
+ import org .springframework .web .servlet .HandlerMapping ;
57
58
import org .springframework .web .servlet .support .ServletUriComponentsBuilder ;
58
59
import org .springframework .web .util .UriBuilder ;
60
+ import org .springframework .web .util .UrlPathHelper ;
59
61
60
62
/**
61
63
* {@code ServerRequest} implementation based on a {@link HttpServletRequest}.
@@ -111,6 +113,16 @@ public UriBuilder uriBuilder() {
111
113
return ServletUriComponentsBuilder .fromRequest (servletRequest ());
112
114
}
113
115
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
+
114
126
@ Override
115
127
public Headers headers () {
116
128
return this .headers ;
Original file line number Diff line number Diff line change @@ -168,6 +168,8 @@ private void initMessageConverters() {
168
168
@ Nullable
169
169
@ Override
170
170
protected Object getHandlerInternal (@ NotNull HttpServletRequest servletRequest ) throws Exception {
171
+ String lookupPath = getUrlPathHelper ().getLookupPathForRequest (servletRequest );
172
+ servletRequest .setAttribute (LOOKUP_PATH , lookupPath );
171
173
if (this .routerFunction != null ) {
172
174
ServerRequest request = ServerRequest .create (servletRequest , this .messageConverters );
173
175
servletRequest .setAttribute (RouterFunctions .REQUEST_ATTRIBUTE , request );
Original file line number Diff line number Diff line change @@ -116,6 +116,19 @@ public void path() {
116
116
assertThat (predicate .test (request )).isFalse ();
117
117
}
118
118
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
+
119
132
@ Test
120
133
public void pathNoLeadingSlash () {
121
134
MockHttpServletRequest servletRequest = new MockHttpServletRequest ("GET" , "/path" );
You can’t perform that action at this time.
0 commit comments