Use unique names when auto-registering Filters
AbstractDispatcherServletInitializer now adds a unique suffix to a filter name if it fails to register it. Issue: SPR-11493
This commit is contained in:
@@ -39,6 +39,7 @@ import org.springframework.mock.web.test.MockServletConfig;
|
||||
import org.springframework.mock.web.test.MockServletContext;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||
import org.springframework.web.filter.DelegatingFilterProxy;
|
||||
import org.springframework.web.filter.HiddenHttpMethodFilter;
|
||||
import org.springframework.web.servlet.DispatcherServlet;
|
||||
|
||||
@@ -53,8 +54,6 @@ public class AnnotationConfigDispatcherServletInitializerTests {
|
||||
|
||||
private static final String SERVLET_NAME = "myservlet";
|
||||
|
||||
private static final String FILTER_NAME = "hiddenHttpMethodFilter";
|
||||
|
||||
private static final String ROLE_NAME = "role";
|
||||
|
||||
private static final String SERVLET_MAPPING = "/myservlet";
|
||||
@@ -106,14 +105,18 @@ public class AnnotationConfigDispatcherServletInitializerTests {
|
||||
assertEquals(ROLE_NAME, servletRegistration.getRunAsRole());
|
||||
assertTrue(servletRegistration.isAsyncSupported());
|
||||
|
||||
assertEquals(1, filterRegistrations.size());
|
||||
assertNotNull(filterRegistrations.get(FILTER_NAME));
|
||||
assertEquals(4, filterRegistrations.size());
|
||||
assertNotNull(filterRegistrations.get("hiddenHttpMethodFilter"));
|
||||
assertNotNull(filterRegistrations.get("delegatingFilterProxy"));
|
||||
assertNotNull(filterRegistrations.get("delegatingFilterProxy#0"));
|
||||
assertNotNull(filterRegistrations.get("delegatingFilterProxy#1"));
|
||||
|
||||
MockFilterRegistration filterRegistration = filterRegistrations.get(FILTER_NAME);
|
||||
for (MockFilterRegistration filterRegistration : filterRegistrations.values()) {
|
||||
assertTrue(filterRegistration.isAsyncSupported());
|
||||
assertEquals(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.ASYNC),
|
||||
filterRegistration.getMappings().get(SERVLET_NAME));
|
||||
}
|
||||
|
||||
assertTrue(filterRegistration.isAsyncSupported());
|
||||
assertEquals(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.ASYNC),
|
||||
filterRegistration.getMappings().get(SERVLET_NAME));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -130,10 +133,11 @@ public class AnnotationConfigDispatcherServletInitializerTests {
|
||||
MockServletRegistration servletRegistration = servletRegistrations.get(SERVLET_NAME);
|
||||
assertFalse(servletRegistration.isAsyncSupported());
|
||||
|
||||
MockFilterRegistration filterRegistration = filterRegistrations.get(FILTER_NAME);
|
||||
assertFalse(filterRegistration.isAsyncSupported());
|
||||
assertEquals(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE),
|
||||
filterRegistration.getMappings().get(SERVLET_NAME));
|
||||
for (MockFilterRegistration filterRegistration : filterRegistrations.values()) {
|
||||
assertFalse(filterRegistration.isAsyncSupported());
|
||||
assertEquals(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE),
|
||||
filterRegistration.getMappings().get(SERVLET_NAME));
|
||||
}
|
||||
}
|
||||
|
||||
// SPR-11357
|
||||
@@ -188,6 +192,9 @@ public class AnnotationConfigDispatcherServletInitializerTests {
|
||||
|
||||
@Override
|
||||
public ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) {
|
||||
if (servlets.containsKey(servletName)) {
|
||||
return null;
|
||||
}
|
||||
servlets.put(servletName, servlet);
|
||||
MockServletRegistration registration = new MockServletRegistration();
|
||||
servletRegistrations.put(servletName, registration);
|
||||
@@ -196,6 +203,9 @@ public class AnnotationConfigDispatcherServletInitializerTests {
|
||||
|
||||
@Override
|
||||
public Dynamic addFilter(String filterName, Filter filter) {
|
||||
if (filters.containsKey(filterName)) {
|
||||
return null;
|
||||
}
|
||||
filters.put(filterName, filter);
|
||||
MockFilterRegistration registration = new MockFilterRegistration();
|
||||
filterRegistrations.put(filterName, registration);
|
||||
@@ -224,7 +234,12 @@ public class AnnotationConfigDispatcherServletInitializerTests {
|
||||
|
||||
@Override
|
||||
protected Filter[] getServletFilters() {
|
||||
return new Filter[] { new HiddenHttpMethodFilter() };
|
||||
return new Filter[] {
|
||||
new HiddenHttpMethodFilter(),
|
||||
new DelegatingFilterProxy("a"),
|
||||
new DelegatingFilterProxy("b"),
|
||||
new DelegatingFilterProxy("c")
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user