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
This commit is contained in:
rstoyanchev
2024-07-31 14:49:38 +03:00
parent f1a99cd968
commit 31a3119784

View File

@@ -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;
};
}