You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/04/28 20:25:37 UTC

svn commit: r939042 - /openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java

Author: gerdogdu
Date: Wed Apr 28 18:25:36 2010
New Revision: 939042

URL: http://svn.apache.org/viewvc?rev=939042&view=rev
Log:
update threadlocal usage of application and singleton contexts

Modified:
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java?rev=939042&r1=939041&r2=939042&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java Wed Apr 28 18:25:36 2010
@@ -108,7 +108,10 @@ public class WebContextsService extends 
     @Override
     public void init(Object initializeObject)
     {        
+        //Start application context
         startContext(ApplicationScoped.class, initializeObject);
+        
+        //Start signelton context
         startContext(Singleton.class, initializeObject);
     }    
     
@@ -301,7 +304,10 @@ public class WebContextsService extends 
                     initSessionContext(session);    
                 }
                             
-                initApplicationContext(event.getServletContext());                
+                //Init thread local application context
+                initApplicationContext(event.getServletContext());
+                
+                //Init thread local sigleton context
                 initSingletonContext(event.getServletContext());
             }            
         }
@@ -313,17 +319,26 @@ public class WebContextsService extends 
      */
     private void destroyRequestContext(ServletRequestEvent request)
     {
-        if (requestContext != null)
-        {
-            RequestContext context = getRequestContext();
+        //Get context
+        RequestContext context = getRequestContext();
 
-            if (context != null)
-            {
-                context.destroy();
-            }
-            
-            requestContext.set(null);            
+        //Destroy context
+        if (context != null)
+        {
+            context.destroy();
         }
+        
+        //Clear thread locals
+        requestContext.set(null);
+        requestContext.remove();
+        
+        //Also clear application and singleton context
+        applicationContext.set(null);
+        applicationContext.remove();
+        
+        //Singleton context
+        singletonContext.set(null);
+        singletonContext.remove();
     }
 
     /**
@@ -333,16 +348,20 @@ public class WebContextsService extends 
     private void initSessionContext(HttpSession session)
     {
         String sessionId = session.getId();
+        //Current context
         SessionContext currentSessionContext = sessionCtxManager.getSessionContextWithSessionId(sessionId);
-
+        
+        //No current context
         if (currentSessionContext == null)
         {
             currentSessionContext = new SessionContext();
             sessionCtxManager.addNewSessionContext(sessionId, currentSessionContext);
         }
 
+        //Activate
         currentSessionContext.setActive(true);
-
+        
+        //Set thread local
         sessionContext.set(currentSessionContext);
     }
 
@@ -353,19 +372,20 @@ public class WebContextsService extends 
      */
     private void destroySessionContext(HttpSession session)
     {
-        if (sessionContext != null)
+        //Get current session context
+        SessionContext context = getSessionContext();
+        
+        //Destroy context
+        if (context != null)
         {
-            SessionContext context = getSessionContext();
-
-            if (context != null)
-            {
-                context.destroy();
-            }
-
-            sessionContext.set(null);
-
+            context.destroy();
         }
 
+        //Clear thread locals
+        sessionContext.set(null);
+        sessionContext.remove();
+        
+        //Remove session from manager
         sessionCtxManager.destroySessionContextWithSessionId(session.getId());
 
     }
@@ -394,7 +414,6 @@ public class WebContextsService extends 
             }
             
             applicationContext.set(currentApplicationContext);
-   
         }
     }
 
@@ -407,16 +426,12 @@ public class WebContextsService extends 
     {
         //look for thread local
         //this can be set by initRequestContext
-        ApplicationContext context = applicationContext.get();
+        ApplicationContext context = null;
         
-        //no context set
-        //look for saved application context
-        if(context == null)
+        //Looking the context from saved context
+        if(servletContext != null)
         {
-            if(servletContext != null)
-            {
-                context = currentApplicationContexts.get(servletContext);   
-            }
+            context = currentApplicationContexts.get(servletContext);   
         }
         
         //Destroy context
@@ -433,6 +448,7 @@ public class WebContextsService extends 
         
         //destroy all sessions
         sessionCtxManager.destroyAllSessions();
+        
         //destroy all conversations
         conversationManager.destroyAllConversations();
     }
@@ -470,16 +486,12 @@ public class WebContextsService extends 
      */
     private void destroySingletonContext(ServletContext servletContext)
     {
-        SingletonContext context = getSingletonContext();
-        
-        //no context set by initRequestContext
-        if(context == null)
+        SingletonContext context = null;
+
+        //look for saved context
+        if(servletContext != null)
         {
-            //look for saved context
-            if(servletContext != null)
-            {
-                context = currentSingletonContexts.get(servletContext);
-            }
+            context = currentSingletonContexts.get(servletContext);
         }
         
         //context is not null
@@ -529,17 +541,15 @@ public class WebContextsService extends 
      */
     private void destroyConversationContext()
     {
-        if (conversationContext != null)
-        {
-            ConversationContext context = getConversationContext();
+        ConversationContext context = getConversationContext();
 
-            if (context != null)
-            {
-                context.destroy();
-            }
-
-            conversationContext.set(null);
+        if (context != null)
+        {
+            context.destroy();
         }
+
+        conversationContext.set(null);
+        conversationContext.remove();
     }
 
     /**