Search in sources :

Example 1 with HttpSessionDestructionContext

use of org.jboss.weld.module.web.context.http.HttpSessionDestructionContext in project core by weld.

the class WeldWebModule method postContextRegistration.

@Override
public void postContextRegistration(PostContextRegistrationContext ctx) {
    final BeanIdentifierIndex index = ctx.getServices().get(BeanIdentifierIndex.class);
    final String contextId = ctx.getContextId();
    if (Reflections.isClassLoadable(ServletApiAbstraction.SERVLET_CONTEXT_CLASS_NAME, WeldClassLoaderResourceLoader.INSTANCE)) {
        // Register the Http contexts if not in
        Set<Annotation> httpQualifiers = ImmutableSet.<Annotation>builder().addAll(Bindings.DEFAULT_QUALIFIERS).add(HttpLiteral.INSTANCE).build();
        ctx.addContext(new ContextHolder<HttpSessionContext>(new HttpSessionContextImpl(contextId, index), HttpSessionContext.class, httpQualifiers));
        ctx.addContext(new ContextHolder<HttpSessionDestructionContext>(new HttpSessionDestructionContext(contextId, index), HttpSessionDestructionContext.class, httpQualifiers));
        ctx.addContext(new ContextHolder<HttpConversationContext>(new LazyHttpConversationContextImpl(contextId, ctx.getServices()), HttpConversationContext.class, httpQualifiers));
        ctx.addContext(new ContextHolder<HttpRequestContext>(new HttpRequestContextImpl(contextId), HttpRequestContext.class, httpQualifiers));
    }
}
Also used : HttpSessionDestructionContext(org.jboss.weld.module.web.context.http.HttpSessionDestructionContext) LazyHttpConversationContextImpl(org.jboss.weld.module.web.context.http.LazyHttpConversationContextImpl) Annotation(java.lang.annotation.Annotation) BeanIdentifierIndex(org.jboss.weld.serialization.BeanIdentifierIndex) HttpSessionContextImpl(org.jboss.weld.module.web.context.http.HttpSessionContextImpl) HttpSessionContext(org.jboss.weld.context.http.HttpSessionContext) HttpRequestContext(org.jboss.weld.context.http.HttpRequestContext) HttpRequestContextImpl(org.jboss.weld.module.web.context.http.HttpRequestContextImpl) HttpConversationContext(org.jboss.weld.context.http.HttpConversationContext)

Example 2 with HttpSessionDestructionContext

use of org.jboss.weld.module.web.context.http.HttpSessionDestructionContext in project core by weld.

the class HttpContextLifecycle method deactivateSessionDestructionContext.

private void deactivateSessionDestructionContext(HttpSession session) {
    HttpSessionDestructionContext context = getSessionDestructionContext();
    if (context.isActive()) {
        context.deactivate();
        context.dissociate(session);
    }
}
Also used : HttpSessionDestructionContext(org.jboss.weld.module.web.context.http.HttpSessionDestructionContext)

Example 3 with HttpSessionDestructionContext

use of org.jboss.weld.module.web.context.http.HttpSessionDestructionContext in project core by weld.

the class WeldTerminalListener method sessionDestroyed.

@Override
public void sessionDestroyed(HttpSessionEvent event) {
    final ServletContext ctx = event.getSession().getServletContext();
    // First try to use the context id obtained from the servlet context (OSGi, Servlet containers, etc.)
    if (beanManager == null) {
        synchronized (this) {
            if (beanManager == null) {
                String contextId = ctx.getInitParameter(Container.CONTEXT_ID_KEY);
                if (contextId != null) {
                    List<BeanManagerImpl> managers = new ArrayList<BeanManagerImpl>(Container.instance(contextId).beanDeploymentArchives().values());
                    Collections.sort(managers, BeanManagers.ID_COMPARATOR);
                    beanManager = managers.get(0);
                }
            }
            // servlet containers may not be able to inject fields in a servlet listener
            if (beanManager == null) {
                beanManager = BeanManagerProxy.unwrap(CDI.current().getBeanManager());
            }
        }
    }
    if (!getSessionContext().isActive()) {
        HttpSessionDestructionContext context = getHttpSessionDestructionContext();
        context.associate(event.getSession());
        context.activate();
    }
}
Also used : BeanManagerImpl(org.jboss.weld.manager.BeanManagerImpl) HttpSessionDestructionContext(org.jboss.weld.module.web.context.http.HttpSessionDestructionContext) ArrayList(java.util.ArrayList) ServletContext(javax.servlet.ServletContext)

Aggregations

HttpSessionDestructionContext (org.jboss.weld.module.web.context.http.HttpSessionDestructionContext)3 Annotation (java.lang.annotation.Annotation)1 ArrayList (java.util.ArrayList)1 ServletContext (javax.servlet.ServletContext)1 HttpConversationContext (org.jboss.weld.context.http.HttpConversationContext)1 HttpRequestContext (org.jboss.weld.context.http.HttpRequestContext)1 HttpSessionContext (org.jboss.weld.context.http.HttpSessionContext)1 BeanManagerImpl (org.jboss.weld.manager.BeanManagerImpl)1 HttpRequestContextImpl (org.jboss.weld.module.web.context.http.HttpRequestContextImpl)1 HttpSessionContextImpl (org.jboss.weld.module.web.context.http.HttpSessionContextImpl)1 LazyHttpConversationContextImpl (org.jboss.weld.module.web.context.http.LazyHttpConversationContextImpl)1 BeanIdentifierIndex (org.jboss.weld.serialization.BeanIdentifierIndex)1