CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation

com.tangosol.net.cache
Class WrapperNamedCache

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.util.AbstractKeyBasedMap
          extended by com.tangosol.util.AbstractKeySetBasedMap
              extended by com.tangosol.util.WrapperObservableMap
                  extended by com.tangosol.util.WrapperConcurrentMap
                      extended by com.tangosol.net.cache.WrapperNamedCache
All Implemented Interfaces:
CacheMap, NamedCache, ConcurrentMap, InvocableMap, ObservableMap, QueryMap, Map
Direct Known Subclasses:
BundlingNamedCache, ReadonlyNamedCache

public class WrapperNamedCache
extends WrapperConcurrentMap
implements NamedCache

A simple implementation of NamedCache interface built as a wrapper around any Map implementation.

Author:
cp 2003.05.19

Nested Class Summary
 
Nested classes/interfaces inherited from class com.tangosol.util.WrapperConcurrentMap
WrapperConcurrentMap.Lock
 
Nested classes/interfaces inherited from class com.tangosol.util.WrapperObservableMap
WrapperObservableMap.InternalListener
 
Nested classes/interfaces inherited from class com.tangosol.util.AbstractKeySetBasedMap
AbstractKeySetBasedMap.EntrySet, AbstractKeySetBasedMap.KeyIterator, AbstractKeySetBasedMap.KeySet, AbstractKeySetBasedMap.ValuesCollection
 
Nested classes/interfaces inherited from interface com.tangosol.util.QueryMap
QueryMap.Entry
 
Nested classes/interfaces inherited from interface com.tangosol.util.InvocableMap
InvocableMap.Entry, InvocableMap.EntryAggregator, InvocableMap.EntryProcessor, InvocableMap.ParallelAwareAggregator
 
Field Summary
protected  CacheService m_service
          The CacheService this NamedCache is a part of.
protected  String m_sName
          The name of the cache.
 
Fields inherited from class com.tangosol.util.WrapperConcurrentMap
m_cWaitMillis, m_fEnforceLocking, m_gateMap, m_mapLock
 
Fields inherited from class com.tangosol.util.WrapperObservableMap
m_listenerInternal, m_listenerSupport, m_map, m_stats
 
Fields inherited from interface com.tangosol.net.cache.CacheMap
EXPIRY_DEFAULT, EXPIRY_NEVER
 
Fields inherited from interface com.tangosol.util.ConcurrentMap
LOCK_ALL
 
Constructor Summary
WrapperNamedCache(Map map, String sName)
          Construct a NamedCache wrapper based on the specified map.
WrapperNamedCache(Map map, String sName, CacheService service)
          Construct a NamedCache wrapper based on the specified map.
 
Method Summary
 void addIndex(ValueExtractor extractor, boolean fOrdered, Comparator comparator)
          Add an index to this QueryMap.
 Object aggregate(Collection collKeys, InvocableMap.EntryAggregator agent)
          Perform an aggregating operation against the entries specified by the passed keys.
 Object aggregate(Filter filter, InvocableMap.EntryAggregator agent)
          Perform an aggregating operation against the set of entries that are selected by the given Filter.
 void destroy()
          Release and destroy this instance of NamedCache.
 Set entrySet(Filter filter)
          Return a set view of the entries contained in this map that satisfy the criteria expressed by the filter.
 Set entrySet(Filter filter, Comparator comparator)
          Return a set view of the entries contained in this map that satisfy the criteria expressed by the filter.
 Map getAll(Collection colKeys)
          Get all the specified keys, if they are in the Map.
 String getCacheName()
          Return the cache name.
 CacheService getCacheService()
          Return the CacheService that this NamedCache is a part of.
 Object invoke(Object oKey, InvocableMap.EntryProcessor agent)
          Invoke the passed EntryProcessor against the Entry specified by the passed key, returning the result of the invocation.
 Map invokeAll(Collection collKeys, InvocableMap.EntryProcessor agent)
          Invoke the passed EntryProcessor against the entries specified by the passed keys, returning the result of the invocation for each.
 Map invokeAll(Filter filter, InvocableMap.EntryProcessor agent)
          Invoke the passed EntryProcessor against the set of entries that are selected by the given Filter, returning the result of the invocation for each.
 boolean isActive()
          Specifies whether or not the NamedCache is active.
 Set keySet(Filter filter)
          Return a set view of the keys contained in this map for entries that satisfy the criteria expressed by the filter.
 Object put(Object oKey, Object oValue, long cMillis)
          Associates the specified value with the specified key in this cache.
 void release()
          Release local resources associated with this instance of NamedCache.
 void removeIndex(ValueExtractor extractor)
          Remove an index from this QueryMap.
 
Methods inherited from class com.tangosol.util.WrapperConcurrentMap
clear, getDescription, getLockDescription, getWaitMillis, instantiateLock, isInternalKeySetIteratorMutable, isLockingEnforced, lock, lock, put, putAll, remove, removeBlind, setLockingEnforced, setWaitMillis, toString, unlock
 
Methods inherited from class com.tangosol.util.WrapperObservableMap
addMapListener, addMapListener, addMapListener, containsValue, dispatchEvent, dispatchPendingEvent, get, getCacheStatistics, getInternalKeySet, getMap, getMapListenerSupport, hasListeners, instantiateInternalListener, isCollectStats, isEventFabricator, isSynthetic, isTranslateEvents, removeMapListener, removeMapListener, removeMapListener, setCollectStats, setTranslateEvents
 
Methods inherited from class com.tangosol.util.AbstractKeySetBasedMap
containsKey, instantiateEntrySet, instantiateKeyIterator, instantiateKeySet, instantiateValues, isEmpty, iterateKeys, size
 
Methods inherited from class com.tangosol.util.AbstractKeyBasedMap
clone, entrySet, equals, hashCode, keySet, values
 
Methods inherited from interface com.tangosol.net.cache.CacheMap
put
 
Methods inherited from interface com.tangosol.util.ConcurrentMap
clear, containsKey, containsValue, get, isEmpty, lock, lock, put, putAll, remove, size, unlock
 

Field Detail

m_sName

protected String m_sName
The name of the cache.


m_service

protected CacheService m_service
The CacheService this NamedCache is a part of.

Constructor Detail

WrapperNamedCache

public WrapperNamedCache(Map map,
                         String sName)
Construct a NamedCache wrapper based on the specified map.

Note: it is assumed that while the WrapperNamedCache exists, there is no direct manipulation with the content of the wrapped map.

Parameters:
map - the Map that will be wrapped by this WrapperNamedCache
sName - the cache name

WrapperNamedCache

public WrapperNamedCache(Map map,
                         String sName,
                         CacheService service)
Construct a NamedCache wrapper based on the specified map.

Note: it is assumed that while the WrapperNamedCache exists, there is no direct manipulation with the content of the wrapped map.

Parameters:
map - the Map that will be wrapped by this WrapperNamedCache
sName - the cache name (ignored if the map is a NamedCache)
service - the cache service this NamedCache is a part of (ignored if the map is a NamedCache)
Method Detail

getCacheName

public String getCacheName()
Return the cache name.

Specified by:
getCacheName in interface NamedCache
Returns:
the cache name

getCacheService

public CacheService getCacheService()
Return the CacheService that this NamedCache is a part of.

Specified by:
getCacheService in interface NamedCache
Returns:
the CacheService

isActive

public boolean isActive()
Specifies whether or not the NamedCache is active.

Specified by:
isActive in interface NamedCache
Returns:
true if the NamedCache is active; false otherwise

release

public void release()
Release local resources associated with this instance of NamedCache.

Releasing a cache makes it no longer usable, but does not affect the cache itself. In other words, all other references to the cache will still be valid, and the cache data is not affected by releasing the reference. Any attempt to use this reference afterword will result in an exception.

The purpose for releasing a cache is to allow the cache implementation to release the ClassLoader used to deserialize items in the cache. The cache implementation ensures that all references to that ClassLoader are released. This implies that objects in the cache that were loaded by that ClassLoader will be re-serialized to release their hold on that ClassLoader. The result is that the ClassLoader can be garbage-collected by Java in situations where the cache is operating in an application server and applications are dynamically loaded and unloaded.

Specified by:
release in interface NamedCache
See Also:
CacheService.releaseCache(NamedCache)

destroy

public void destroy()
Release and destroy this instance of NamedCache.

Warning: This method is used to completely destroy the specified cache across the cluster. All references in the entire cluster to this cache will be invalidated, the cached data will be cleared, and all resources will be released.

Specified by:
destroy in interface NamedCache
See Also:
CacheService.destroyCache(NamedCache)

getAll

public Map getAll(Collection colKeys)
Get all the specified keys, if they are in the Map. For each key that is in the cache, that key and its corresponding value will be placed in the map that is returned by this method. The absence of a key in the returned map indicates that it was not in the cache, which may imply (for caches that can load behind the scenes) that the requested data could not be loaded.

Specified by:
getAll in interface CacheMap
Overrides:
getAll in class AbstractKeyBasedMap
Parameters:
colKeys - a collection of keys that may be in the named cache
Returns:
a Map of keys to values for the specified keys passed in colKeys

put

public Object put(Object oKey,
                  Object oValue,
                  long cMillis)
Associates the specified value with the specified key in this cache. If the cache previously contained a mapping for this key, the old value is replaced. This variation of the CacheMap.put(Object oKey, Object oValue) method allows the caller to specify an expiry (or "time to live") for the cache entry.

Specified by:
put in interface CacheMap
Specified by:
put in interface NamedCache
Parameters:
oKey - key with which the specified value is to be associated
oValue - value to be associated with the specified key
cMillis - the number of milliseconds until the cache entry will expire, also referred to as the entry's "time to live"; pass CacheMap.EXPIRY_DEFAULT to use the cache's default time-to-live setting; pass CacheMap.EXPIRY_NEVER to indicate that the cache entry should never expire; this milliseconds value is not a date/time value, such as is returned from System.currentTimeMillis()
Returns:
previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values

keySet

public Set keySet(Filter filter)
Return a set view of the keys contained in this map for entries that satisfy the criteria expressed by the filter.

Unlike the Map.keySet() method, the set returned by this method may not be backed by the map, so changes to the set may not reflected in the map, and vice-versa.

Note: When using the Coherence Enterprise Edition or Grid Edition, the Partitioned Cache implements the QueryMap interface using the Parallel Query feature. When using Coherence Standard Edition, the Parallel Query feature is not available, resulting in lower performance for most queries, and particularly when querying large data sets.

Specified by:
keySet in interface QueryMap
Parameters:
filter - the Filter object representing the criteria that the entries of this map should satisfy
Returns:
a set of keys for entries that satisfy the specified criteria

entrySet

public Set entrySet(Filter filter)
Return a set view of the entries contained in this map that satisfy the criteria expressed by the filter. Each element in the returned set is a Map.Entry.

Unlike the Map.entrySet() method, the set returned by this method may not be backed by the map, so changes to the set may not be reflected in the map, and vice-versa.

Note: When using the Coherence Enterprise Edition or Grid Edition, the Partitioned Cache implements the QueryMap interface using the Parallel Query feature. When using Coherence Standard Edition, the Parallel Query feature is not available, resulting in lower performance for most queries, and particularly when querying large data sets.

Specified by:
entrySet in interface QueryMap
Parameters:
filter - the Filter object representing the criteria that the entries of this map should satisfy
Returns:
a set of entries that satisfy the specified criteria

entrySet

public Set entrySet(Filter filter,
                    Comparator comparator)
Return a set view of the entries contained in this map that satisfy the criteria expressed by the filter. Each element in the returned set is a Map.Entry. It is further guaranteed that its iterator will traverse the set in such a way that the entry values come up in ascending order, sorted by the specified Comparator or according to the natural ordering (see Comparable).

Unlike the Map.entrySet() method, the set returned by this method may not be backed by the map, so changes to the set may not be reflected in the map, and vice-versa.

Note: When using the Coherence Enterprise Edition or Grid Edition, the Partitioned Cache implements the QueryMap interface using the Parallel Query feature. When using Coherence Standard Edition, the Parallel Query feature is not available, resulting in lower performance for most queries, and particularly when querying large data sets.

Specified by:
entrySet in interface QueryMap
Parameters:
filter - the Filter object representing the criteria that the entries of this map should satisfy
comparator - the Comparator object which imposes an ordering on entries in the resulting set; or null if the entries' values natural ordering should be used
Returns:
a set of entries that satisfy the specified criteria
See Also:
ChainedComparator

addIndex

public void addIndex(ValueExtractor extractor,
                     boolean fOrdered,
                     Comparator comparator)
Add an index to this QueryMap. This allows to correlate values stored in this indexed Map (or attributes of those values) to the corresponding keys in the indexed Map and increase the performance of keySet and entrySet methods.

This method is only intended as a hint to the cache implementation, and as such it may be ignored by the cache if indexes are not supported or if the desired index (or a similar index) already exists. It is expected that an application will call this method to suggest an index even if the index may already exist, just so that the application is certain that index has been suggested. For example in a distributed environment, each server will likely suggest the same set of indexes when it starts, and there is no downside to the application blindly requesting those indexes regardless of whether another server has already requested the same indexes.

Note: Indexes are a feature of Coherence Enterprise Edition and Coherence Grid Edition. This method will have no effect when using Coherence Standard Edition.

Specified by:
addIndex in interface QueryMap
Parameters:
extractor - the ValueExtractor object that is used to extract an indexable Object from a value stored in the indexed Map. Must not be null.
fOrdered - true iff the contents of the indexed information should be ordered; false otherwise
comparator - the Comparator object which imposes an ordering on entries in the indexed map; or null if the entries' values natural ordering should be used
See Also:
ReflectionExtractor, ChainedComparator

removeIndex

public void removeIndex(ValueExtractor extractor)
Remove an index from this QueryMap.

Specified by:
removeIndex in interface QueryMap
Parameters:
extractor - the ValueExtractor object that is used to extract an indexable Object from a value stored in the Map.

invoke

public Object invoke(Object oKey,
                     InvocableMap.EntryProcessor agent)
Invoke the passed EntryProcessor against the Entry specified by the passed key, returning the result of the invocation.

Specified by:
invoke in interface InvocableMap
Parameters:
oKey - the key to process; it is not required to exist within the Map
agent - the EntryProcessor to use to process the specified key
Returns:
the result of the invocation as returned from the EntryProcessor

invokeAll

public Map invokeAll(Collection collKeys,
                     InvocableMap.EntryProcessor agent)
Invoke the passed EntryProcessor against the entries specified by the passed keys, returning the result of the invocation for each.

Specified by:
invokeAll in interface InvocableMap
Parameters:
collKeys - the keys to process; these keys are not required to exist within the Map
agent - the EntryProcessor to use to process the specified keys
Returns:
a Map containing the results of invoking the EntryProcessor against each of the specified keys

invokeAll

public Map invokeAll(Filter filter,
                     InvocableMap.EntryProcessor agent)
Invoke the passed EntryProcessor against the set of entries that are selected by the given Filter, returning the result of the invocation for each.

Unless specified otherwise, InvocableMap implementations will perform this operation in two steps: (1) use the filter to retrieve a matching entry set; (2) apply the agent to every filtered entry. This algorithm assumes that the agent's processing does not affect the result of the specified filter evaluation, since the filtering and processing could be performed in parallel on different threads. If this assumption does not hold, the processor logic has to be idempotent, or at least re-evaluate the filter. This could be easily accomplished by wrapping the processor with the ConditionalProcessor.

Specified by:
invokeAll in interface InvocableMap
Parameters:
filter - a Filter that results in the set of keys to be processed
agent - the EntryProcessor to use to process the specified keys
Returns:
a Map containing the results of invoking the EntryProcessor against the keys that are selected by the given Filter

aggregate

public Object aggregate(Collection collKeys,
                        InvocableMap.EntryAggregator agent)
Perform an aggregating operation against the entries specified by the passed keys.

Specified by:
aggregate in interface InvocableMap
Parameters:
collKeys - the Collection of keys that specify the entries within this Map to aggregate across
agent - the EntryAggregator that is used to aggregate across the specified entries of this Map
Returns:
the result of the aggregation

aggregate

public Object aggregate(Filter filter,
                        InvocableMap.EntryAggregator agent)
Perform an aggregating operation against the set of entries that are selected by the given Filter.

Specified by:
aggregate in interface InvocableMap
Parameters:
filter - the Filter that is used to select entries within this Map to aggregate across
agent - the EntryAggregator that is used to aggregate across the selected entries of this Map
Returns:
the result of the aggregation

CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation