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(); } }