From 31a3119784cc60c8ab94f12e0ca525421afb121e Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Wed, 31 Jul 2024 14:49:38 +0300 Subject: [PATCH] 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 --- .../servlet/setup/MockMvcFilterDecorator.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.java b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.java index aaa7f4e4fbb..f20dfa4058c 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.java @@ -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; }; }