SolarMetric Kodo JDO 3.3.5 generated on August 31 2005

kodo.datacache
Class AbstractQueryCache

java.lang.Object
  |
  +--serp.util.AbstractEventManager
        |
        +--kodo.datacache.AbstractQueryCache
All Implemented Interfaces:
com.solarmetric.util.Closeable, Configurable, QueryCache
Direct Known Subclasses:
GemFireQueryCache, QueryCacheImpl

public abstract class AbstractQueryCache
extends serp.util.AbstractEventManager
implements QueryCache, Configurable

Abstract QueryCache implementation that provides various statistics, logging, and timeout functionality common across cache implementations.


Field Summary
protected  JDOConfiguration conf
          The configuration set by the system.
protected  Log log
          The log to use.
 
Constructor Summary
AbstractQueryCache()
           
 
Method Summary
 void addExpirationListener(ExpirationListener listen)
          Add a new expiration event listener to this cache.
 void afterCommit(RemoteCommitEvent event)
          This method is part of the RemoteCommitListener interface.
 void classesChanged(Collection classes)
          Tells the cache that all the classes in the classes set have been changed.
 void clear()
          Remove all data from this cache.
protected abstract  void clearInternal()
          Clear the cache.
 void close()
          Free the resources used by this cache.
 void endConfiguration()
          Invoked upon completion of bean property configuration for this object.
protected  void fireEvent(Object event, Object listener)
           
 QueryResult get(QueryKey key)
          Return a list of oids for the given query key.
 double getHitRate()
          Returns the percentage of hits.
 int getHits()
          Returns the number of cache hits for invocations of the get(kodo.datacache.QueryKey) method.
protected abstract  QueryResult getInternal(QueryKey qk)
          Return the list for the given key.
 int getMisses()
          Returns the number of cache misses for invocations of the get(kodo.datacache.QueryKey) method.
 Collection getStatistics()
          Get statistics exported by this object.
 String getStatisticsString()
          Returns a localized string containing the number of hits, the number of misses, and the hit ratio (hits / (hits+misses)).
 boolean isClosed()
           
protected  void keyRemoved(Object key, boolean expired)
          Invoke when a key is removed from this cache.
protected abstract  Collection keySet()
          Return a threadsafe view of the keys in this cache.
 boolean pin(QueryKey key)
          Pin the value stored under qk into the cache.
protected abstract  boolean pinInternal(QueryKey qk)
          Pin an object to the cache.
 QueryResult put(QueryKey qk, QueryResult oids)
          Set the list of OIDs for the given query key.
protected abstract  QueryResult putInternal(QueryKey qk, QueryResult oids)
          Add the given result to the cache, returning the old result under the given key.
 QueryResult remove(QueryKey key)
          Remove the value stored under the given query key.
protected  void removeAllInternal(Collection qks)
          Remove all results under the given keys from the cache.
 boolean removeExpirationListener(ExpirationListener listen)
          Remove an expiration event listener from this cache.
protected abstract  QueryResult removeInternal(QueryKey qk)
          Remove the result under the given key from the cache.
 void resetStatistics()
          Reset the caching statistics.
 void setConfiguration(Configuration conf)
          Invoked prior to setting bean properties.
 void startConfiguration()
          Invoked before bean property configuration is begun on this object.
 boolean unpin(QueryKey key)
          Unpin the value stored under key into the cache.
protected abstract  boolean unpinInternal(QueryKey qk)
          Unpin an object from the cache.
 
Methods inherited from class serp.util.AbstractEventManager
fireEvent, getListeners, hasListener, hasListeners, registerListener, removeListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

conf

protected JDOConfiguration conf
The configuration set by the system.

log

protected Log log
The log to use.
Constructor Detail

AbstractQueryCache

public AbstractQueryCache()
Method Detail

classesChanged

public void classesChanged(Collection classes)
Description copied from interface: QueryCache

Tells the cache that all the classes in the classes set have been changed. This could mean that items have been updated, deleted, or added. This limits the QueryCache to only be able to invalidate cached queries -- because the cache is not notified of actual changes, it cannot recompute query results.

After this method is invoked, all cached results that correspond to queries that use one of the classes in classes will be dropped.

Specified by:
classesChanged in interface QueryCache
Following copied from interface: kodo.datacache.QueryCache
Parameters:
classes - a set of Class objects that correspond to instances that have changed

get

public QueryResult get(QueryKey key)
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
Following copied from interface: kodo.datacache.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
Following copied from interface: kodo.datacache.QueryCache
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.

remove

public QueryResult remove(QueryKey key)
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 invoking #notifyChangedClasses, which will result in all queries that may be invalid being dropped.

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

pin

public boolean pin(QueryKey key)
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(kodo.datacache.QueryKey) or #notifyChangedClasses.
Specified by:
pin in interface QueryCache
Following copied from interface: kodo.datacache.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 key)
Description copied from interface: QueryCache
Unpin the value stored under key into the cache. This method reverses a previous invocation of QueryCache.pin(kodo.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
Following copied from interface: kodo.datacache.QueryCache
Returns:
true if key's value was unpinned from the cache; false if the key is not in the cache.

clear

public void clear()
Description copied from interface: QueryCache

Remove all data from this cache.

Specified by:
clear 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

isClosed

public boolean isClosed()

addExpirationListener

public void addExpirationListener(ExpirationListener listen)
Description copied from interface: QueryCache
Add a new expiration event listener to this cache.
Specified by:
addExpirationListener in interface QueryCache

removeExpirationListener

public boolean removeExpirationListener(ExpirationListener listen)
Description copied from interface: QueryCache
Remove an expiration event listener from this cache.
Specified by:
removeExpirationListener in interface QueryCache

afterCommit

public void afterCommit(RemoteCommitEvent event)
This method is part of the RemoteCommitListener interface. If your cache subclass relies on Kodo for clustering support, make it implement RemoteCommitListener. This method will take care of invalidating entries from remote commits, by delegating to classesChanged(java.util.Collection).

keyRemoved

protected void keyRemoved(Object key,
                          boolean expired)
Invoke when a key is removed from this cache. Propagates the expiration event on to all expiration listeners registered with this class.

keySet

protected abstract Collection keySet()
Return a threadsafe view of the keys in this cache. This collection must be iteratable without risk of concurrent modification exceptions. It does not have to implement contains() efficiently or use set semantics.

getInternal

protected abstract QueryResult getInternal(QueryKey qk)
Return the list for the given key.

putInternal

protected abstract QueryResult putInternal(QueryKey qk,
                                           QueryResult oids)
Add the given result to the cache, returning the old result under the given key.

removeInternal

protected abstract QueryResult removeInternal(QueryKey qk)
Remove the result under the given key from the cache.

removeAllInternal

protected void removeAllInternal(Collection qks)
Remove all results under the given keys from the cache.

clearInternal

protected abstract void clearInternal()
Clear the cache.

pinInternal

protected abstract boolean pinInternal(QueryKey qk)
Pin an object to the cache.

unpinInternal

protected abstract boolean unpinInternal(QueryKey qk)
Unpin an object from the cache.

getHits

public int getHits()
Returns the number of cache hits for invocations of the get(kodo.datacache.QueryKey) method.

getMisses

public int getMisses()
Returns the number of cache misses for invocations of the get(kodo.datacache.QueryKey) method.

getHitRate

public double getHitRate()
Returns the percentage of hits.

getStatisticsString

public String getStatisticsString()
Returns a localized string containing the number of hits, the number of misses, and the hit ratio (hits / (hits+misses)).

getStatistics

public Collection getStatistics()
Get statistics exported by this object.

resetStatistics

public void resetStatistics()
Reset the caching statistics.

setConfiguration

public void setConfiguration(Configuration conf)
Description copied from interface: Configurable
Invoked prior to setting bean properties.
Specified by:
setConfiguration in interface Configurable

startConfiguration

public void startConfiguration()
Description copied from interface: Configurable
Invoked before bean property configuration is begun on this object.
Specified by:
startConfiguration in interface Configurable

endConfiguration

public void endConfiguration()
Description copied from interface: Configurable
Invoked upon completion of bean property configuration for this object.
Specified by:
endConfiguration in interface Configurable

fireEvent

protected void fireEvent(Object event,
                         Object listener)
Overrides:
fireEvent in class serp.util.AbstractEventManager

SolarMetric Kodo JDO 3.3.5 generated on August 31 2005

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