package org.jboss.seam.ui.facelet;
import static org.jboss.seam.ScopeType.SESSION;
import java.io.Serializable;
import javax.servlet.http.HttpSession;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.mock.MockHttpSession;
@Name("org.jboss.seam.ui.facelet.mockHttpSession")
@Scope(SESSION)
@BypassInterceptors
@Install(dependencies="org.jboss.seam.faces.renderer")
@AutoCreate
public class HttpSessionManager implements Serializable
{
private transient HttpSession session;
@Unwrap
public HttpSession getSession()
{
if (session == null)
{
this.session = new MockHttpSession(ServletContextManager.instance());
}
return session;
}
public static HttpSession instance()
{
if (!Contexts.isSessionContextActive())
{
throw new IllegalStateException("Session context is not active");
}
return (HttpSession) Component.getInstance(HttpSessionManager.class, SESSION);
}
}