1 /*
2 * Created on Nov 17, 2003
3 *
4 * To change the template for this generated file go to
5 * Window - Preferences - Java - Code Generation - Code and Comments
6 */
7 package com.atlassian.spring.container;
8
9 import org.springframework.web.context.ContextLoaderListener;
10
11 import javax.servlet.ServletContextEvent;
12
13 /**
14 * @author Ross Mason
15 * <p/>
16 * The confluence context listener will obtain a reference to the spring application context to use
17 * for resolving components. This listener extends the Spring ContextLoaderListener and should be used instead of
18 * in the web.xml.
19 * <p/>
20 * The loader now fires an event once the ContainerManager has been setup with a context.
21 * @see com.atlassian.spring.container.ContainerContextLoadedEvent
22 */
23 public class ContainerContextLoaderListener extends ContextLoaderListener
24 {
25 /* (non-Javadoc)
26 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
27 */
28 public void contextInitialized(ServletContextEvent event)
29 {
30 if (canInitialiseContainer())
31 {
32 super.contextInitialized(event);
33 postInitialiseContext(event);
34 }
35
36 SpringContainerContext springCC = getNewSpringContainerContext();
37 springCC.setServletContext(event.getServletContext());
38 ContainerManager.getInstance().setContainerContext(springCC);
39
40 springCC.contextReloaded();
41 }
42
43 protected void postInitialiseContext(ServletContextEvent event)
44 {
45
46 }
47
48 protected SpringContainerContext getNewSpringContainerContext()
49 {
50 return new SpringContainerContext();
51 }
52
53 /**
54 * Overriding classes can apply contidional behaviour here
55 *
56 * @return
57 */
58 public boolean canInitialiseContainer()
59 {
60 return true;
61 }
62
63 }