Author: curtisr7
Date: Thu Nov 4 17:58:09 2010
New Revision: 1031110
URL: http://svn.apache.org/viewvc?rev=1031110&view=rev
Log:
OPENJPA-1872: Optimize CacheMap get(..) for non-pinned usage.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java?rev=1031110&r1=1031109&r2=1031110&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/CacheMap.java
Thu Nov 4 17:58:09 2010
@@ -46,7 +46,7 @@ import java.util.concurrent.locks.Reentr
*/
public class CacheMap
implements Map {
-
+
/**
* The map for non-expired and non-pinned references.
*/
@@ -350,18 +350,19 @@ public class CacheMap
public Object get(Object key) {
readLock();
try {
- Object val = pinnedMap.get(key);
- if (val != null)
- return val;
-
- val = cacheMap.get(key);
+ // Check the main map first
+ Object val = cacheMap.get(key);
if (val == null) {
// if we find the key in the soft map, move it back into
// the primary map
val = softMap.get(key);
- if (val != null)
+ if (val != null){
put(key, val);
+ }else{
+ val = pinnedMap.get(key);
+ }
}
+
return val;
} finally {
readUnlock();
@@ -501,9 +502,7 @@ public class CacheMap
public boolean containsKey(Object key) {
readLock();
try {
- return pinnedMap.get(key) != null
- || cacheMap.containsKey(key)
- || softMap.containsKey(key);
+ return cacheMap.containsKey(key) || pinnedMap.get(key) != null ||
softMap.containsKey(key);
} finally {
readUnlock();
}
@@ -512,9 +511,7 @@ public class CacheMap
public boolean containsValue(Object val) {
readLock();
try {
- return pinnedMap.containsValue(val)
- || cacheMap.containsValue(val)
- || softMap.containsValue(val);
+ return cacheMap.containsValue(val) || pinnedMap.containsValue(val)
|| softMap.containsValue(val);
} finally {
readUnlock();
}
@@ -535,8 +532,7 @@ public class CacheMap
public String toString() {
readLock();
try {
- return "CacheMap:" + cacheMap.toString() + "::"
- + softMap.toString();
+ return "CacheMap:" + cacheMap.toString() + "::" +
softMap.toString();
} finally {
readUnlock();
}