Package org.apache.openjpa.datacache
Class DelegatingDataCache
java.lang.Object
org.apache.openjpa.datacache.DelegatingDataCache
Delegating data 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 for all operations.
- Author:
- Abe White
-
Field Summary
Fields inherited from interface org.apache.openjpa.datacache.DataCache
NAME_DEFAULT -
Constructor Summary
ConstructorsConstructorDescriptionDelegatingDataCache(DataCache cache) Constructor.DelegatingDataCache(DataCache cache, RuntimeExceptionTranslator trans) -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd a new expiration event listener to this cache.voidclear()Remove all data from this cache.voidclose()Free the resources used by this cache.voidcommit(Collection<DataCachePCData> additions, Collection<DataCachePCData> newUpdates, Collection<DataCachePCData> existingUpdates, Collection<Object> deletes) Perform a batch update of the cache.booleanReturnstrueif this cache contains data corresponding tooid; otherwise returnsfalse.containsAll(Collection<Object> oids) Returns the indexes of the oids in this cache.booleanReturn the cached object for the given oid.Gets objects from the caches for a given list of keys.Return the direct delegate.booleanReturns whether the the cache needs to be updated when bulk updates as executed.Return the native delegate.getName()Returns a string name that can be used by end-user-visible code to identify this cache.getPartition(String name, boolean create) Gets the named partition.Gets the name of the known partitions.Returns number of read/write request and cache hit ratio data.inthashCode()voidinitialize(DataCacheManager manager) Initialize any resources associated with the givenDataCacheManager.booleanAffirms if this cache maintains partitions.booleanPin the value stored underoidinto the cache.voidPin all oids for the given type.pinAll(Collection<Object> oids) Pin all oids to the cache.put(DataCachePCData value) Set the cached value for the given instance.Remove the value stored under the given oid.voidEvict all values of a specified type.removeAll(Collection<Object> oids) Remove the values stored under the given oids.booleanRemove an expiration event listener from this cache.voidSets a string name to be used to identify this cache to end-user needs.protected RuntimeExceptionTranslate the OpenJPA exception.booleanUnpin the value stored underoidfrom the cache.voidUnpin all oids associaed with the given type from the cache.unpinAll(Collection<Object> oids) Unpin all oids from the cache.voidupdate(DataCachePCData value) Update the cached value for the given instance.voidObtain a write lock on the cache.voidRelease the write lock on the cache.
-
Constructor Details
-
DelegatingDataCache
Constructor. Supply delegate. -
DelegatingDataCache
-
-
Method Details
-
getDelegate
Return the direct delegate. -
getInnermostDelegate
Return the native delegate. -
hashCode
public int hashCode() -
equals
-
translate
Translate the OpenJPA exception. -
getName
Description copied from interface:DataCacheReturns a string name that can be used by end-user-visible code to identify this cache. -
setName
Description copied from interface:DataCacheSets a string name to be used to identify this cache to end-user needs. -
initialize
Description copied from interface:DataCacheInitialize any resources associated with the givenDataCacheManager.- Specified by:
initializein interfaceDataCache
-
commit
public void commit(Collection<DataCachePCData> additions, Collection<DataCachePCData> newUpdates, Collection<DataCachePCData> existingUpdates, Collection<Object> deletes) Description copied from interface:DataCachePerform a batch update of the cache. Add allDataCachePCDataobjects inadditionsand innewUpdates, make the appropriate modifications to all DataCachePCDatas inexistingUpdates, and delete all OIDs indeletes. All changes made to cached data must be made via this method. It is this method that is responsible for performing any side-effects that should happen on meaningful cache changes. Implementations should bear in mind that thedeletescollection may contain oids that are also in theadditionsmap. This is possible because it is valid for a user to delete an object with a particular oid and then add that object in the same batch.- Specified by:
commitin interfaceDataCache- Parameters:
additions- A collection ofDataCachePCDataobjects. These represent data that have been newly created, and thus must be added to the cache.newUpdates- A collection ofDataCachePCDataobjects. These represent data that have been modified but were not originally in the cache, and thus must be added to the cache.existingUpdates- A collection ofDataCachePCDataobjects. These represent data that have been modified and were originally loaded from the cache. It is up to the cache implementation to decide if these values must be re-enlisted in the cache. Some caches may return live data fromDataCache.get(java.lang.Object)invocations, in which case these values need not be re-enlisted.deletes- A collection of object IDs that have been deleted and must therefore be dropped from the cache.
-
contains
Description copied from interface:DataCacheReturnstrueif this cache contains data corresponding tooid; otherwise returnsfalse. -
containsAll
Description copied from interface:DataCacheReturns the indexes of the oids in this cache.- Specified by:
containsAllin interfaceDataCache
-
get
Description copied from interface:DataCacheReturn the cached object for the given oid. Modifying the returned object may or may not change the cached value; theDataCache.update(org.apache.openjpa.datacache.DataCachePCData)method should be used to re-cache any changed objects. -
put
Description copied from interface:DataCacheSet the cached value for the given instance. This does not result in an update of other caches. Rather, it should only be used for loading clean data into the cache. Meaningful changes to the state of the cache should be made via theDataCache.commit(java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<java.lang.Object>)method.- Specified by:
putin interfaceDataCache- Returns:
- The previously cached value, or
nullif the value was not previously cached. SeeMap.put(K, V)for more information.
-
update
Description copied from interface:DataCacheUpdate the cached value for the given instance. This does not result in an update of other caches. Rather, it should only be used for loading clean data into the cache. Meaningful changes to the state of the cache should be made via theDataCache.commit(java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<java.lang.Object>)method. A cache implementation may or may not return a live object fromDataCache.get(java.lang.Object)invocations. If an object retrieved from aDataCache.get(java.lang.Object)operation needs to be updated, this method can be invoked instead of invokingDataCache.put(org.apache.openjpa.datacache.DataCachePCData). The DataCache implementation can then make optimizations based on how itsDataCache.get(java.lang.Object)method works. -
remove
Description copied from interface:DataCacheRemove the value stored under the given oid. This does not result in an update of other caches. Rather, it should only be used for removing data in the cache. Meaningful changes to the state of the cache should be made via theDataCache.commit(java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<java.lang.Object>)method.- Specified by:
removein interfaceDataCache- Returns:
- The previously cached value, or
nullif the oid was not previously cached. SeeMap.remove(java.lang.Object)for more information.
-
removeAll
Description copied from interface:DataCacheRemove the values stored under the given oids. -
removeAll
Description copied from interface:DataCacheEvict all values of a specified type. -
clear
public void clear()Description copied from interface:DataCacheRemove all data from this cache. This does not result in an update of other caches. Rather, it should only be used for clearing the cache. Meaningful changes to the state of the cache should be made via theDataCache.commit(java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<org.apache.openjpa.datacache.DataCachePCData>, java.util.Collection<java.lang.Object>)method. -
pin
Description copied from interface:DataCachePin the value stored underoidinto the cache. This method guarantees thatoid's value will not be dropped by the caching algorithm. This method does not affect the behavior ofDataCache.remove(java.lang.Object). -
pinAll
Description copied from interface:DataCachePin all oids to the cache. -
pinAll
Description copied from interface:DataCachePin all oids for the given type. -
unpin
Description copied from interface:DataCacheUnpin the value stored underoidfrom the cache. This method reverses a previous invocation ofDataCache.pin(java.lang.Object). This method does not remove anything from the cache; it merely makesoid's value a candidate for flushing from the cache. -
unpinAll
Description copied from interface:DataCacheUnpin all oids from the cache. -
unpinAll
Description copied from interface:DataCacheUnpin all oids associaed with the given type from the cache. -
writeLock
public void writeLock()Description copied from interface:DataCacheObtain a write lock on the cache. -
writeUnlock
public void writeUnlock()Description copied from interface:DataCacheRelease the write lock on the cache.- Specified by:
writeUnlockin interfaceDataCache
-
addExpirationListener
Description copied from interface:DataCacheAdd a new expiration event listener to this cache.- Specified by:
addExpirationListenerin interfaceDataCache
-
removeExpirationListener
Description copied from interface:DataCacheRemove an expiration event listener from this cache.- Specified by:
removeExpirationListenerin interfaceDataCache
-
close
public void close()Description copied from interface:DataCacheFree the resources used by this cache. -
getAll
Description copied from interface:DataCacheGets objects from the caches for a given list of keys. The returned map has the same keys as the given keys. If the cache does not contain data for a specific key, the returned map still contains the key with a null value. -
getStatistics
Description copied from interface:DataCacheReturns number of read/write request and cache hit ratio data.- Specified by:
getStatisticsin interfaceDataCache
-
getPartition
Description copied from interface:DataCacheGets the named partition. Note that a partition itself is another cache.- Specified by:
getPartitionin interfaceDataCache- Parameters:
name- name of the given partition.create- if true optionally create a new partition.- Returns:
- a partition of the given name. Or null, if either no such partition exists or can not be created.
-
getPartitionNames
Description copied from interface:DataCacheGets the name of the known partitions.- Specified by:
getPartitionNamesin interfaceDataCache- Returns:
- empty set if no partition exists.
-
isPartitioned
public boolean isPartitioned()Description copied from interface:DataCacheAffirms if this cache maintains partitions.- Specified by:
isPartitionedin interfaceDataCache
-
getEvictOnBulkUpdate
public boolean getEvictOnBulkUpdate()Description copied from interface:DataCacheReturns whether the the cache needs to be updated when bulk updates as executed. Defaults to true.- Specified by:
getEvictOnBulkUpdatein interfaceDataCache
-