Added tests for context initializers on DispatcherServlet
Issue: SPR-11314
This commit is contained in:
@@ -29,6 +29,7 @@ import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.beans.MutablePropertyValues;
|
||||
import org.springframework.beans.PropertyValue;
|
||||
import org.springframework.context.ApplicationContextInitializer;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.core.env.ConfigurableEnvironment;
|
||||
import org.springframework.core.env.DummyEnvironment;
|
||||
@@ -37,7 +38,9 @@ import org.springframework.mock.web.test.MockHttpServletResponse;
|
||||
import org.springframework.mock.web.test.MockServletConfig;
|
||||
import org.springframework.mock.web.test.MockServletContext;
|
||||
import org.springframework.tests.sample.beans.TestBean;
|
||||
import org.springframework.web.context.ConfigurableWebApplicationContext;
|
||||
import org.springframework.web.context.ConfigurableWebEnvironment;
|
||||
import org.springframework.web.context.ContextLoader;
|
||||
import org.springframework.web.context.ServletConfigAwareBean;
|
||||
import org.springframework.web.context.ServletContextAwareBean;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
@@ -784,6 +787,46 @@ public class DispatcherServletTests extends TestCase {
|
||||
assertThat(response.getHeader("Allow"), equalTo("GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH"));
|
||||
}
|
||||
|
||||
public void testContextInitializers() throws Exception {
|
||||
DispatcherServlet servlet = new DispatcherServlet();
|
||||
servlet.setContextClass(SimpleWebApplicationContext.class);
|
||||
servlet.setContextInitializers(new TestWebContextInitializer(), new OtherWebContextInitializer());
|
||||
servlet.init(servletConfig);
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("initialized"));
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("otherInitialized"));
|
||||
}
|
||||
|
||||
public void testContextInitializerClasses() throws Exception {
|
||||
DispatcherServlet servlet = new DispatcherServlet();
|
||||
servlet.setContextClass(SimpleWebApplicationContext.class);
|
||||
servlet.setContextInitializerClasses(
|
||||
TestWebContextInitializer.class.getName() + "," + OtherWebContextInitializer.class.getName());
|
||||
servlet.init(servletConfig);
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("initialized"));
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("otherInitialized"));
|
||||
}
|
||||
|
||||
public void testGlobalInitializerClasses() throws Exception {
|
||||
DispatcherServlet servlet = new DispatcherServlet();
|
||||
servlet.setContextClass(SimpleWebApplicationContext.class);
|
||||
servletConfig.getServletContext().setInitParameter(ContextLoader.GLOBAL_INITIALIZER_CLASSES_PARAM,
|
||||
TestWebContextInitializer.class.getName() + "," + OtherWebContextInitializer.class.getName());
|
||||
servlet.init(servletConfig);
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("initialized"));
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("otherInitialized"));
|
||||
}
|
||||
|
||||
public void testMixedInitializerClasses() throws Exception {
|
||||
DispatcherServlet servlet = new DispatcherServlet();
|
||||
servlet.setContextClass(SimpleWebApplicationContext.class);
|
||||
servletConfig.getServletContext().setInitParameter(ContextLoader.GLOBAL_INITIALIZER_CLASSES_PARAM,
|
||||
TestWebContextInitializer.class.getName());
|
||||
servlet.setContextInitializerClasses(OtherWebContextInitializer.class.getName());
|
||||
servlet.init(servletConfig);
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("initialized"));
|
||||
assertEquals("true", servletConfig.getServletContext().getAttribute("otherInitialized"));
|
||||
}
|
||||
|
||||
|
||||
public static class ControllerFromParent implements Controller {
|
||||
|
||||
@@ -793,4 +836,22 @@ public class DispatcherServletTests extends TestCase {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class TestWebContextInitializer implements ApplicationContextInitializer<ConfigurableWebApplicationContext> {
|
||||
|
||||
@Override
|
||||
public void initialize(ConfigurableWebApplicationContext applicationContext) {
|
||||
applicationContext.getServletContext().setAttribute("initialized", "true");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class OtherWebContextInitializer implements ApplicationContextInitializer<ConfigurableWebApplicationContext> {
|
||||
|
||||
@Override
|
||||
public void initialize(ConfigurableWebApplicationContext applicationContext) {
|
||||
applicationContext.getServletContext().setAttribute("otherInitialized", "true");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user