Skip to content

Commit 4b4aad3

Browse files
committed
Polish Using Request ServletContext
Issue spring-projectsgh-14418
1 parent 62fc696 commit 4b4aad3

File tree

2 files changed

+10
-20
lines changed

2 files changed

+10
-20
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/AbstractRequestMatcherRegistry.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ private RequestMatcher resolve(AntPathRequestMatcher ant, MvcRequestMatcher mvc,
257257
if (mappings.size() == 1) {
258258
return mvc;
259259
}
260-
return new DispatcherServletDelegatingRequestMatcher(ant, mvc, servletContext);
260+
return new DispatcherServletDelegatingRequestMatcher(ant, mvc);
261261
}
262262
String mapping = dispatcherServlet.mapping();
263263
mvc.setServletPath(mapping.substring(0, mapping.length() - 2));
@@ -462,18 +462,12 @@ public boolean matches(HttpServletRequest request) {
462462

463463
static class DispatcherServletRequestMatcher implements RequestMatcher {
464464

465-
private final ServletContext servletContext;
466-
467-
DispatcherServletRequestMatcher(ServletContext servletContext) {
468-
this.servletContext = servletContext;
469-
}
470-
471465
@Override
472466
public boolean matches(HttpServletRequest request) {
473467
String name = request.getHttpServletMapping().getServletName();
474-
ServletRegistration registration = this.servletContext.getServletRegistration(name);
468+
ServletRegistration registration = request.getServletContext().getServletRegistration(name);
475469
Assert.notNull(registration,
476-
() -> computeErrorMessage(this.servletContext.getServletRegistrations().values()));
470+
() -> computeErrorMessage(request.getServletContext().getServletRegistrations().values()));
477471
try {
478472
Class<?> clazz = Class.forName(registration.getClassName());
479473
return DispatcherServlet.class.isAssignableFrom(clazz);
@@ -493,10 +487,8 @@ static class DispatcherServletDelegatingRequestMatcher implements RequestMatcher
493487

494488
private final RequestMatcher dispatcherServlet;
495489

496-
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc,
497-
ServletContext servletContext) {
498-
this(ant, mvc, new OrRequestMatcher(new MockMvcRequestMatcher(),
499-
new DispatcherServletRequestMatcher(servletContext)));
490+
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc) {
491+
this(ant, mvc, new OrRequestMatcher(new MockMvcRequestMatcher(), new DispatcherServletRequestMatcher()));
500492
}
501493

502494
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc,

config/src/test/java/org/springframework/security/config/annotation/web/AbstractRequestMatcherRegistryTests.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ public void requestMatchersWhenPathBasedNonDispatcherServletThenAllows() {
327327
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers("/services/*");
328328
assertThat(requestMatchers).hasSize(1);
329329
assertThat(requestMatchers.get(0)).isInstanceOf(DispatcherServletDelegatingRequestMatcher.class);
330-
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/endpoint");
330+
MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/services/endpoint");
331331
request.setHttpServletMapping(TestMockHttpServletMappings.defaultMapping());
332332
assertThat(requestMatchers.get(0).matcher(request).isMatch()).isTrue();
333333
request.setHttpServletMapping(TestMockHttpServletMappings.path(request, "/services"));
@@ -343,9 +343,8 @@ public void matchesWhenDispatcherServletThenMvc() {
343343
servletContext.addServlet("path", Servlet.class).addMapping("/services/*");
344344
MvcRequestMatcher mvc = mock(MvcRequestMatcher.class);
345345
AntPathRequestMatcher ant = mock(AntPathRequestMatcher.class);
346-
DispatcherServletDelegatingRequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant,
347-
mvc, servletContext);
348-
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/endpoint");
346+
RequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant, mvc);
347+
MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/services/endpoint");
349348
request.setHttpServletMapping(TestMockHttpServletMappings.defaultMapping());
350349
assertThat(requestMatcher.matches(request)).isFalse();
351350
verify(mvc).matches(request);
@@ -363,9 +362,8 @@ public void matchesWhenNoMappingThenException() {
363362
servletContext.addServlet("path", Servlet.class).addMapping("/services/*");
364363
MvcRequestMatcher mvc = mock(MvcRequestMatcher.class);
365364
AntPathRequestMatcher ant = mock(AntPathRequestMatcher.class);
366-
DispatcherServletDelegatingRequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant,
367-
mvc, servletContext);
368-
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/endpoint");
365+
RequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant, mvc);
366+
MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/services/endpoint");
369367
assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> requestMatcher.matcher(request));
370368
}
371369

0 commit comments

Comments
 (0)