You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2015/05/18 23:10:34 UTC

svn commit: r1680101 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context: AbstractContext.java RequestContext.java

Author: struberg
Date: Mon May 18 21:10:33 2015
New Revision: 1680101

URL: http://svn.apache.org/r1680101
Log:
fix BeanBag handling in concurrent cases and RequestContext

RequestContext doesn't need to be a ConcurrentHashMap.

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java?rev=1680101&r1=1680100&r2=1680101&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java Mon May 18 21:10:33 2015
@@ -63,23 +63,24 @@ public abstract class AbstractContext im
     protected Class<? extends Annotation> scopeType;
 
     @SuppressWarnings("unchecked")
-    private <T> void createContextualBag(Contextual<T> contextual, CreationalContext<T> creationalContext)
+    private <T> BeanInstanceBag<T> createContextualBag(Contextual<T> contextual, CreationalContext<T> creationalContext)
     {
         BeanInstanceBag<T> bag = new BeanInstanceBag<T>(creationalContext);
         
         if(componentInstanceMap instanceof ConcurrentMap)
         {
-            T exist = (T) ((ConcurrentMap) componentInstanceMap).putIfAbsent(contextual, bag);
-            //no instance
-            if(exist == null)
+            BeanInstanceBag<?> existingBag = ((ConcurrentMap<Contextual<?>, BeanInstanceBag<?>>) componentInstanceMap).putIfAbsent(contextual, bag);
+            if (existingBag != null)
             {
-                componentInstanceMap.put(contextual, bag);
+                bag = (BeanInstanceBag<T>) existingBag;
             }
         }
         else
         {
             componentInstanceMap.put(contextual, bag);
-        }                
+        }
+
+        return bag;
     }
     
     /**
@@ -136,8 +137,7 @@ public abstract class AbstractContext im
         BeanInstanceBag<T> bag = (BeanInstanceBag<T>)componentInstanceMap.get(contextual);
         if(bag == null)
         {
-            createContextualBag(contextual, creationalContext);
-            bag = (BeanInstanceBag<T>)componentInstanceMap.get(contextual);
+            bag = createContextualBag(contextual, creationalContext);
         }
 
         //Look for instance

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java?rev=1680101&r1=1680100&r2=1680101&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java Mon May 18 21:10:33 2015
@@ -18,7 +18,7 @@
  */
 package org.apache.webbeans.context;
 
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.HashMap;
 
 import javax.enterprise.context.RequestScoped;
 import javax.enterprise.context.spi.Contextual;
@@ -50,7 +50,7 @@ public class RequestContext extends Abst
     @Override
     public void setComponentInstanceMap()
     {
-        componentInstanceMap = new ConcurrentHashMap<Contextual<?>, BeanInstanceBag<?>>();
+        componentInstanceMap = new HashMap<Contextual<?>, BeanInstanceBag<?>>();
     }
 
     /**