SolarMetric Kodo JDO 2.5.8 generated on January 11 2004

com.solarmetric.kodo.runtime.datacache
Class TimedDataCache

java.lang.Object
  |
  +--com.solarmetric.kodo.runtime.datacache.TimedDataCache
All Implemented Interfaces:
DataCache

public class TimedDataCache
extends Object
implements DataCache

DataCache decorator that is capable of expiring cache data.

Since:
2.5.0

Constructor Summary
TimedDataCache(DataCache cache)
           
 
Method Summary
 void addExpirationListener(com.solarmetric.util.Listener listen)
          Add a new expiration event listener to this cache.
 void batchUpdate(Collection additions, Collection newUpdates, Collection existingUpdates, Collection deletes)
          Perform a batch update of the cache.
 void clear()
          Remove all data from this cache.
 void close()
          Close this cache, dropping all hard references and releasing any resources that this cache maintains.
 boolean containsKey(Object key)
          Returns true if this cache contains data corresponding to key; otherwise returns false.
 PCData get(Object key)
          Return the cached object for the given key.
 String getName()
          Returns a string name that can be used by end-user-visible code to identify this cache.
 boolean isDecorator()
          Returns true if this cache is a decorator that wraps another cache.
protected  boolean isTimedOut(PCData data)
           
 boolean pin(Object key)
          Pin the value stored under key into the cache.
 PCData put(PCData value)
          Set the cached value for the given key.
 PCData remove(Object key)
          Remove the value stored under the given key.
 DataCache removeDecorator()
          Returns an undecorated version of this cache.
 DataCache removeDecorators()
          Returns the lowest cache in the chain of caches in this object.
 void removeExpirationListener(com.solarmetric.util.Listener listen)
          Remove an expiration event listener from this cache.
 void setName(String name)
          Sets a string name to be used to identify this cache to end-user needs.
 boolean unpin(Object key)
          Unpin the value stored under key into the cache.
 void updateValue(PCData value)
          Update the cached value for the given key.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TimedDataCache

public TimedDataCache(DataCache cache)
Method Detail

isTimedOut

protected boolean isTimedOut(PCData data)

batchUpdate

public void batchUpdate(Collection additions,
                        Collection newUpdates,
                        Collection existingUpdates,
                        Collection deletes)
Description copied from interface: DataCache

Perform a batch update of the cache. Add all PCData objects in additions and in newUpdates, make the appropriate modifications to all PCDatas in existingUpdates, and delete all OIDs in deletes.

All changes made to cached data must be cached 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 the deletes collection may contain oids that are also in the additions map. 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:
batchUpdate in interface DataCache
Following copied from interface: com.solarmetric.kodo.runtime.datacache.DataCache
Parameters:
additions - A collection of PCData objects. These represent data that have been newly created, and thus must be added to the cache.
newUpdates - A collection of PCData objects. 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 of PCData objects. 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 from DataCache.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.

get

public PCData get(Object key)
Description copied from interface: DataCache
Return the cached object for the given key. Modifying the returned object may or may not change the cached value; the DataCache.updateValue(com.solarmetric.kodo.runtime.PCData) method should be used to re-cache any changed objects.
Specified by:
get in interface DataCache
Following copied from interface: com.solarmetric.kodo.runtime.datacache.DataCache
Returns:
the object matching the given key, or null if none

put

public PCData put(PCData value)
Description copied from interface: DataCache
Set the cached value for the given key. 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 the DataCache.batchUpdate(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection) method.
Specified by:
put in interface DataCache
Following copied from interface: com.solarmetric.kodo.runtime.datacache.DataCache
Returns:
The previously cached value, or null if the key was not previously cached. See Map.put(java.lang.Object, java.lang.Object) for more information.

updateValue

public void updateValue(PCData value)
Description copied from interface: DataCache

Update the cached value for the given key. 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 the DataCache.batchUpdate(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection) method.

A cache implementation may or may not return a live object from DataCache.get(java.lang.Object) invocations. If an object retrieved from a DataCache.get(java.lang.Object) operation needs to be updated, this method can be invoked instead of invoking DataCache.put(com.solarmetric.kodo.runtime.PCData). The DataCache implementation can then make optimizations based on how its DataCache.get(java.lang.Object) method works.

Specified by:
updateValue in interface DataCache

remove

public PCData remove(Object key)
Description copied from interface: DataCache
Remove the value stored under the given key. This does not result in an update of other caches. Rather, it should only be used for removing data into the cache. Meaningful changes to the state of the cache should be made via the DataCache.batchUpdate(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection) method.
Specified by:
remove in interface DataCache
Following copied from interface: com.solarmetric.kodo.runtime.datacache.DataCache
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: DataCache
Remove 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 the DataCache.batchUpdate(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection) method.
Specified by:
clear in interface DataCache

pin

public boolean pin(Object key)
Description copied from interface: DataCache
Pin the value stored under key into the cache. This method guarantees that key's value will not be dropped by the caching algorithm. This method does not affect the behavior of DataCache.remove(java.lang.Object).
Specified by:
pin in interface DataCache
Following copied from interface: com.solarmetric.kodo.runtime.datacache.DataCache
Returns:
true if key's value was pinned into the cache; false if the key is not in the cache.

unpin

public boolean unpin(Object key)
Description copied from interface: DataCache
Unpin the value stored under key into the cache. This method reverses a previous invocation of DataCache.pin(java.lang.Object). 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 DataCache
Following copied from interface: com.solarmetric.kodo.runtime.datacache.DataCache
Returns:
true if key's value was unpinned from the cache; false if the key is not in the cache.

close

public void close()
Description copied from interface: DataCache
Close this cache, dropping all hard references and releasing any resources that this cache maintains.
Specified by:
close in interface DataCache

containsKey

public boolean containsKey(Object key)
Description copied from interface: DataCache
Returns true if this cache contains data corresponding to key; otherwise returns false.
Specified by:
containsKey in interface DataCache

setName

public void setName(String name)
Description copied from interface: DataCache
Sets a string name to be used to identify this cache to end-user needs.
Specified by:
setName in interface DataCache

getName

public String getName()
Description copied from interface: DataCache
Returns a string name that can be used by end-user-visible code to identify this cache.
Specified by:
getName in interface DataCache

isDecorator

public boolean isDecorator()
Description copied from interface: DataCache
Returns true if this cache is a decorator that wraps another cache. Otherwise, returns false.
Specified by:
isDecorator in interface DataCache

removeDecorator

public DataCache removeDecorator()
Description copied from interface: DataCache
Returns an undecorated version of this cache. If this cache is not a decorator, returns this.
Specified by:
removeDecorator in interface DataCache

removeDecorators

public DataCache removeDecorators()
Description copied from interface: DataCache
Returns the lowest cache in the chain of caches in this object. If this cache is not a decorator, returns this. This is equivalent to repeatedly invoking DataCache.removeDecorator() until the returned DataCache returns false from DataCache.isDecorator().
Specified by:
removeDecorators in interface DataCache

addExpirationListener

public void addExpirationListener(com.solarmetric.util.Listener listen)
Description copied from interface: DataCache
Add a new expiration event listener to this cache.
Specified by:
addExpirationListener in interface DataCache

removeExpirationListener

public void removeExpirationListener(com.solarmetric.util.Listener listen)
Description copied from interface: DataCache
Remove an expiration event listener from this cache.
Specified by:
removeExpirationListener in interface DataCache

SolarMetric Kodo JDO 2.5.8 generated on January 11 2004

Copyright 2001,2002,2003 SolarMetric, Inc. All Rights Reserved.