You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2012/03/15 12:20:10 UTC

svn commit: r1300916 - in /commons/sandbox/beanutils2/trunk/src: changes/changes.xml main/java/org/apache/commons/beanutils2/AccessibleObjectsRegistry.java

Author: simonetripodi
Date: Thu Mar 15 11:20:10 2012
New Revision: 1300916

URL: http://svn.apache.org/viewvc?rev=1300916&view=rev
Log:
[SANDBOX-401] Performance improvement: store hash code of AccessibleObjectDescriptor as member variable - patch provided by Benedikt Ritter

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

Modified: commons/sandbox/beanutils2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/changes/changes.xml?rev=1300916&r1=1300915&r2=1300916&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/changes/changes.xml (original)
+++ commons/sandbox/beanutils2/trunk/src/changes/changes.xml Thu Mar 15 11:20:10 2012
@@ -23,6 +23,9 @@
   </properties>
   <body>
   <release version="0.1" date="201?-??-??" description="First release.">
+    <action dev="simonetripodi" type="add" issue="SANDBOX-401" due-to="Benedikt Ritter">
+      Performance improvement: store hash code of AccessibleObjectDescriptor as member variable
+    </action>
     <action dev="simonetripodi" type="add" issue="SANDBOX-396" due-to="Benedikt Ritter">
       Implement clone() on DefaultBeanAccessor
     </action>

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=1300916&r1=1300915&r2=1300916&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 Thu Mar 15 11:20:10 2012
@@ -28,14 +28,9 @@ import static org.apache.commons.beanuti
 
 import java.lang.ref.Reference;
 import java.lang.ref.WeakReference;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
+import java.lang.reflect.*;
 import java.security.PrivilegedAction;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.WeakHashMap;
+import java.util.*;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
@@ -501,6 +496,8 @@ abstract class AccessibleObjectsRegistry
 
         private final boolean exact;
 
+        private final int hashCode;
+
         /**
          * The sole constructor.
          *
@@ -515,11 +512,16 @@ abstract class AccessibleObjectsRegistry
             this.type = type;
             this.methodName = methodName;
             this.paramTypes = paramTypes;
+            hashCode = hashCode();
         }
 
         @Override
         public int hashCode()
         {
+            if ( hashCode != 0 )
+            {
+                return hashCode;
+            }
             final int prime = 31;
             int result = 1;
             result = prime * result + ( ( type == null ) ? 0 : type.getName().hashCode() );