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 2011/03/11 22:47:41 UTC

svn commit: r1080771 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java

Author: struberg
Date: Fri Mar 11 21:47:40 2011
New Revision: 1080771

URL: http://svn.apache.org/viewvc?rev=1080771&view=rev
Log:
OWB-530 add further synchronization

we should try to implement this via ReentrantReadWriteLock
after getting some performance data.

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java?rev=1080771&r1=1080770&r2=1080771&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java Fri Mar 11 21:47:40 2011
@@ -175,6 +175,7 @@ public class CreationalContextImpl<T> im
 
             dependentCreational.setInstance(instance);
 
+            //X TODO maybe better with ReentrantReadWriteLock?
             synchronized(this)
             {
                 if (dependentObjects == null)
@@ -208,22 +209,25 @@ public class CreationalContextImpl<T> im
             return null;
         }
 
-        List<DependentCreationalContext<?>> values = this.dependentObjects.get(ownerInstance);
-        if(values != null && !values.isEmpty())
+        //X TODO maybe better with ReentrantReadWriteLock?
+        synchronized(this)
         {
-            Iterator<DependentCreationalContext<?>> it = values.iterator();
-            while(it.hasNext())
+            List<DependentCreationalContext<?>> values = this.dependentObjects.get(ownerInstance);
+            if(values != null && !values.isEmpty())
             {
-                DependentCreationalContext<?> dc = it.next();
-                if(dc.getDependentType().equals(DependentType.INTERCEPTOR) &&
-                   dc.getContextual().equals(interceptor))
+                Iterator<DependentCreationalContext<?>> it = values.iterator();
+                while(it.hasNext())
                 {
-                    return dc.getInstance();
-                }
+                    DependentCreationalContext<?> dc = it.next();
+                    if(dc.getDependentType().equals(DependentType.INTERCEPTOR) &&
+                       dc.getContextual().equals(interceptor))
+                    {
+                        return dc.getInstance();
+                    }
 
+                }
             }
         }
-
         return null;
     }
 
@@ -270,7 +274,7 @@ public class CreationalContextImpl<T> im
         
         destroying = true;
 
-        //X synchronized(this)
+        synchronized(this)
         {
             Collection<List<DependentCreationalContext<?>>> values = this.dependentObjects.values();
             if(values != null)