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) {