Browse Source

Add FilterRegistration's defensively

Follow-up to d2225c, which broke Boot tests because the ServletContext can
be the one of the embedded Servlet container if initializing a live server
and as well as MockMvc (e.g. via `@AutoConfigureMockMvc`).

See gh-33252
pull/33297/head
rstoyanchev 2 years ago
parent
commit
31a3119784
  1. 19
      spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.java

19
spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.java

@ -111,19 +111,18 @@ final class MockMvcFilterDecorator implements Filter { @@ -111,19 +111,18 @@ final class MockMvcFilterDecorator implements Filter {
String className = delegate.getClass().getName();
return servletContext -> {
MockServletContext mockServletContext = (MockServletContext) servletContext;
MockFilterConfig filterConfig;
if (filterName != null) {
filterConfig = new MockFilterConfig(servletContext, filterName);
mockServletContext.addFilterRegistration(new MockFilterRegistration(className, filterName));
}
else {
filterConfig = new MockFilterConfig(servletContext);
mockServletContext.addFilterRegistration(new MockFilterRegistration(className));
}
MockFilterConfig filterConfig = (filterName != null ?
new MockFilterConfig(servletContext, filterName) : new MockFilterConfig(servletContext));
if (initParams != null) {
initParams.forEach(filterConfig::addInitParameter);
}
if (servletContext instanceof MockServletContext mockServletContext) {
mockServletContext.addFilterRegistration(filterName != null ?
new MockFilterRegistration(className, filterName) : new MockFilterRegistration(className));
}
return filterConfig;
};
}

Loading…
Cancel
Save