/* * JBoss, Home of Professional Open Source * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.seam.mock; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.jboss.seam.Seam; import org.jboss.seam.contexts.ServletLifecycle; import org.jboss.seam.log.LogProvider; import org.jboss.seam.log.Logging; /** * Used to retrieve real ServletContext for the AbstractSeamTest startSeam. * * @author Marek Schmidt */ public class MockSeamListener implements ServletContextListener, HttpSessionListener { private static final LogProvider log = Logging.getLogProvider(ServletContextListener.class); private static ServletContext servletContext; public void contextInitialized(ServletContextEvent event) { log.info( "Welcome to Mock Seam " + Seam.getVersion() ); event.getServletContext().setAttribute( Seam.VERSION, Seam.getVersion() ); servletContext = event.getServletContext(); // Sabotage Mojarra initialization. // This is required as Mojarra will attempt to initialize even if there is no FacesServlet configured in web.xml servletContext.removeAttribute("com.sun.faces.facesInitializerMappingsAdded"); } public static ServletContext getServletContext() { return servletContext; } public void contextDestroyed(ServletContextEvent event) { } public void sessionCreated(HttpSessionEvent event) { ServletLifecycle.beginSession( event.getSession() ); } public void sessionDestroyed(HttpSessionEvent event) { ServletLifecycle.endSession( event.getSession() ); } }