[weld-commits] Weld SVN: r5996 - in core/trunk/impl/src/main/java/org/jboss/weld: servlet and 1 other directory.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Thu Mar 4 03:34:38 EST 2010


Author: nickarls
Date: 2010-03-04 03:34:37 -0500 (Thu, 04 Mar 2010)
New Revision: 5996

Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java
   core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java
Log:
Lifecycle changes for ending of request/session/conversation when invalidating session
Forced session creation (for HttpSessionManager null product prevention)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java	2010-03-04 04:23:13 UTC (rev 5995)
+++ core/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java	2010-03-04 08:34:37 UTC (rev 5996)
@@ -22,7 +22,6 @@
  */
 package org.jboss.weld.context;
 
-import static org.jboss.weld.jsf.JsfHelper.getServletContext;
 import static org.jboss.weld.logging.Category.CONTEXT;
 import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
 import static org.jboss.weld.logging.messages.ContextMessage.APPLICATION_ENDED;
@@ -31,10 +30,7 @@
 import static org.jboss.weld.logging.messages.ContextMessage.REQUEST_STARTED;
 import static org.jboss.weld.logging.messages.ContextMessage.SESSION_ENDED;
 import static org.jboss.weld.logging.messages.ContextMessage.SESSION_RESTORED;
-import static org.jboss.weld.servlet.BeanProvider.conversationManager;
 
-import javax.faces.context.FacesContext;
-
 import org.jboss.weld.bootstrap.api.Lifecycle;
 import org.jboss.weld.bootstrap.api.Service;
 import org.jboss.weld.context.api.BeanStore;
@@ -81,7 +77,6 @@
    {
       log.trace(SESSION_ENDED, id);
       teardownContext(sessionContext);
-      conversationManager(getServletContext(FacesContext.getCurrentInstance())).teardownContext();
    }
 
    public void beginRequest(String id, BeanStore requestBeanStore)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java	2010-03-04 04:23:13 UTC (rev 5995)
+++ core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java	2010-03-04 08:34:37 UTC (rev 5996)
@@ -22,10 +22,12 @@
  */
 package org.jboss.weld.servlet;
 
+import static org.jboss.weld.jsf.JsfHelper.getServletContext;
 import static org.jboss.weld.logging.messages.ServletMessage.REQUEST_SCOPE_BEAN_STORE_MISSING;
 import static org.jboss.weld.servlet.BeanProvider.conversationManager;
 import static org.jboss.weld.servlet.BeanProvider.httpSessionManager;
 
+import javax.faces.context.FacesContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
@@ -93,11 +95,9 @@
             // at the end of the request.
             beanStore.invalidate();
             conversationManager.invalidateSession();
-            conversationManager.destroyAllConversations();
          }
          else
          {
-            conversationManager.destroyAllConversations();
             lifecycle.endSession(session.getId(), beanStore);
          }
       }
@@ -113,7 +113,6 @@
 
          lifecycle.beginRequest("endSession-" + session.getId(), mockRequest);
          BeanStore sessionBeanStore = restoreSessionContext(session);
-         conversationManager.destroyAllConversations();
          lifecycle.endSession(session.getId(), sessionBeanStore);
          lifecycle.endRequest("endSession-" + session.getId(), mockRequest);
       }
@@ -130,7 +129,7 @@
    protected BeanStore restoreSessionContext(HttpServletRequest request)
    {
       HttpPassThruSessionBeanStore sessionBeanStore = new HttpPassThruOnDemandSessionBeanStore(request);
-      HttpSession session = request.getSession(false);
+      HttpSession session = request.getSession(true);
       lifecycle.restoreSession(session == null ? "Inactive session" : session.getId(), sessionBeanStore);
       if (session != null)
       {
@@ -174,6 +173,14 @@
    {
       if (request.getAttribute(REQUEST_ATTRIBUTE_NAME) != null)
       {
+         HttpPassThruSessionBeanStore sessionBeanStore = (HttpPassThruSessionBeanStore) lifecycle.getSessionContext().getBeanStore();
+         if ((sessionBeanStore != null) && (sessionBeanStore.isInvalidated()))
+         {
+            conversationManager(request.getSession().getServletContext()).teardownContext();
+            lifecycle.endSession(request.getRequestedSessionId(), sessionBeanStore);
+         }
+         lifecycle.getSessionContext().setActive(false);
+         lifecycle.getSessionContext().setBeanStore(null);
          BeanStore beanStore = (BeanStore) request.getAttribute(REQUEST_ATTRIBUTE_NAME);
          if (beanStore == null)
          {
@@ -181,13 +188,6 @@
          }
          lifecycle.endRequest(request.getRequestURI(), beanStore);
          request.removeAttribute(REQUEST_ATTRIBUTE_NAME);
-         HttpPassThruSessionBeanStore sessionBeanStore = (HttpPassThruSessionBeanStore) lifecycle.getSessionContext().getBeanStore();
-         if ((sessionBeanStore != null) && (sessionBeanStore.isInvalidated()))
-         {
-            lifecycle.endSession(request.getRequestedSessionId(), sessionBeanStore);
-         }
-         lifecycle.getSessionContext().setActive(false);
-         lifecycle.getSessionContext().setBeanStore(null);
       }
    }
 



More information about the weld-commits mailing list