[webbeans-commits] Webbeans SVN: r1383 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: servlet and 1 other directory.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Feb 2 09:02:20 EST 2009


Author: nickarls
Date: 2009-02-02 09:02:20 -0500 (Mon, 02 Feb 2009)
New Revision: 1383

Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
Log:
context destruction refactorings
destroying all conversations when session ends
interfaces for destroying all conversations


Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java	2009-02-02 13:37:02 UTC (rev 1382)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java	2009-02-02 14:02:20 UTC (rev 1383)
@@ -92,6 +92,6 @@
 
    public void setLongRunning(boolean longRunning)
    {
-      this.longRunning = true;
+      this.longRunning = longRunning;
    }
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java	2009-02-02 13:37:02 UTC (rev 1382)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java	2009-02-02 14:02:20 UTC (rev 1383)
@@ -20,4 +20,5 @@
 {
    public abstract void beginConversation(String cid);
    public abstract void endConversation();
+   public abstract void destroyAllConversations();
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java	2009-02-02 13:37:02 UTC (rev 1382)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java	2009-02-02 14:02:20 UTC (rev 1383)
@@ -118,11 +118,24 @@
       public void run()
       {
          log.trace("Conversation " + cid + " timed out and was terminated");
-         ConversationContext terminationContext = new ConversationContext();
-         terminationContext.setBeanMap(new ConversationBeanMap(session, cid));
-         terminationContext.destroy();
-         longRunningConversations.remove(cid);
+         destroyConversation(cid, session);
       }
    }
+   
+   public void destroyAllConversations()
+   {
+      for (Map.Entry<String, Future<?>> entry : longRunningConversations.entrySet()) {
+         entry.getValue().cancel(false);
+         destroyConversation(entry.getKey(), session);
+      }
+   }
 
+   private void destroyConversation(String cid, HttpSession session)
+   {
+      ConversationContext terminationContext = new ConversationContext();
+      terminationContext.setBeanMap(new ConversationBeanMap(session, cid));
+      terminationContext.destroy();
+      longRunningConversations.remove(cid);
+   }
+
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2009-02-02 13:37:02 UTC (rev 1382)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2009-02-02 14:02:20 UTC (rev 1383)
@@ -18,7 +18,6 @@
 package org.jboss.webbeans.servlet;
 
 import javax.context.Conversation;
-import javax.inject.Current;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
@@ -84,6 +83,8 @@
       SessionContext.INSTANCE.setBeanMap(new SessionBeanMap(session));
       SessionContext.INSTANCE.destroy();
       SessionContext.INSTANCE.setBeanMap(null);
+      ConversationManager conversationManager = CurrentManager.rootManager().getInstanceByType(ConversationManager.class);
+      conversationManager.destroyAllConversations();
    }
 
    /**




More information about the weld-commits mailing list