[bs-14] Ensure all servlet context initializers are called

Misuse of TreeSet in EmbeddedWebApplicationContext corrected
(use List and Comparator instead of TreeSet).

[Fixes #48055339]
This commit is contained in:
Dave Syer
2013-04-24 10:14:22 +01:00
parent fb6b224470
commit 8a4b50e289
2 changed files with 28 additions and 14 deletions

View File

@@ -33,8 +33,6 @@ import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConstructorArgumentValues;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.bootstrap.context.embedded.EmbeddedWebApplicationContext;
import org.springframework.bootstrap.context.embedded.FilterRegistrationBean;
import org.springframework.context.ApplicationContextException;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
@@ -244,6 +242,22 @@ public class EmbeddedWebApplicationContextTests {
ordered.verify(initializer2).onStartup(servletContext);
}
@Test
public void unorderedServletContextInitializerBeans() throws Exception {
addEmbeddedServletContainerFactoryBean();
ServletContextInitializer initializer1 = mock(ServletContextInitializer.class);
ServletContextInitializer initializer2 = mock(ServletContextInitializer.class);
this.context.registerBeanDefinition("initializerBean2",
beanDefinition(initializer2));
this.context.registerBeanDefinition("initializerBean1",
beanDefinition(initializer1));
this.context.refresh();
ServletContext servletContext = getEmbeddedServletContainerFactory()
.getServletContext();
verify(initializer1).onStartup(servletContext);
verify(initializer2).onStartup(servletContext);
}
@Test
public void servletContextInitializerBeansSkipsServletsAndFilters() throws Exception {
addEmbeddedServletContainerFactoryBean();