Align default Filter dispatcher types with the Servlet spec

The Servlet spec states that the default is REQUEST. This commit
aligns Spring Boot with that default.

Closes gh-7467
This commit is contained in:
Andy Wilkinson
2017-02-14 16:50:49 +00:00
parent d1a77b6489
commit f57dae639d
3 changed files with 13 additions and 32 deletions

View File

@@ -50,13 +50,6 @@ abstract class AbstractFilterRegistrationBean<T extends Filter> extends Registra
private final Log logger = LogFactory.getLog(getClass());
private static final EnumSet<DispatcherType> ASYNC_DISPATCHER_TYPES = EnumSet.of(
DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST,
DispatcherType.ASYNC);
private static final EnumSet<DispatcherType> NON_ASYNC_DISPATCHER_TYPES = EnumSet
.of(DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST);
private static final String[] DEFAULT_URL_MAPPINGS = { "/*" };
private Set<ServletRegistrationBean<?>> servletRegistrationBeans = new LinkedHashSet<ServletRegistrationBean<?>>();
@@ -248,8 +241,7 @@ abstract class AbstractFilterRegistrationBean<T extends Filter> extends Registra
super.configure(registration);
EnumSet<DispatcherType> dispatcherTypes = this.dispatcherTypes;
if (dispatcherTypes == null) {
dispatcherTypes = (isAsyncSupported() ? ASYNC_DISPATCHER_TYPES
: NON_ASYNC_DISPATCHER_TYPES);
dispatcherTypes = EnumSet.of(DispatcherType.REQUEST);
}
Set<String> servletNames = new LinkedHashSet<String>();
for (ServletRegistrationBean<?> servletRegistrationBean : this.servletRegistrationBeans) {

View File

@@ -86,10 +86,6 @@ import static org.mockito.Mockito.withSettings;
*/
public class EmbeddedWebApplicationContextTests {
private static final EnumSet<DispatcherType> ASYNC_DISPATCHER_TYPES = EnumSet.of(
DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST,
DispatcherType.ASYNC);
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -311,10 +307,10 @@ public class EmbeddedWebApplicationContextTests {
verify(escf.getRegisteredServlet(0).getRegistration()).addMapping("/");
ordered.verify(escf.getServletContext()).addFilter("filterBean1", filter1);
ordered.verify(escf.getServletContext()).addFilter("filterBean2", filter2);
verify(escf.getRegisteredFilter(0).getRegistration())
.addMappingForUrlPatterns(ASYNC_DISPATCHER_TYPES, false, "/*");
verify(escf.getRegisteredFilter(1).getRegistration())
.addMappingForUrlPatterns(ASYNC_DISPATCHER_TYPES, false, "/*");
verify(escf.getRegisteredFilter(0).getRegistration()).addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST), false, "/*");
verify(escf.getRegisteredFilter(1).getRegistration()).addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST), false, "/*");
}
@Test

View File

@@ -50,13 +50,6 @@ import static org.mockito.Mockito.verify;
*/
public abstract class AbstractFilterRegistrationBeanTests {
private static final EnumSet<DispatcherType> ASYNC_DISPATCHER_TYPES = EnumSet.of(
DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST,
DispatcherType.ASYNC);
private static final EnumSet<DispatcherType> NON_ASYNC_DISPATCHER_TYPES = EnumSet
.of(DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST);
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -79,8 +72,8 @@ public abstract class AbstractFilterRegistrationBeanTests {
bean.onStartup(this.servletContext);
verify(this.servletContext).addFilter(eq("mockFilter"), getExpectedFilter());
verify(this.registration).setAsyncSupported(true);
verify(this.registration).addMappingForUrlPatterns(ASYNC_DISPATCHER_TYPES, false,
"/*");
verify(this.registration).addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST), false, "/*");
}
@Test
@@ -105,10 +98,10 @@ public abstract class AbstractFilterRegistrationBeanTests {
expectedInitParameters.put("a", "b");
expectedInitParameters.put("c", "d");
verify(this.registration).setInitParameters(expectedInitParameters);
verify(this.registration).addMappingForUrlPatterns(NON_ASYNC_DISPATCHER_TYPES,
true, "/a", "/b", "/c");
verify(this.registration).addMappingForServletNames(NON_ASYNC_DISPATCHER_TYPES,
true, "s4", "s5", "s1", "s2", "s3");
verify(this.registration).addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST), true, "/a", "/b", "/c");
verify(this.registration).addMappingForServletNames(
EnumSet.of(DispatcherType.REQUEST), true, "s4", "s5", "s1", "s2", "s3");
}
@Test
@@ -158,8 +151,8 @@ public abstract class AbstractFilterRegistrationBeanTests {
bean.setServletRegistrationBeans(new LinkedHashSet<ServletRegistrationBean<?>>(
Arrays.asList(mockServletRegistration("b"))));
bean.onStartup(this.servletContext);
verify(this.registration).addMappingForServletNames(ASYNC_DISPATCHER_TYPES, false,
"b");
verify(this.registration).addMappingForServletNames(
EnumSet.of(DispatcherType.REQUEST), false, "b");
}
@Test