@Override public void init(FilterConfig filterConfig) throws ServletException { this.conversationContextActivator = new ConversationContextActivator(manager, false); filterConfig.getServletContext().setAttribute(CONVERSATION_FILTER_REGISTERED, Boolean.TRUE); contextActivationFilter = ServletUtils.getContextActivationFilter(manager, filterConfig.getServletContext()); }
protected void activateConversationContext(HttpServletRequest request) { HttpConversationContext conversationContext = httpConversationContext(); /* * Don't try to reactivate the ConversationContext if we have already activated it for this request WELD-877 */ if (!isContextActivatedInRequest(request)) { setContextActivatedInRequest(request); activate(conversationContext, request); } else { /* * We may have previously been associated with a ConversationContext, but the reference to that context may have been lost during a Servlet forward * WELD-877 */ conversationContext.dissociate(request); conversationContext.associate(request); activate(conversationContext, request); } }
public void startConversationContext(HttpServletRequest request) { associateConversationContext(request); activateConversationContext(request); }
protected void deactivateConversationContext(HttpServletRequest request) { try { ConversationContext conversationContext = httpConversationContext(); if (conversationContext.isActive()) { processDestructionQueue(request); return; conversationDestroyedEvent.fire(request); processDestructionQueue(request); ServletLogger.LOG.unableToDeactivateContext(httpConversationContext(), request); ServletLogger.LOG.catchingDebug(e);
conversationContextActivator.deactivateConversationContext(request); conversationContextActivator.disassociateConversationContext(request);
public void sessionCreated(HttpSession session) { HttpConversationContext httpConversationContext = httpConversationContext(); if (httpConversationContext instanceof AbstractConversationContext) { AbstractConversationContext<?, ?> abstractConversationContext = (AbstractConversationContext<?, ?>) httpConversationContext; abstractConversationContext.sessionCreated(); } }
@Override protected void checkContextInitialized() { if (!isInitialized()) { HttpServletRequest request = getRequest(); String cid = ConversationContextActivator.determineConversationId(request, getParameterName()); initialize(cid); if (cid == null) { // transient conversation Consumer<HttpServletRequest> callback = transientConversationInitializationCallback.get(); if (callback != null) { callback.accept(request); } } } } }
public void stopConversationContext(HttpServletRequest request) { deactivateConversationContext(request); }
/** * If needed, destroy the remaining conversation contexts after an HTTP session was invalidated within the current request. * * @param request */ private void processDestructionQueue(HttpServletRequest request) { Object contextsAttribute = request.getAttribute(DESTRUCTION_QUEUE_ATTRIBUTE_NAME); if (contextsAttribute instanceof Map) { Map<String, List<ContextualInstance<?>>> contexts = cast(contextsAttribute); synchronized (contexts) { FastEvent<String> beforeDestroyedEvent = FastEvent.of(String.class, beanManager, BeforeDestroyed.Literal.CONVERSATION); FastEvent<String> destroyedEvent = FastEvent.of(String.class, beanManager, Destroyed.Literal.CONVERSATION); for (Iterator<Entry<String, List<ContextualInstance<?>>>> iterator = contexts.entrySet().iterator(); iterator.hasNext();) { Entry<String, List<ContextualInstance<?>>> entry = iterator.next(); beforeDestroyedEvent.fire(entry.getKey()); for (ContextualInstance<?> contextualInstance : entry.getValue()) { destroyContextualInstance(contextualInstance); } // Note that for the attached/current conversation we fire the destroyed event twice because we can't reliably identify such a conversation destroyedEvent.fire(entry.getKey()); iterator.remove(); } } } }
protected void deactivateConversationContext(HttpServletRequest request) { try { ConversationContext conversationContext = httpConversationContext(); if (conversationContext.isActive()) { processDestructionQueue(request); return; conversationDestroyedEvent.fire(request); processDestructionQueue(request); ServletLogger.LOG.unableToDeactivateContext(httpConversationContext(), request); ServletLogger.LOG.catchingDebug(e);
conversationContextActivator.deactivateConversationContext(request); conversationContextActivator.disassociateConversationContext(request);
public void sessionCreated(HttpSession session) { HttpConversationContext httpConversationContext = httpConversationContext(); if (httpConversationContext instanceof AbstractConversationContext) { AbstractConversationContext<?, ?> abstractConversationContext = (AbstractConversationContext<?, ?>) httpConversationContext; abstractConversationContext.sessionCreated(); } }
@Override protected void checkContextInitialized() { if (!isInitialized()) { HttpServletRequest request = getRequest(); String cid = ConversationContextActivator.determineConversationId(request, getParameterName()); initialize(cid); if (cid == null) { // transient conversation Consumer<HttpServletRequest> callback = transientConversationInitializationCallback.get(); if (callback != null) { callback.accept(request); } } } } }
public void stopConversationContext(HttpServletRequest request) { deactivateConversationContext(request); }
/** * If needed, destroy the remaining conversation contexts after an HTTP session was invalidated within the current request. * * @param request */ private void processDestructionQueue(HttpServletRequest request) { Object contextsAttribute = request.getAttribute(DESTRUCTION_QUEUE_ATTRIBUTE_NAME); if (contextsAttribute instanceof Map) { Map<String, List<ContextualInstance<?>>> contexts = cast(contextsAttribute); synchronized (contexts) { FastEvent<String> beforeDestroyedEvent = FastEvent.of(String.class, beanManager, BeforeDestroyed.Literal.CONVERSATION); FastEvent<String> destroyedEvent = FastEvent.of(String.class, beanManager, Destroyed.Literal.CONVERSATION); for (Iterator<Entry<String, List<ContextualInstance<?>>>> iterator = contexts.entrySet().iterator(); iterator.hasNext();) { Entry<String, List<ContextualInstance<?>>> entry = iterator.next(); beforeDestroyedEvent.fire(entry.getKey()); for (ContextualInstance<?> contextualInstance : entry.getValue()) { destroyContextualInstance(contextualInstance); } // Note that for the attached/current conversation we fire the destroyed event twice because we can't reliably identify such a conversation destroyedEvent.fire(entry.getKey()); iterator.remove(); } } } }
protected void activateConversationContext(HttpServletRequest request) { HttpConversationContext conversationContext = httpConversationContext(); /* * Don't try to reactivate the ConversationContext if we have already activated it for this request WELD-877 */ if (!isContextActivatedInRequest(request)) { setContextActivatedInRequest(request); activate(conversationContext, request); } else { /* * We may have previously been associated with a ConversationContext, but the reference to that context may have been lost during a Servlet forward * WELD-877 */ conversationContext.dissociate(request); conversationContext.associate(request); activate(conversationContext, request); } }
public void startConversationContext(HttpServletRequest request) { associateConversationContext(request); activateConversationContext(request); }
protected void deactivateConversationContext(HttpServletRequest request) { try { ConversationContext conversationContext = httpConversationContext(); if (conversationContext.isActive()) { processDestructionQueue(request); return; conversationDestroyedEvent.fire(request); processDestructionQueue(request); ServletLogger.LOG.unableToDeactivateContext(httpConversationContext(), request); ServletLogger.LOG.catchingDebug(e);
conversationContextActivator.deactivateConversationContext(request); conversationContextActivator.disassociateConversationContext(request);
public void sessionCreated(HttpSession session) { HttpConversationContext httpConversationContext = httpConversationContext(); if (httpConversationContext instanceof AbstractConversationContext) { AbstractConversationContext<?, ?> abstractConversationContext = (AbstractConversationContext<?, ?>) httpConversationContext; abstractConversationContext.sessionCreated(); } }