Fix double registration of Filter
A stupid typo lurking in EmbeddedWebApplicationContext meant that a FilterRegistrationBean would register a Filter, and then it would be registered again without the initializer. [Fixes #54676948] Filter registered twice
This commit is contained in:
parent
2ec953a2e8
commit
65bd9dac85
|
|
@ -241,7 +241,7 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext
|
||||||
for (Entry<String, Filter> filterBean : getOrderedBeansOfType(Filter.class)) {
|
for (Entry<String, Filter> filterBean : getOrderedBeansOfType(Filter.class)) {
|
||||||
String name = filterBean.getKey();
|
String name = filterBean.getKey();
|
||||||
Filter filter = filterBean.getValue();
|
Filter filter = filterBean.getValue();
|
||||||
if (!servletRegistrations.contains(filter)) {
|
if (!filterRegistrations.contains(filter)) {
|
||||||
FilterRegistrationBean registration = new FilterRegistrationBean(filter);
|
FilterRegistrationBean registration = new FilterRegistrationBean(filter);
|
||||||
registration.setName(name);
|
registration.setName(name);
|
||||||
initializers.add(registration);
|
initializers.add(registration);
|
||||||
|
|
|
||||||
|
|
@ -317,6 +317,20 @@ public class EmbeddedWebApplicationContextTests {
|
||||||
verify(servletContext, atMost(1)).addFilter(anyString(), (Filter) anyObject());
|
verify(servletContext, atMost(1)).addFilter(anyString(), (Filter) anyObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void filterReegistrationBeansSkipsRegisteredFilters() throws Exception {
|
||||||
|
addEmbeddedServletContainerFactoryBean();
|
||||||
|
Filter filter = mock(Filter.class);
|
||||||
|
FilterRegistrationBean initializer = new FilterRegistrationBean(filter);
|
||||||
|
this.context.registerBeanDefinition("initializerBean",
|
||||||
|
beanDefinition(initializer));
|
||||||
|
this.context.registerBeanDefinition("filterBean", beanDefinition(filter));
|
||||||
|
this.context.refresh();
|
||||||
|
ServletContext servletContext = getEmbeddedServletContainerFactory()
|
||||||
|
.getServletContext();
|
||||||
|
verify(servletContext, atMost(1)).addFilter(anyString(), (Filter) anyObject());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void postProcessEmbeddedServletContainerFactory() throws Exception {
|
public void postProcessEmbeddedServletContainerFactory() throws Exception {
|
||||||
RootBeanDefinition bd = new RootBeanDefinition(
|
RootBeanDefinition bd = new RootBeanDefinition(
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import static org.mockito.Mockito.mock;
|
||||||
* {@link TomcatEmbeddedServletContainer}.
|
* {@link TomcatEmbeddedServletContainer}.
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
|
* @author Dave Syer
|
||||||
*/
|
*/
|
||||||
public class TomcatEmbeddedServletContainerFactoryTests extends
|
public class TomcatEmbeddedServletContainerFactoryTests extends
|
||||||
AbstractEmbeddedServletContainerFactoryTests {
|
AbstractEmbeddedServletContainerFactoryTests {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue