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