org.apache.openjpa.datacache
Class DelegatingQueryCache

java.lang.Object
  extended by org.apache.openjpa.datacache.DelegatingQueryCache
All Implemented Interfaces:
QueryCache, TypesChangedListener, Closeable

public class DelegatingQueryCache
extends Object
implements QueryCache

Delegating query cache that can also perform exception translation for use in facades. This cache allows its delegate to be null, in which case it returns default values or all methods.

Since:
0.4.0
Author:
Abe White

Constructor Summary
DelegatingQueryCache(QueryCache cache)
          Constructor.
DelegatingQueryCache(QueryCache cache, RuntimeExceptionTranslator trans)
           
 
Method Summary
 void addTypesChangedListener(TypesChangedListener listen)
          Add a new types event listener to this cache.
 void clear()
          Remove all data from this cache.
 void close()
          Free the resources used by this cache.
 boolean equals(Object other)
           
 QueryResult get(QueryKey qk)
          Return a list of oids for the given query key.
 QueryCache getDelegate()
          Return the direct delegate.
 QueryCache getInnermostDelegate()
          Return the native delegate.
 int hashCode()
           
 void initialize(DataCacheManager mgr)
          Initialize any resources associated with the given DataCacheManager.
 void onTypesChanged(TypesChangedEvent e)
          Notification that instances of persistent types have changed.
 boolean pin(QueryKey qk)
          Pin the value stored under qk into the cache.
 QueryResult put(QueryKey qk, QueryResult oids)
          Set the list of OIDs for the given query key.
 QueryResult remove(QueryKey qk)
          Remove the value stored under the given query key.
 boolean removeTypesChangedListener(TypesChangedListener listen)
          Remove an types event listener from this cache.
protected  RuntimeException translate(RuntimeException re)
          Translate the OpenJPA exception.
 boolean unpin(QueryKey qk)
          Unpin the value stored under key into the cache.
 void writeLock()
          Obtain a write lock on the cache.
 void writeUnlock()
          Release the write lock on the cache.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingQueryCache

public DelegatingQueryCache(QueryCache cache)
Constructor. Supply delegate.


DelegatingQueryCache

public DelegatingQueryCache(QueryCache cache,
                            RuntimeExceptionTranslator trans)
Method Detail

getDelegate

public QueryCache getDelegate()
Return the direct delegate.


getInnermostDelegate

public QueryCache getInnermostDelegate()
Return the native delegate.


hashCode

public int hashCode()
Overrides:
hashCode in class Object

equals

public boolean equals(Object other)
Overrides:
equals in class Object

translate

protected RuntimeException translate(RuntimeException re)
Translate the OpenJPA exception.


initialize

public void initialize(DataCacheManager mgr)
Description copied from interface: QueryCache
Initialize any resources associated with the given DataCacheManager.

Specified by:
initialize in interface QueryCache

onTypesChanged

public void onTypesChanged(TypesChangedEvent e)
Description copied from interface: TypesChangedListener
Notification that instances of persistent types have changed.

Specified by:
onTypesChanged in interface TypesChangedListener

get

public QueryResult get(QueryKey qk)
Description copied from interface: QueryCache
Return a list of oids for the given query key. This is an unmodifiable list.

Specified by:
get in interface QueryCache
Returns:
The query results matching the given key, or null if none

put

public QueryResult put(QueryKey qk,
                       QueryResult oids)
Description copied from interface: QueryCache
Set the list of OIDs for the given query key. A reference to the given list will be stored in the query cache, so the list should not be modified after invoking this method.

Specified by:
put in interface QueryCache
Returns:
The previously cached value, or null if the key was not previously cached. See Map.put(K, V) for more information.

remove

public QueryResult remove(QueryKey qk)
Description copied from interface: QueryCache
Remove the value stored under the given query key. This method is typically not invoked directly from outside the QueryCache class. Instead, the cache should be updated by implementing RemoteCommitListener, which will result in all queries that may be invalid being dropped.

Specified by:
remove in interface QueryCache
Returns:
The previously cached value, or null if the key was not previously cached. See Map.remove(java.lang.Object) for more information.

clear

public void clear()
Description copied from interface: QueryCache
Remove all data from this cache.

Specified by:
clear in interface QueryCache

pin

public boolean pin(QueryKey qk)
Description copied from interface: QueryCache
Pin the value stored under qk into the cache. This method guarantees that qk's value will not be expired if the cache exceeds its capacity. It causes this data to be ignored when determining whether or not the cache is full, effectively increasing the total amount of data stored in the cache. This method does not affect the behavior of QueryCache.remove(org.apache.openjpa.datacache.QueryKey) or TypesChangedListener.onTypesChanged(org.apache.openjpa.datacache.TypesChangedEvent).

Specified by:
pin in interface QueryCache
Returns:
true if key's value was pinned into the cache; false if the key is not in the cache.

unpin

public boolean unpin(QueryKey qk)
Description copied from interface: QueryCache
Unpin the value stored under key into the cache. This method reverses a previous invocation of QueryCache.pin(org.apache.openjpa.datacache.QueryKey). This method does not remove anything from the cache; it merely makes key's value a candidate for flushing from the cache.

Specified by:
unpin in interface QueryCache
Returns:
true if key's value was unpinned from the cache; false if the key is not in the cache.

writeLock

public void writeLock()
Description copied from interface: QueryCache
Obtain a write lock on the cache.

Specified by:
writeLock in interface QueryCache

writeUnlock

public void writeUnlock()
Description copied from interface: QueryCache
Release the write lock on the cache.

Specified by:
writeUnlock in interface QueryCache

addTypesChangedListener

public void addTypesChangedListener(TypesChangedListener listen)
Description copied from interface: QueryCache
Add a new types event listener to this cache.

Specified by:
addTypesChangedListener in interface QueryCache

removeTypesChangedListener

public boolean removeTypesChangedListener(TypesChangedListener listen)
Description copied from interface: QueryCache
Remove an types event listener from this cache.

Specified by:
removeTypesChangedListener in interface QueryCache

close

public void close()
Description copied from interface: QueryCache
Free the resources used by this cache.

Specified by:
close in interface QueryCache
Specified by:
close in interface Closeable


Copyright © 2006-2007 Apache Software Foundation. All Rights Reserved.