Author: simonetripodi
Date: Sun Jan 29 13:55:41 2012
New Revision: 1237291

URL: http://svn.apache.org/viewvc?rev=1237291&view=rev
Log:
a single lock level is more than enough

Modified:
    
commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/AccessibleObjectsRegistry.java

Modified: 
commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/AccessibleObjectsRegistry.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/AccessibleObjectsRegistry.java?rev=1237291&r1=1237290&r2=1237291&view=diff
==============================================================================
--- 
commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/AccessibleObjectsRegistry.java
 (original)
+++ 
commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/AccessibleObjectsRegistry.java
 Sun Jan 29 13:55:41 2012
@@ -21,7 +21,8 @@ import static java.lang.System.getSecuri
 import static java.lang.reflect.Modifier.isPublic;
 import static java.security.AccessController.doPrivileged;
 import static org.apache.commons.beanutils2.Assertions.checkArgument;
-import static org.apache.commons.beanutils2.TypeUtils.*;
+import static org.apache.commons.beanutils2.TypeUtils.getPrimitiveWrapper;
+import static org.apache.commons.beanutils2.TypeUtils.isAssignmentCompatible;
 
 import java.lang.ref.Reference;
 import java.lang.ref.WeakReference;
@@ -34,8 +35,7 @@ import java.util.Arrays;
 import java.util.Map;
 import java.util.WeakHashMap;
 import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.concurrent.locks.ReentrantLock;
 
 abstract class AccessibleObjectsRegistry<AO extends AccessibleObject>
 {
@@ -54,8 +54,6 @@ abstract class AccessibleObjectsRegistry
         return METHODS_REGISTRY;
     }
 
-    private final ReadWriteLock lock = new ReentrantReadWriteLock();
-
     private final Map<AccessibleObjectDescriptor, WeakReference<AO>> cache =
                     new WeakHashMap<AccessibleObjectDescriptor, 
WeakReference<AO>>();
 
@@ -73,8 +71,8 @@ abstract class AccessibleObjectsRegistry
     {
         AccessibleObjectDescriptor key = new AccessibleObjectDescriptor( 
exact, type, methodName, parameterTypes );
 
-        Lock readLock = this.lock.readLock();
-        readLock.lock();
+        final Lock lock = new ReentrantLock();
+        lock.lock();
         try
         {
             Reference<AO> methodReference = cache.get( key );
@@ -82,16 +80,7 @@ abstract class AccessibleObjectsRegistry
             {
                 return methodReference.get();
             }
-        }
-        finally
-        {
-            readLock.unlock();
-        }
 
-        Lock writeLock = this.lock.writeLock();
-        writeLock.lock();
-        try
-        {
             AO accessibleObject = resolve( exact, type, methodName, 
parameterTypes );
             if ( accessibleObject != null )
             {
@@ -102,7 +91,7 @@ abstract class AccessibleObjectsRegistry
         }
         finally
         {
-            writeLock.unlock();
+            lock.unlock();
         }
     }
 


Reply via email to