|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager org.apache.openjpa.datacache.AbstractQueryCache org.apache.openjpa.datacache.ConcurrentQueryCache
public class ConcurrentQueryCache
A QueryCache
implementation that is optimized for concurrent
access. When the cache fill up, values to remove from the cache are chosen
randomly. Due to race conditions, it is possible that a get call might not
retur a cached instance if that instance is being transferred between
internal datastructures.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.apache.openjpa.datacache.AbstractQueryCache |
---|
AbstractQueryCache.EvictPolicy |
Field Summary |
---|
Fields inherited from class org.apache.openjpa.datacache.AbstractQueryCache |
---|
conf, entityTimestampMap, evictPolicy, log |
Fields inherited from class org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager |
---|
_listeners |
Constructor Summary | |
---|---|
ConcurrentQueryCache()
|
Method Summary | |
---|---|
protected void |
clearInternal()
Clear the cache. |
CacheMap |
getCacheMap()
Returns the underlying CacheMap that this cache is using. |
int |
getCacheSize()
Returns the maximum number of unpinned objects to keep hard references to. |
AbstractQueryCache.EvictPolicy |
getEvictPolicy()
Returns the eviction policy of the query cache |
protected QueryResult |
getInternal(QueryKey qk)
Return the list for the given key. |
int |
getSoftReferenceSize()
Returns the maximum number of unpinned objects to keep soft references to. |
void |
initialize(DataCacheManager mgr)
Initialize any resources associated with the given DataCacheManager . |
protected Collection |
keySet()
Return a threadsafe view of the keys in this cache. |
protected CacheMap |
newCacheMap()
Return the map to use as an internal cache. |
protected boolean |
pinInternal(QueryKey qk)
Pin an object to the cache. |
protected QueryResult |
putInternal(QueryKey qk,
QueryResult result)
Add the given result to the cache, returning the old result under the given key. |
protected QueryResult |
removeInternal(QueryKey qk)
Remove the result under the given key from the cache. |
void |
setCacheSize(int size)
Sets the maximum number of unpinned objects to keep hard references to. |
void |
setSoftReferenceSize(int size)
Sets the maximum number of unpinned objects to keep soft references to. |
protected boolean |
unpinInternal(QueryKey qk)
Unpin an object from the cache. |
void |
writeLock()
Obtain a write lock on the cache. |
void |
writeUnlock()
Release the write lock on the cache. |
Methods inherited from class org.apache.openjpa.datacache.AbstractQueryCache |
---|
addTypesChangedListener, afterCommit, clear, close, close, endConfiguration, fireEvent, get, getAllEntityTimestamp, isClosed, newListenerCollection, onTypesChanged, pin, put, remove, removeAllInternal, removeTypesChangedListener, setConfiguration, setEvictPolicy, startConfiguration, unpin, updateEntityTimestamp |
Methods inherited from class org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager |
---|
addListener, fireEvent, getListeners, hasListener, hasListeners, isFailFast, removeListener, setFailFast |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.apache.openjpa.event.RemoteCommitListener |
---|
afterCommit, close |
Constructor Detail |
---|
public ConcurrentQueryCache()
Method Detail |
---|
public CacheMap getCacheMap()
CacheMap
that this cache is using.
This is not an unmodifiable view on the map, so care should be taken
with this reference. Implementations should probably not modify the
contents of the cache, but should only use this reference
to obtain cache metrics. Additionally, this map may contain
expired data. Removal of timed-out data is done in a lazy
fashion, so the actual size of the map may be greater than the
number of non-expired query results in cache.
public int getCacheSize()
public void setCacheSize(int size)
size
, then this method will result in the cache
flushing old values.
public int getSoftReferenceSize()
-1
.
public void setSoftReferenceSize(int size)
size
, then this method will result in the cache
flushing values.
public void initialize(DataCacheManager mgr)
QueryCache
DataCacheManager
.
initialize
in interface QueryCache
initialize
in class AbstractQueryCache
public void writeLock()
QueryCache
writeLock
in interface QueryCache
public void writeUnlock()
QueryCache
writeUnlock
in interface QueryCache
protected CacheMap newCacheMap()
protected QueryResult getInternal(QueryKey qk)
AbstractQueryCache
getInternal
in class AbstractQueryCache
protected QueryResult putInternal(QueryKey qk, QueryResult result)
AbstractQueryCache
putInternal
in class AbstractQueryCache
protected QueryResult removeInternal(QueryKey qk)
AbstractQueryCache
removeInternal
in class AbstractQueryCache
protected void clearInternal()
AbstractQueryCache
clearInternal
in class AbstractQueryCache
protected boolean pinInternal(QueryKey qk)
AbstractQueryCache
pinInternal
in class AbstractQueryCache
protected boolean unpinInternal(QueryKey qk)
AbstractQueryCache
unpinInternal
in class AbstractQueryCache
protected Collection keySet()
AbstractQueryCache
keySet
in class AbstractQueryCache
public AbstractQueryCache.EvictPolicy getEvictPolicy()
getEvictPolicy
in class AbstractQueryCache
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |