[jboss-cvs] JBossAS SVN: r70740 - in projects/aop/trunk/aop/src/main/org/jboss/aop: annotation and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 11 11:10:47 EDT 2008


Author: kabir.khan at jboss.com
Date: 2008-03-11 11:10:47 -0400 (Tue, 11 Mar 2008)
New Revision: 70740

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java
Log:
[JBAOP-541] Don't use ReadWrite locks when initialising the lazy collections

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java	2008-03-11 15:10:16 UTC (rev 70739)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java	2008-03-11 15:10:47 UTC (rev 70740)
@@ -37,10 +37,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.WeakHashMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import javassist.CtClass;
 import javassist.CtConstructor;
@@ -125,7 +123,7 @@
    }
 
    /** Read/Write lock to be used when lazy creating the collections */
-   protected ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+   protected Object lazyCollectionLock = new Object();
 
    protected Set<AdviceBinding> adviceBindings = new HashSet<AdviceBinding>();
    protected volatile ArrayList<InterfaceIntroduction> interfaceIntroductions = UnmodifiableEmptyCollections.EMPTY_ARRAYLIST;
@@ -1319,38 +1317,17 @@
       }
    }
    
-   /**
-    * Lock for write
-    */
-   protected void lockWrite()
-   {
-      lock.writeLock().lock();
-   }
-
-   /**
-    * Unlock for write
-    */
-   protected void unlockWrite()
-   {
-      lock.writeLock().unlock();
-   }
-
    protected void initInterfaceIntroductionsList()
    {
       if (interfaceIntroductions == UnmodifiableEmptyCollections.EMPTY_ARRAYLIST)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (interfaceIntroductions == UnmodifiableEmptyCollections.EMPTY_ARRAYLIST)
             {
                interfaceIntroductions = new ArrayList<InterfaceIntroduction>();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    
@@ -1358,18 +1335,13 @@
    {
       if (classMetaDataBindings == UnmodifiableEmptyCollections.EMPTY_ARRAYLIST)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (classMetaDataBindings == UnmodifiableEmptyCollections.EMPTY_ARRAYLIST)
             {
                classMetaDataBindings = new ArrayList();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    
@@ -1377,18 +1349,13 @@
    {
       if (perInstanceAspectDefinitions == UnmodifiableEmptyCollections.EMPTY_COPYONWRITE_ARRAYSET)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (perInstanceAspectDefinitions == UnmodifiableEmptyCollections.EMPTY_COPYONWRITE_ARRAYSET)
             {
                perInstanceAspectDefinitions = new CopyOnWriteArraySet();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    
@@ -1396,18 +1363,13 @@
    {
       if (perInstanceJoinpointAspectDefinitions == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (perInstanceJoinpointAspectDefinitions == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                perInstanceJoinpointAspectDefinitions = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -1415,18 +1377,13 @@
    {
       if (advisedMethods == UnmodifiableEmptyCollections.EMPTY_TLONG_OBJECT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (advisedMethods == UnmodifiableEmptyCollections.EMPTY_TLONG_OBJECT_HASHMAP)
             {
                advisedMethods = new TLongObjectHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 }
\ No newline at end of file

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java	2008-03-11 15:10:16 UTC (rev 70739)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java	2008-03-11 15:10:47 UTC (rev 70740)
@@ -108,8 +108,8 @@
 {
    private static final Logger logger = AOPLogger.getLogger(AspectManager.class);
 
-   /** Read/Write lock to be used when lazy creating the collections */
-   ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+   /** Lock to be used when lazy creating the collections */
+   Object lazyCollectionLock = new Object();
 
    /** Advisors registered with this manager/domain */
    protected final WeakHashMap advisors = new WeakHashMap();
@@ -2193,38 +2193,17 @@
 //      for (int i = 0 ; i < indent ; i++) System.out.print(" ");
 //   }
 
-   /**
-    * Lock for write
-    */
-   protected void lockWrite()
-   {
-      lock.writeLock().lock();
-   }
-
-   /**
-    * Unlock for write
-    */
-   protected void unlockWrite()
-   {
-      lock.writeLock().unlock();
-   }
-
    protected void initSubDomainsByNameMap()
    {
       if (subDomainsByName == UnmodifiableEmptyCollections.EMPTY_WEAK_VALUE_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (subDomainsByName == UnmodifiableEmptyCollections.EMPTY_WEAK_VALUE_HASHMAP)
             {
                subDomainsByName = new WeakValueHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2232,18 +2211,13 @@
    {
       if (subscribedSubDomains == UnmodifiableEmptyCollections.EMPTY_WEAK_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (subscribedSubDomains == UnmodifiableEmptyCollections.EMPTY_WEAK_HASHMAP)
             {
                subscribedSubDomains = new WeakHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2251,18 +2225,13 @@
    {
       if (subscribedSubDomainsQueue == UnmodifiableEmptyCollections.EMPTY_WEAK_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (subscribedSubDomainsQueue == UnmodifiableEmptyCollections.EMPTY_WEAK_HASHMAP)
             {
                subscribedSubDomainsQueue = new WeakHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2270,18 +2239,13 @@
    {
       if (interfaceIntroductions == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (interfaceIntroductions == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                interfaceIntroductions = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2289,18 +2253,13 @@
    {
       if (arrayReplacements == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (arrayReplacements == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                arrayReplacements = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2308,18 +2267,13 @@
    {
       if (arrayBindings == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (arrayBindings == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                arrayBindings = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2328,18 +2282,13 @@
    {
       if (annotationIntroductions == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (annotationIntroductions == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                annotationIntroductions = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2347,18 +2296,13 @@
    {
       if (annotationOverrides == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (annotationOverrides == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                annotationOverrides = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2366,18 +2310,13 @@
    {
       if (bindings == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (bindings == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                bindings = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2385,18 +2324,13 @@
    {
       if (typedefs == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (typedefs == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                typedefs = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2404,18 +2338,13 @@
    {
       if (interceptorFactories == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (interceptorFactories == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
             {
                interceptorFactories = new HashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2423,18 +2352,13 @@
    {
       if (classMetaDataLoaders == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (classMetaDataLoaders == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
             {
                classMetaDataLoaders = new HashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2442,18 +2366,13 @@
    {
       if (interceptorStacks == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (interceptorStacks == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
             {
                interceptorStacks = new HashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2462,18 +2381,13 @@
    {
       if (declares == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (declares == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
             {
                declares = new HashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2481,18 +2395,13 @@
    {
       if (cflowStacks == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (cflowStacks == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                cflowStacks = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2500,18 +2409,13 @@
    {
       if (dynamicCFlows == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (dynamicCFlows == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                dynamicCFlows = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2519,18 +2423,13 @@
    {
       if (aspectDefinitions == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (aspectDefinitions == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                aspectDefinitions = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2538,18 +2437,13 @@
    {
       if (perVMAspects == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (perVMAspects == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                perVMAspects = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2557,18 +2451,13 @@
    {
       if (pointcuts == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (pointcuts == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                pointcuts = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2576,18 +2465,13 @@
    {
       if (pointcutInfos == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (pointcutInfos == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                pointcutInfos = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2596,36 +2480,26 @@
    {
       if (classMetaData == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (classMetaData == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                classMetaData = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    protected void initContainersMap()
    {
       if (containers == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (containers == UnmodifiableEmptyCollections.EMPTY_HASHMAP)
             {
                containers = new HashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -2633,18 +2507,13 @@
    {
       if (precedenceDefs == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (precedenceDefs == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
             {
                precedenceDefs = new LinkedHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java	2008-03-11 15:10:16 UTC (rev 70739)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java	2008-03-11 15:10:47 UTC (rev 70740)
@@ -1808,18 +1808,13 @@
    {
       if (methodByMethodData == null)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (methodByMethodData == null)
             {
                methodByMethodData = new MethodByMethodData();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
       return methodByMethodData;
    }
@@ -1828,18 +1823,13 @@
    {
       if (conByMethodData == null)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (conByMethodData == null)
             {
                conByMethodData = new ConByMethodData();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
       return conByMethodData;
    }
@@ -2102,8 +2092,7 @@
                backrefMethodCalledByMethodBindings == UnmodifiableEmptyCollections.EMPTY_HASHMAP ||
                methodCalledByMethodInterceptors == UnmodifiableEmptyCollections.EMPTY_TLONG_OBJECT_HASHMAP)
          {
-            lockWrite();
-            try
+            synchronized(lazyCollectionLock)
             {
                if (methodCalledByMethodBindings == UnmodifiableEmptyCollections.EMPTY_TLONG_OBJECT_HASHMAP)
                {
@@ -2118,10 +2107,6 @@
                   methodCalledByMethodInterceptors = new TLongObjectHashMap();
                }
             }
-            finally
-            {
-               unlockWrite();
-            }
          }
 
          if (System.getSecurityManager() == null)
@@ -2345,8 +2330,7 @@
                backrefConCalledByMethodBindings == UnmodifiableEmptyCollections.EMPTY_HASHMAP ||
                conCalledByMethodInterceptors == UnmodifiableEmptyCollections.EMPTY_TLONG_OBJECT_HASHMAP)
          {
-            lockWrite();
-            try
+            synchronized(lazyCollectionLock)
             {
                if (conCalledByMethodBindings == UnmodifiableEmptyCollections.EMPTY_TLONG_OBJECT_HASHMAP)
                {
@@ -2361,10 +2345,6 @@
                   conCalledByMethodInterceptors = new TLongObjectHashMap();
                }
             }
-            finally
-            {
-               unlockWrite();
-            }
          }
 
          if (System.getSecurityManager() == null)

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java	2008-03-11 15:10:16 UTC (rev 70739)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java	2008-03-11 15:10:47 UTC (rev 70740)
@@ -1100,18 +1100,13 @@
    {
       if (joinPointGenerators == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (joinPointGenerators == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                joinPointGenerators = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    
@@ -1119,18 +1114,13 @@
    {
       if (fieldReadJoinPoinGenerators == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (fieldReadJoinPoinGenerators == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                fieldReadJoinPoinGenerators = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    
@@ -1138,18 +1128,13 @@
    {
       if (constructionJoinPointGenerators == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (constructionJoinPointGenerators == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                constructionJoinPointGenerators = new ConcurrentHashMap();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
    
@@ -1157,18 +1142,13 @@
    {
       if (oldInfos == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (oldInfos == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                oldInfos = new ConcurrentHashMap<Joinpoint, Interceptor[]>();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
       return oldInfos;
    }
@@ -1177,18 +1157,13 @@
    {
       if (oldFieldReadInfos == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (oldFieldReadInfos == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                oldFieldReadInfos = new ConcurrentHashMap<Joinpoint, Interceptor[]>();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
       return oldFieldReadInfos;
    }
@@ -1197,18 +1172,13 @@
    {
       if (oldConstructionInfos == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (oldConstructionInfos == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                oldConstructionInfos = new ConcurrentHashMap<Joinpoint, Interceptor[]>();
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
       return oldConstructionInfos;
    }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java	2008-03-11 15:10:16 UTC (rev 70739)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/annotation/AnnotationRepository.java	2008-03-11 15:10:47 UTC (rev 70740)
@@ -48,7 +48,7 @@
    private static final String CLASS_ANNOTATION = "CLASS";
    
    /** Read/Write lock to be used when lazy creating the collections */
-   protected ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+   protected Object lazyCollectionLock = new Object();
 
    volatile Map annotations = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
    volatile Map classAnnotations = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
@@ -267,38 +267,17 @@
       set.add(annotation);
    }
 
-   /**
-    * Lock for write
-    */
-   protected void lockWrite()
-   {
-      lock.writeLock().lock();
-   }
-
-   /**
-    * Unlock for write
-    */
-   protected void unlockWrite()
-   {
-      lock.writeLock().unlock();
-   }
-
    protected void initAnnotationsMap()
    {
       if (annotations == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (annotations == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                annotations = new ConcurrentHashMap();;
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -306,18 +285,13 @@
    {
       if (classAnnotations == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (classAnnotations == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                classAnnotations = new ConcurrentHashMap();;
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 
@@ -325,18 +299,13 @@
    {
       if (disabledAnnotations == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
       {
-         lockWrite();
-         try
+         synchronized(lazyCollectionLock)
          {
             if (disabledAnnotations == UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP)
             {
                disabledAnnotations = new ConcurrentHashMap();;
             }
          }
-         finally
-         {
-            unlockWrite();
-         }
       }
    }
 }




More information about the jboss-cvs-commits mailing list