You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2013/03/07 16:50:38 UTC

svn commit: r1453928 - /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/OpenJPAId.java

Author: curtisr7
Date: Thu Mar  7 15:50:36 2013
New Revision: 1453928

URL: http://svn.apache.org/r1453928
Log:
OPENJPA-2348: Revert prior commit.

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/OpenJPAId.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/OpenJPAId.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/OpenJPAId.java?rev=1453928&r1=1453927&r2=1453928&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/OpenJPAId.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/OpenJPAId.java Thu Mar  7 15:50:36 2013
@@ -29,17 +29,16 @@ import org.apache.openjpa.lib.util.concu
  * @author Steve Kim
  */
 @SuppressWarnings("serial")
-public abstract class OpenJPAId implements Comparable, Serializable {
-    
+public abstract class OpenJPAId
+    implements Comparable, Serializable {
     public static final char TYPE_VALUE_SEP = '-';
     
     // cache the types' generated hash codes
     private static ConcurrentReferenceHashMap _typeCache =
         new ConcurrentReferenceHashMap(ReferenceMap.WEAK, ReferenceMap.HARD);
 
-    protected Class<?> type;
+    protected Class type;
     protected boolean subs = true;
-    private int _hc = -1;
 
     // type hash is based on the least-derived non-object class so that
     // user-given ids with non-exact types match ids with exact types
@@ -107,27 +106,22 @@ public abstract class OpenJPAId implemen
      * so that it doesn't have to be generated each time.
      */
     public int hashCode() {
-        if (_hc == -1) {
-            if (_typeHash == 0 && type != null) {
-                Integer typeHashInt = (Integer) _typeCache.get(type);
-                if (typeHashInt == null) {
-                    Class base = type;
-                    Class superclass = base.getSuperclass();
-                    while (superclass != null && superclass != Object.class) {
-                        base = base.getSuperclass();
-                        superclass = base.getSuperclass();
-                    }
-                    _typeHash = base.getName().hashCode();
-                    _typeCache.put(type, Integer.valueOf(_typeHash));
-                } else {
-                    _typeHash = typeHashInt.intValue();
+        if (_typeHash == 0) {
+            Integer typeHashInt = (Integer) _typeCache.get(type);
+            if (typeHashInt == null) {
+                Class base = type;
+                Class superclass = base.getSuperclass();
+                while (superclass != null && superclass != Object.class) {
+                    base = base.getSuperclass();
+                    superclass = base.getSuperclass();
                 }
-                _hc = _typeHash ^ idHash();
+                _typeHash = base.getName().hashCode();
+                _typeCache.put(type, Integer.valueOf(_typeHash));
             } else {
-                _hc = idHash();
+                _typeHash = typeHashInt.intValue();
             }
         }
-        return _hc;
+        return _typeHash ^ idHash();
     }
 
     public boolean equals(Object o) {