|
23 | 23 | import jakarta.servlet.ServletContext;
|
24 | 24 | import jakarta.servlet.ServletRequest;
|
25 | 25 | import jakarta.servlet.ServletResponse;
|
| 26 | +import jakarta.servlet.annotation.WebInitParam; |
26 | 27 | import jakarta.servlet.http.HttpServlet;
|
27 | 28 | import jakarta.servlet.http.HttpSessionIdListener;
|
28 | 29 | import org.assertj.core.api.ThrowingConsumer;
|
|
42 | 43 | *
|
43 | 44 | * @author Andy Wilkinson
|
44 | 45 | * @author Moritz Halbritter
|
| 46 | + * @author Daeho Kwon |
45 | 47 | */
|
46 | 48 | class ServletContextInitializerBeansTests {
|
47 | 49 |
|
@@ -136,6 +138,9 @@ void shouldApplyFilterRegistrationAnnotation() {
|
136 | 138 | assertThat(filterRegistrationBean.getServletNames()).containsExactly("test");
|
137 | 139 | assertThat(filterRegistrationBean.determineDispatcherTypes()).containsExactly(DispatcherType.ERROR);
|
138 | 140 | assertThat(filterRegistrationBean.getUrlPatterns()).containsExactly("/test/*");
|
| 141 | + assertThat(filterRegistrationBean.getInitParameters()).containsEntry("env", "test") |
| 142 | + .containsEntry("debug", "true"); |
| 143 | + |
139 | 144 | });
|
140 | 145 | }
|
141 | 146 |
|
@@ -179,6 +184,25 @@ void shouldApplyOrderFromOrderAttribute() {
|
179 | 184 | .isEqualTo(ServletConfigurationWithAnnotationAndOrder.ORDER));
|
180 | 185 | }
|
181 | 186 |
|
| 187 | + @Test |
| 188 | + void shouldApplyServletRegistrationBeansInFilterRegistration() { |
| 189 | + load(FilterWithServletRegistrationBeansConfiguration.class); |
| 190 | + |
| 191 | + ServletContextInitializerBeans initializerBeans = new ServletContextInitializerBeans( |
| 192 | + this.context.getBeanFactory(), TestServletContextInitializer.class); |
| 193 | + |
| 194 | + FilterRegistrationBean<?> frb = initializerBeans.stream() |
| 195 | + .filter(FilterRegistrationBean.class::isInstance) |
| 196 | + .map(FilterRegistrationBean.class::cast) |
| 197 | + .filter((f) -> "testFilter".equals(f.getFilterName())) |
| 198 | + .findFirst() |
| 199 | + .orElseThrow(); |
| 200 | + |
| 201 | + assertThat(frb.getServletRegistrationBeans()).hasSize(1); |
| 202 | + assertThat(frb.getServletRegistrationBeans().iterator().next().getServletName()) |
| 203 | + .isEqualTo("testServletRegistrationBean"); |
| 204 | + } |
| 205 | + |
182 | 206 | private void load(Class<?>... configuration) {
|
183 | 207 | this.context = new AnnotationConfigApplicationContext(configuration);
|
184 | 208 | }
|
@@ -280,7 +304,24 @@ static class FilterConfigurationWithAnnotation {
|
280 | 304 | @Bean
|
281 | 305 | @FilterRegistration(enabled = false, name = "test", asyncSupported = false,
|
282 | 306 | dispatcherTypes = DispatcherType.ERROR, matchAfter = true, servletNames = "test",
|
283 |
| - urlPatterns = "/test/*") |
| 307 | + urlPatterns = "/test/*", initParameters = { @WebInitParam(name = "env", value = "test"), |
| 308 | + @WebInitParam(name = "debug", value = "true") }) |
| 309 | + TestFilter testFilter() { |
| 310 | + return new TestFilter(); |
| 311 | + } |
| 312 | + |
| 313 | + } |
| 314 | + |
| 315 | + @Configuration(proxyBeanMethods = false) |
| 316 | + static class FilterWithServletRegistrationBeansConfiguration { |
| 317 | + |
| 318 | + @Bean |
| 319 | + ServletRegistrationBean<TestServlet> testServletRegistrationBean() { |
| 320 | + return new ServletRegistrationBean<>(new TestServlet(), "/test"); |
| 321 | + } |
| 322 | + |
| 323 | + @Bean |
| 324 | + @FilterRegistration(name = "testFilter", servletRegistrationBeans = TestServlet.class) |
284 | 325 | TestFilter testFilter() {
|
285 | 326 | return new TestFilter();
|
286 | 327 | }
|
|
0 commit comments