mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-24 21:12:18 +00:00
Polish Using Request ServletContext
Issue gh-14418
This commit is contained in:
parent
75a35793dc
commit
8827b2e564
@ -447,18 +447,12 @@ public abstract class AbstractRequestMatcherRegistry<C> {
|
|||||||
|
|
||||||
static class DispatcherServletRequestMatcher implements RequestMatcher {
|
static class DispatcherServletRequestMatcher implements RequestMatcher {
|
||||||
|
|
||||||
private final ServletContext servletContext;
|
|
||||||
|
|
||||||
DispatcherServletRequestMatcher(ServletContext servletContext) {
|
|
||||||
this.servletContext = servletContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(HttpServletRequest request) {
|
public boolean matches(HttpServletRequest request) {
|
||||||
String name = request.getHttpServletMapping().getServletName();
|
String name = request.getHttpServletMapping().getServletName();
|
||||||
ServletRegistration registration = this.servletContext.getServletRegistration(name);
|
ServletRegistration registration = request.getServletContext().getServletRegistration(name);
|
||||||
Assert.notNull(registration,
|
Assert.notNull(registration,
|
||||||
() -> computeErrorMessage(this.servletContext.getServletRegistrations().values()));
|
() -> computeErrorMessage(request.getServletContext().getServletRegistrations().values()));
|
||||||
try {
|
try {
|
||||||
Class<?> clazz = Class.forName(registration.getClassName());
|
Class<?> clazz = Class.forName(registration.getClassName());
|
||||||
return DispatcherServlet.class.isAssignableFrom(clazz);
|
return DispatcherServlet.class.isAssignableFrom(clazz);
|
||||||
@ -478,10 +472,8 @@ public abstract class AbstractRequestMatcherRegistry<C> {
|
|||||||
|
|
||||||
private final RequestMatcher dispatcherServlet;
|
private final RequestMatcher dispatcherServlet;
|
||||||
|
|
||||||
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc,
|
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc) {
|
||||||
ServletContext servletContext) {
|
this(ant, mvc, new OrRequestMatcher(new MockMvcRequestMatcher(), new DispatcherServletRequestMatcher()));
|
||||||
this(ant, mvc, new OrRequestMatcher(new MockMvcRequestMatcher(),
|
|
||||||
new DispatcherServletRequestMatcher(servletContext)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc,
|
DispatcherServletDelegatingRequestMatcher(AntPathRequestMatcher ant, MvcRequestMatcher mvc,
|
||||||
|
@ -318,7 +318,7 @@ public class AbstractRequestMatcherRegistryTests {
|
|||||||
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers("/services/*");
|
List<RequestMatcher> requestMatchers = this.matcherRegistry.requestMatchers("/services/*");
|
||||||
assertThat(requestMatchers).hasSize(1);
|
assertThat(requestMatchers).hasSize(1);
|
||||||
assertThat(requestMatchers.get(0)).isInstanceOf(DispatcherServletDelegatingRequestMatcher.class);
|
assertThat(requestMatchers.get(0)).isInstanceOf(DispatcherServletDelegatingRequestMatcher.class);
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/endpoint");
|
MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/services/endpoint");
|
||||||
request.setHttpServletMapping(TestMockHttpServletMappings.defaultMapping());
|
request.setHttpServletMapping(TestMockHttpServletMappings.defaultMapping());
|
||||||
assertThat(requestMatchers.get(0).matcher(request).isMatch()).isTrue();
|
assertThat(requestMatchers.get(0).matcher(request).isMatch()).isTrue();
|
||||||
request.setHttpServletMapping(TestMockHttpServletMappings.path(request, "/services"));
|
request.setHttpServletMapping(TestMockHttpServletMappings.path(request, "/services"));
|
||||||
@ -334,9 +334,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||||||
servletContext.addServlet("path", Servlet.class).addMapping("/services/*");
|
servletContext.addServlet("path", Servlet.class).addMapping("/services/*");
|
||||||
MvcRequestMatcher mvc = mock(MvcRequestMatcher.class);
|
MvcRequestMatcher mvc = mock(MvcRequestMatcher.class);
|
||||||
AntPathRequestMatcher ant = mock(AntPathRequestMatcher.class);
|
AntPathRequestMatcher ant = mock(AntPathRequestMatcher.class);
|
||||||
DispatcherServletDelegatingRequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant,
|
RequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant, mvc);
|
||||||
mvc, servletContext);
|
MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/services/endpoint");
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/endpoint");
|
|
||||||
request.setHttpServletMapping(TestMockHttpServletMappings.defaultMapping());
|
request.setHttpServletMapping(TestMockHttpServletMappings.defaultMapping());
|
||||||
assertThat(requestMatcher.matches(request)).isFalse();
|
assertThat(requestMatcher.matches(request)).isFalse();
|
||||||
verify(mvc).matches(request);
|
verify(mvc).matches(request);
|
||||||
@ -354,9 +353,8 @@ public class AbstractRequestMatcherRegistryTests {
|
|||||||
servletContext.addServlet("path", Servlet.class).addMapping("/services/*");
|
servletContext.addServlet("path", Servlet.class).addMapping("/services/*");
|
||||||
MvcRequestMatcher mvc = mock(MvcRequestMatcher.class);
|
MvcRequestMatcher mvc = mock(MvcRequestMatcher.class);
|
||||||
AntPathRequestMatcher ant = mock(AntPathRequestMatcher.class);
|
AntPathRequestMatcher ant = mock(AntPathRequestMatcher.class);
|
||||||
DispatcherServletDelegatingRequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant,
|
RequestMatcher requestMatcher = new DispatcherServletDelegatingRequestMatcher(ant, mvc);
|
||||||
mvc, servletContext);
|
MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/services/endpoint");
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/endpoint");
|
|
||||||
assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> requestMatcher.matcher(request));
|
assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> requestMatcher.matcher(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user