K
- the type of the cache entry keysV_BACK
- the type of the entry values in the back cache that is used as the source for this ContinuousQueryCacheV_FRONT
- the type of the entry values in this ContinuousQueryCache, which will be the same as V_BACK, unless a transformer
is specified when creating this ContinuousQueryCachepublic class ContinuousQueryCache<K,V_BACK,V_FRONT> extends AbstractKeySetBasedMap<K,V_FRONT> implements NamedCache<K,V_FRONT>
In addition to providing an up-to-date view of the backing NamedCache, this class supports server-side transformation of cache values. For example, you could create a client-side view of a cache containing Portfolio
instances that only contains the value of each portfolio:
NamedCache<String, Portfolio> cache = CacheFactory.getTypedCache("portfolio", TypeAssertion.withoutTypeChecking()); NamedCache<String, Double> cqc = new ContinuousQueryCache<> (cache, AlwaysFilter.INSTANCE, Portfolio::getValue);
Modifier and Type | Class and Description |
---|---|
class |
ContinuousQueryCache.AddListener
A MapListener for adding items to the ContinuousQueryCache.
|
protected class |
ContinuousQueryCache.EventRouter<K,V>
An EventRouter routes events from the internal cache of the ContinuousQueryCache to the client listeners, and it can do so asynchronously when appropriate.
|
class |
ContinuousQueryCache.RemoveListener
A MapListener for evicting items from the ContinuousQueryCache.
|
protected class |
ContinuousQueryCache.ServiceListener
MemberListener for the underlying cache's service.
|
AbstractKeySetBasedMap.EntrySet, AbstractKeySetBasedMap.KeyIterator, AbstractKeySetBasedMap.KeySet, AbstractKeySetBasedMap.ValuesCollection
AbstractKeyBasedMap.DeferredCacheEvent<K,V>
Base.LoggingWriter, Base.StackFrame
NamedCache.Option
QueryMap.Entry<K,V>
InvocableMap.Entry<K,V>, InvocableMap.EntryAggregator<K,V,R>, InvocableMap.EntryProcessor<K,V,R>, InvocableMap.ParallelAwareAggregator<K,V,P,R>, InvocableMap.StreamingAggregator<K,V,P,R>
Modifier and Type | Field and Description |
---|---|
protected long |
m_cReconnectMillis
The interval (in milliseconds) that indicates how often the ContinuousQueryCache should attempt to synchronize its content with the underlying cache in case the connection is severed.
|
protected TaskDaemon |
m_eventqueue
The event queue for this ContinuousQueryCache.
|
protected boolean |
m_fCacheValues
The option of whether or not to locally cache values.
|
protected Filter |
m_filter
The filter that represents the subset of information from the underlying NamedCache that this ContinuousQueryCache represents.
|
protected MapEventFilter |
m_filterAdd
The MapEventFilter that uses the ContinuousQueryCache's filter to select events that would add elements to this cache's contents.
|
protected MapEventFilter |
m_filterRemove
The MapEventFilter that uses the ContinuousQueryCache's filter to select events that would remove elements from this cache's contents.
|
protected boolean |
m_fListeners
Keeps track of whether the ContinuousQueryCache has listeners that require this cache to cache values.
|
protected boolean |
m_fReadOnly
The option to disallow modifications through this ContinuousQueryCache interface.
|
protected long |
m_ldtConnectionTimestamp
The timestamp when the synchronization was last attempted.
|
protected MapListener<K,V_FRONT> |
m_listenerAdd
The listener that gets information about what should be in this cache.
|
protected MapListener<K,V_FRONT> |
m_listenerRemove
The listener that gets information about what should be thrown out of this cache.
|
protected MemberListener |
m_listenerService
The cache service MemberListener for the underlying NamedCache.
|
protected Map |
m_mapIndex
The map of indexes maintained by this cache.
|
protected ObservableMap<K,V_FRONT> |
m_mapLocal
The keys that are in this ContinuousQueryCache, and (if
m_fCacheValues is true) the corresponding values as well. |
protected Map |
m_mapSyncReq
While the ContinuousQueryCache is configuring or re-configuring its listeners and content, any events that are received must be logged to ensure that the corresponding content is in sync.
|
protected int |
m_nState
State of the ContinuousQueryCache.
|
protected String |
m_sName
The name of the underlying NamedCache.
|
protected ValueExtractor<? super V_BACK,? extends V_FRONT> |
m_transformer
The transformer that should be used to convert values from the underlying cache.
|
static int |
STATE_CONFIGURED
State: The ContinuousQueryCache has been configured.
|
static int |
STATE_CONFIGURING
State: The ContinuousQueryCache is configuring or re-configuring its listeners and content.
|
static int |
STATE_DISCONNECTED
State: Disconnected state.
|
static int |
STATE_SYNCHRONIZED
State: The ContinuousQueryCache has been configured and fully synchronized.
|
LOG_ALWAYS, LOG_DEBUG, LOG_ERR, LOG_INFO, LOG_MAX, LOG_MIN, LOG_QUIET, LOG_WARN, POWER_0, POWER_G, POWER_K, POWER_M, POWER_T, UNIT_D, UNIT_H, UNIT_M, UNIT_MS, UNIT_NS, UNIT_S, UNIT_US
EXPIRY_DEFAULT, EXPIRY_NEVER
LOCK_ALL
Constructor and Description |
---|
ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter)
Create a locally materialized view of a NamedCache using a Filter.
|
ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, boolean fCacheValues)
Create a materialized view of a NamedCache using a Filter.
|
ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, boolean fCacheValues, MapListener<? super K,? super V_FRONT> listener, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
Construct the ContinuousQueryCache.
|
ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, MapListener<? super K,? super V_FRONT> listener)
Create a materialized view of a NamedCache using a Filter.
|
ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, MapListener<? super K,? super V_FRONT> listener, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
Create a materialized view of a NamedCache using a Filter.
|
ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
Create a locally materialized view of a NamedCache using a Filter and a transformer.
|
Modifier and Type | Method and Description |
---|---|
<T,E> void |
addIndex(ValueExtractor<? super T,? extends E> extractor, boolean fOrdered, Comparator<? super E> comparator)
Add an index to this QueryMap.
|
void |
addMapListener(MapListener<? super K,? super V_FRONT> listener)
Add a standard map listener that will receive all events (inserts, updates, deletes) that occur against the map, with the key, old-value and new-value included.
|
void |
addMapListener(MapListener<? super K,? super V_FRONT> listener, Filter filter, boolean fLite)
Add a map listener that receives events based on a filter evaluation.
|
void |
addMapListener(MapListener<? super K,? super V_FRONT> listener, K oKey, boolean fLite)
Add a map listener for a specific key.
|
<R> R |
aggregate(Collection<? extends K> collKeys, InvocableMap.EntryAggregator<? super K,? super V_FRONT,R> aggregator)
Perform an aggregating operation against the entries specified by the passed keys.
|
<R> R |
aggregate(Filter filter, InvocableMap.EntryAggregator<? super K,? super V_FRONT,R> aggregator)
Perform an aggregating operation against the set of entries that are selected by the given Filter.
|
protected void |
changeState(int nState)
Change the state of the ContinuousQueryCache.
|
protected void |
checkEntry(Map.Entry entry)
Check the passed value to verify that it does belong in this ContinuousQueryCache.
|
protected void |
checkEntry(Object oKey, Object oValue)
Check the passed value to verify that it does belong in this ContinuousQueryCache.
|
protected void |
checkReadOnly()
Check the read-only setting to verify that the cache is NOT read-only.
|
void |
clear()
Clear all key/value mappings.
|
protected void |
configureSynchronization(boolean fReload)
Set up the listeners that keep the ContinuousQueryCache up-to-date.
|
protected Filter |
createTransformerFilter(MapEventFilter filterAdd)
Wrap specified MapEventFilter with a MapEventTransformerFilter that will either transform cache value using transformer defined for this ContinuousQueryCache, or remove the old value from the event using SemiLiteEventTransformer, if no transformer is defined for this CQC.
|
void |
destroy()
Release and destroy this instance of NamedCache.
|
protected TaskDaemon |
ensureEventQueue()
Obtain the existing event queue or create one if none exists.
|
protected Map |
ensureIndexMap()
Ensure that the map of indexes maintained by this cache exists.
|
protected void |
ensureSynchronized(boolean fReload)
Ensure that the ContinuousQueryCache listeners have been registered and its content synchronized with the underlying NamedCache.
|
Set<Map.Entry<K,V_FRONT>> |
entrySet(Filter filter)
Return a set view of the entries contained in this map that satisfy the criteria expressed by the filter.
|
Set<Map.Entry<K,V_FRONT>> |
entrySet(Filter filter, Comparator comparator)
Return a set view of the entries contained in this map that satisfy the criteria expressed by the filter.
|
protected Set<Map.Entry<K,V_FRONT>> |
entrySetInternal(Filter filter)
Return multiple values from the back cache based on a filter, transforming them in the process if necessary.
|
protected Set<Map.Entry<K,V_FRONT>> |
entrySetInternal(Filter filter, Comparator comparator)
Return multiple values from the back cache based on a filter, transforming them in the process if necessary.
|
V_FRONT |
get(Object oKey)
Returns the value to which this map maps the specified key.
|
Map<K,V_FRONT> |
getAll(Collection<? extends K> colKeys)
Get all the specified keys, if they are in the Map.
|
protected Map<K,V_FRONT> |
getAllInternal(Collection<? extends K> colKeys)
Return multiple values from the back cache, transforming them in the process if necessary.
|
NamedCache<K,V_BACK> |
getCache()
Obtain the NamedCache that this ContinuousQueryCache is based on.
|
String |
getCacheName()
Return the cache name.
|
CacheService |
getCacheService()
Return the CacheService that this NamedCache is a part of.
|
protected TaskDaemon |
getEventQueue()
Obtain this ContinuousQueryCache's event queue.
|
Filter |
getFilter()
Obtain the Filter that this ContinuousQueryCache is using to query the underlying NamedCache.
|
protected Map |
getIndexMap()
Get the map of indexes maintained by this cache.
|
protected V_FRONT |
getInternal(Object oKey)
Return the value from the back cache, transforming it in the process if necessary.
|
protected ObservableMap<K,V_FRONT> |
getInternalCache()
Obtain a reference to the internal cache.
|
protected Set<K> |
getInternalKeySet()
Obtain a set of keys that are represented by this Map.
|
long |
getReconnectInterval()
Return a reconnection interval (in milliseconds).
|
int |
getState()
Obtain the state of the ContinuousQueryCache.
|
protected MapListener<K,V_FRONT> |
instantiateAddListener()
Factory Method: Instantiate a MapListener for adding items to the ContinuousQueryCache, and (if there are listeners on the ContinuousQueryCache) for dispatching inserts and updates.
|
protected TaskDaemon |
instantiateEventQueue()
Create a self-processing event queue.
|
protected ContinuousQueryCache.EventRouter<K,V_FRONT> |
instantiateEventRouter(MapListener<? super K,? super V_FRONT> listener)
Factory Method: Instantiate a listener on the internal map that will direct events to the passed listener, either synchronously or asynchronously as appropriate.
|
protected ObservableMap<K,V_FRONT> |
instantiateInternalCache()
Create the internal cache used by the ContinuousQueryCache.
|
protected MapListener<K,V_FRONT> |
instantiateRemoveListener()
Factory Method: Instantiate a MapListener for evicting items from the ContinuousQueryCache.
|
<R> R |
invoke(K key, InvocableMap.EntryProcessor<K,V_FRONT,R> processor)
Invoke the passed EntryProcessor against the Entry specified by the passed key, returning the result of the invocation.
|
<R> Map<K,R> |
invokeAll(Collection<? extends K> collKeys, InvocableMap.EntryProcessor<K,V_FRONT,R> processor)
Invoke the passed EntryProcessor against the entries specified by the passed keys, returning the result of the invocation for each.
|
<R> Map<K,R> |
invokeAll(Filter filter, InvocableMap.EntryProcessor<K,V_FRONT,R> processor)
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.
|
boolean |
isCacheValues()
Determine if this ContinuousQueryCache caches values locally.
|
boolean |
isDestroyed()
Specifies whether or not the NamedCache has been destroyed.
|
protected boolean |
isEventDeferred(Object oKey)
Called when an event has occurred.
|
protected boolean |
isObserved()
Determine if the ContinuousQueryCache has any listeners that cannot be served by this Map listening to lite events.
|
boolean |
isReadOnly()
Determine if this ContinuousQueryCache disallows data modification operations.
|
boolean |
isReleased()
Specifies whether or not the NamedCache has been released.
|
boolean |
isTransformed()
Determine if this ContinuousQueryCache transforms values.
|
Set<K> |
keySet(Filter filter)
Return a set view of the keys contained in this map for entries that satisfy the criteria expressed by the filter.
|
boolean |
lock(Object oKey)
Attempt to lock the specified item and return immediately.
|
boolean |
lock(Object oKey, long cWait)
Attempt to lock the specified item within the specified period of time.
|
protected Filter |
mergeFilter(Filter filter)
Return a filter which merges the ContinuousQueueCache's filter with the supplied filter.
|
V_FRONT |
put(K oKey, V_FRONT oValue)
Associates the specified value with the specified key in this map.
|
V_FRONT |
put(K oKey, V_FRONT oValue, long cMillis)
Associates the specified value with the specified key in this cache and allows to specify an expiry for the cache entry.
|
void |
putAll(Map<? extends K,? extends V_FRONT> map)
Copies all of the mappings from the specified map to this map.
|
protected void |
registerServiceListener()
Instantiate and register a MemberListener with the underlying cache service.
|
void |
release()
Release local resources associated with this instance of NamedCache.
|
protected void |
releaseIndexMap()
Release the the entire index map.
|
V_FRONT |
remove(Object oKey)
Removes the mapping for this key from this map if present.
|
protected boolean |
removeBlind(Object oKey)
Removes the mapping for this key from this map if present.
|
<T,E> void |
removeIndex(ValueExtractor<? super T,? extends E> extractor)
Remove an index from this QueryMap.
|
void |
removeMapListener(MapListener<? super K,? super V_FRONT> listener)
Remove a standard map listener that previously signed up for all events.
|
void |
removeMapListener(MapListener<? super K,? super V_FRONT> listener, Filter filter)
Remove a map listener that previously signed up for events based on a filter evaluation.
|
void |
removeMapListener(MapListener<? super K,? super V_FRONT> listener, K oKey)
Remove a map listener that previously signed up for events about a specific key.
|
void |
setCacheValues(boolean fCacheValues)
Modify the local-caching option for the ContinuousQueryCache.
|
protected void |
setObserved(boolean fObserved)
Specify whether the ContinuousQueryCache has any listeners that cannot be served by this Map listening to lite events.
|
void |
setReadOnly(boolean fReadOnly)
Modify the read-only option for the ContinuousQueryCache.
|
void |
setReconnectInterval(long cReconnectMillis)
Specify a reconnection interval (in milliseconds).
|
protected void |
shutdownEventQueue()
Shut down running event queue.
|
protected Map<K,V_FRONT> |
transform(Set<Map.Entry<K,V_BACK>> setIn, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
Transform a set of entries.
|
boolean |
unlock(Object oKey)
Unlock the specified item.
|
protected void |
unregisterServiceListener()
Unregister underlying cache service member listener.
|
containsKey, instantiateEntrySet, instantiateKeyIterator, instantiateKeySet, instantiateValues, isEmpty, isInternalKeySetIteratorMutable, iterateKeys, size
clone, containsValue, entrySet, equals, hashCode, keySet, toString, values
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
finalize, getClass, notify, notifyAll, wait, wait, wait
as, async, async, truncate
compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, getOrDefault, hashCode, isEmpty, keySet, merge, putIfAbsent, remove, replace, replace, replaceAll, size, values
containsKey, containsValue, isEmpty, size
aggregate, compute, compute, computeIfAbsent, computeIfAbsent, computeIfPresent, computeIfPresent, getOrDefault, invokeAll, merge, merge, putIfAbsent, remove, replace, replace, replaceAll, replaceAll, replaceAll, replaceAll, stream, stream, stream, stream, stream, stream
public static final int STATE_DISCONNECTED
public static final int STATE_CONFIGURING
public static final int STATE_CONFIGURED
public static final int STATE_SYNCHRONIZED
protected String m_sName
protected Filter m_filter
protected boolean m_fCacheValues
protected ValueExtractor<? super V_BACK,? extends V_FRONT> m_transformer
protected boolean m_fReadOnly
protected long m_cReconnectMillis
protected volatile long m_ldtConnectionTimestamp
protected ObservableMap<K,V_FRONT> m_mapLocal
m_fCacheValues
is true) the corresponding values as well.protected volatile int m_nState
protected volatile Map m_mapSyncReq
protected volatile TaskDaemon m_eventqueue
protected boolean m_fListeners
protected MapEventFilter m_filterAdd
protected MapEventFilter m_filterRemove
protected MapListener<K,V_FRONT> m_listenerAdd
protected MapListener<K,V_FRONT> m_listenerRemove
protected MemberListener m_listenerService
protected Map m_mapIndex
public ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter)
This constructor will result in a ContinuousQueryCache that caches both its keys and values locally.
cache
- the NamedCache to create a view offilter
- the filter that defines the viewpublic ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
This constructor will result in a read-only ContinuousQueryCache that caches both its keys and transformed values locally.
cache
- the NamedCache to create a view offilter
- the filter that defines the viewtransformer
- the ValueExtractor that should be used to transform values retrieved from the underlying NamedCache before storing them locallypublic ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, boolean fCacheValues)
cache
- the NamedCache to create a view offilter
- the filter that defines the viewfCacheValues
- pass true to cache both the keys and values of the materialized view locally, or false to only cache the keyspublic ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, MapListener<? super K,? super V_FRONT> listener)
cache
- the NamedCache to create a view offilter
- the Filter that defines the viewlistener
- a MapListener that will receive all the events from the ContinuousQueryCache, including those corresponding to its initial populationpublic ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, MapListener<? super K,? super V_FRONT> listener, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
This constructor will result in a read-only ContinuousQueryCache that caches both its keys and transformed values locally. It will also allow a client to receive all events, including those that result from the initial population of the ContinuousQueryCache. In other words, all contents of the ContinuousQueryCache will be delivered to the listener as a sequence of events, including those items that already exist in the underlying (unfiltered) cache.
cache
- the NamedCache to create a view offilter
- the Filter that defines the viewlistener
- a MapListener that will receive all the events from the ContinuousQueryCache, including those corresponding to its initial populationtransformer
- the ValueExtractor that should be used to transform values retrieved from the underlying NamedCache before storing them locallypublic ContinuousQueryCache(NamedCache<K,V_BACK> cache, Filter filter, boolean fCacheValues, MapListener<? super K,? super V_FRONT> listener, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
cache
- the NamedCache to create a view offilter
- the filter that defines the viewfCacheValues
- pass true to cache both the keys and values of the materialized view locally, or false to only cache the keyslistener
- an optional MapListener that will receive all events starting from the initialization of the ContinuousQueryCachetransformer
- an optional ValueExtractor that would be used to transform values retrieved from the underlying cache before storing them locally; if specified, this ContinuousQueryCache will become "read-only"public NamedCache<K,V_BACK> getCache()
public Filter getFilter()
Filter
that this cache uses to select its contents from the underlying NamedCachepublic boolean isCacheValues()
public void setCacheValues(boolean fCacheValues)
This method is not yet implemented.
fCacheValues
- pass true to enable local caching, or false to disable itpublic boolean isTransformed()
public boolean isReadOnly()
public void setReadOnly(boolean fReadOnly)
fReadOnly
- pass true to prohibit clients from making modifications to this cacheprotected ObservableMap<K,V_FRONT> instantiateInternalCache()
protected ObservableMap<K,V_FRONT> getInternalCache()
isCacheValues()
is true, it also maintains the up-to-date values corresponding to those keys.protected boolean isObserved()
protected void setObserved(boolean fObserved)
fObserved
- true iff there is at least one listenerpublic int getState()
protected void changeState(int nState)
nState
- one of the STATE_ enumspublic long getReconnectInterval()
setReconnectInterval(long)
public void setReconnectInterval(long cReconnectMillis)
cReconnectMillis
- reconnection interval (in milliseconds). The value of zero means that the ContinuousQueryCache cannot be used when not connected. If the value is positive, the local content could be accessed (read-only) even if connection is severed.public void clear()
public V_FRONT get(Object oKey)
get
in interface ConcurrentMap<K,V_FRONT>
get
in interface Map<K,V_FRONT>
get
in class AbstractKeyBasedMap<K,V_FRONT>
oKey
- the key objectConcurrentMap.containsKey(Object)
public V_FRONT put(K oKey, V_FRONT oValue)
put
in interface CacheMap<K,V_FRONT>
put
in interface ConcurrentMap<K,V_FRONT>
put
in interface Map<K,V_FRONT>
put
in class AbstractKeyBasedMap<K,V_FRONT>
oKey
- key with which the specified value is to be associatedoValue
- value to be associated with the specified keypublic void putAll(Map<? extends K,? extends V_FRONT> map)
AbstractKeyBasedMap.put(K, V)
on this map once for each mapping in the passed map. The behavior of this operation is unspecified if the passed map is modified while the operation is in progress.public V_FRONT remove(Object oKey)
remove
in interface ConcurrentMap<K,V_FRONT>
remove
in interface Map<K,V_FRONT>
remove
in class AbstractKeyBasedMap<K,V_FRONT>
oKey
- key whose mapping is to be removed from the mappublic Map<K,V_FRONT> getAll(Collection<? extends K> colKeys)
public V_FRONT put(K oKey, V_FRONT oValue, long cMillis)
Note: Though NamedCache interface extends CacheMap
, not all implementations currently support this functionality.
For example, if a cache is configured to be a replicated, optimistic or distributed cache then its backing map must be configured as a local cache. If a cache is configured to be a near cache then the front map must to be configured as a local cache and the back map must support this feature as well, typically by being a distributed cache backed by a local cache (as above.)
put
in interface CacheMap<K,V_FRONT>
put
in interface NamedCache<K,V_FRONT>
oKey
- key with which the specified value is to be associatedoValue
- value to be associated with the specified keycMillis
- 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()protected boolean removeBlind(Object oKey)
removeBlind
in class AbstractKeyBasedMap<K,V_FRONT>
oKey
- key whose mapping is to be removed from the mapprotected Set<K> getInternalKeySet()
The AbstractKeySetBasedMap only utilizes the internal key set as a read-only resource.
getInternalKeySet
in class AbstractKeySetBasedMap<K,V_FRONT>
public void addMapListener(MapListener<? super K,? super V_FRONT> listener)
addMapListener(listener, (Filter) null, false);
addMapListener
in interface ObservableMap<K,V_FRONT>
listener
- the MapEvent
listener to addpublic void removeMapListener(MapListener<? super K,? super V_FRONT> listener)
removeMapListener(listener, (Filter) null);
removeMapListener
in interface ObservableMap<K,V_FRONT>
listener
- the listener to removepublic void addMapListener(MapListener<? super K,? super V_FRONT> listener, K oKey, boolean fLite)
The listeners will receive MapEvent objects, but if fLite is passed as true, they might not contain the OldValue and NewValue properties.
To unregister the MapListener, use the ObservableMap.removeMapListener(MapListener, Object)
method.
addMapListener
in interface ObservableMap<K,V_FRONT>
listener
- the MapEvent
listener to addoKey
- the key that identifies the entry for which to raise eventsfLite
- true to indicate that the MapEvent
objects do not have to include the OldValue and NewValue property values in order to allow optimizationspublic void removeMapListener(MapListener<? super K,? super V_FRONT> listener, K oKey)
removeMapListener
in interface ObservableMap<K,V_FRONT>
listener
- the listener to removeoKey
- the key that identifies the entry for which to raise eventspublic void addMapListener(MapListener<? super K,? super V_FRONT> listener, Filter filter, boolean fLite)
The listeners will receive MapEvent objects, but if fLite is passed as true, they might not contain the OldValue and NewValue properties.
To unregister the MapListener, use the ObservableMap.removeMapListener(MapListener, Filter)
method.
addMapListener
in interface ObservableMap<K,V_FRONT>
listener
- the MapEvent
listener to addfilter
- a filter that will be passed MapEvent objects to select from; a MapEvent will be delivered to the listener only if the filter evaluates to true for that MapEvent (see MapEventFilter
); null is equivalent to a filter that alway returns truefLite
- true to indicate that the MapEvent
objects do not have to include the OldValue and NewValue property values in order to allow optimizationspublic void removeMapListener(MapListener<? super K,? super V_FRONT> listener, Filter filter)
removeMapListener
in interface ObservableMap<K,V_FRONT>
listener
- the listener to removefilter
- the filter that was passed into the corresponding addMapListener() callpublic Set<K> keySet(Filter 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.
public Set<Map.Entry<K,V_FRONT>> entrySet(Filter filter)
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.
public Set<Map.Entry<K,V_FRONT>> entrySet(Filter filter, Comparator comparator)
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.
entrySet
in interface QueryMap<K,V_FRONT>
filter
- the Filter object representing the criteria that the entries of this map should satisfycomparator
- the Comparator object which imposes an ordering on entries in the resulting set; or null if the entries' values natural ordering should be usedChainedComparator
public <T,E> void addIndex(ValueExtractor<? super T,? extends E> extractor, boolean fOrdered, Comparator<? super E> comparator)
The ordering maintained by this map (as determined by either the specified Comparator or the natural ordering of the indexed values) must be consistent with equals (see Comparable
or Comparator
for a precise definition of consistent with equals.)
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.
addIndex
in interface QueryMap<K,V_FRONT>
T
- the type of the value to extract fromE
- the type of value that will be extractedextractor
- 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 otherwisecomparator
- the Comparator object which imposes an ordering on entries in the indexed map; or null if the entries' values natural ordering should be usedReflectionExtractor
, ChainedComparator
public <T,E> void removeIndex(ValueExtractor<? super T,? extends E> extractor)
removeIndex
in interface QueryMap<K,V_FRONT>
T
- the type of the value to extract fromE
- the type of value that will be extractedextractor
- the ValueExtractor object that is used to extract an indexable Object from a value stored in the Map.public <R> R invoke(K key, InvocableMap.EntryProcessor<K,V_FRONT,R> processor)
In order to invoke an entry processor on a back cache in a type-safe manner you must use getCache()
.invoke()
instead.
invoke
in interface InvocableMap<K,V_FRONT>
R
- the type of value returned by the EntryProcessorkey
- the key to process; it is not required to exist within the Mapprocessor
- the EntryProcessor to use to process the specified keypublic <R> Map<K,R> invokeAll(Collection<? extends K> collKeys, InvocableMap.EntryProcessor<K,V_FRONT,R> processor)
In order to invoke an entry processor on a back cache in a type-safe manner you must use getCache()
.invokeAll()
instead.
invokeAll
in interface InvocableMap<K,V_FRONT>
R
- the type of value returned by the EntryProcessorcollKeys
- the keys to process; these keys are not required to exist within the Mapprocessor
- the EntryProcessor to use to process the specified keyspublic <R> Map<K,R> invokeAll(Filter filter, InvocableMap.EntryProcessor<K,V_FRONT,R> processor)
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
.
In order to invoke an entry processor on a back cache in a type-safe manner you must use getCache()
.invokeAll()
instead.
invokeAll
in interface InvocableMap<K,V_FRONT>
R
- the type of value returned by the EntryProcessorfilter
- a Filter that results in the set of keys to be processedprocessor
- the EntryProcessor to use to process the specified keyspublic <R> R aggregate(Collection<? extends K> collKeys, InvocableMap.EntryAggregator<? super K,? super V_FRONT,R> aggregator)
aggregate
in interface InvocableMap<K,V_FRONT>
R
- the type of value returned by the EntryAggregatorcollKeys
- the Collection of keys that specify the entries within this Map to aggregate acrossaggregator
- the EntryAggregator that is used to aggregate across the specified entries of this Mappublic <R> R aggregate(Filter filter, InvocableMap.EntryAggregator<? super K,? super V_FRONT,R> aggregator)
aggregate
in interface InvocableMap<K,V_FRONT>
R
- the type of value returned by the EntryAggregatorfilter
- the Filter that is used to select entries within this Map to aggregate acrossaggregator
- the EntryAggregator that is used to aggregate across the selected entries of this Mappublic boolean lock(Object oKey, long cWait)
The item doesn't have to exist to be locked. While the item is locked there is known to be a lock holder which has an exclusive right to modify (calling put and remove methods) that item.
Lock holder is an abstract concept that depends on the ConcurrentMap implementation. For example, holder could be a cluster member or a thread (or both).
Locking strategy may vary for concrete implementations as well. Lock could have an expiration time (this lock is sometimes called a "lease") or be held indefinitely (until the lock holder terminates).
Some implementations may allow the entire map to be locked. If the map is locked in such a way, then only a lock holder is allowed to perform any of the "put" or "remove" operations. Pass the special constant ConcurrentMap.LOCK_ALL
as the oKey parameter to indicate the map lock.
lock
in interface ConcurrentMap<K,V_FRONT>
oKey
- key being lockedcWait
- the number of milliseconds to continue trying to obtain a lock; pass zero to return immediately; pass -1 to block the calling thread until the lock could be obtainedpublic boolean lock(Object oKey)
This method behaves exactly as if it simply performs the call lock(oKey, 0).
lock
in interface ConcurrentMap<K,V_FRONT>
oKey
- key being lockedpublic boolean unlock(Object oKey)
unlock
in interface ConcurrentMap<K,V_FRONT>
oKey
- key being unlockedpublic String getCacheName()
getCacheName
in interface NamedCache<K,V_FRONT>
public CacheService getCacheService()
getCacheService
in interface NamedCache<K,V_FRONT>
public boolean isActive()
isActive
in interface NamedCache<K,V_FRONT>
public void release()
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 afterward will result in an exception.
Caches should be released by the same mechanism in which they were obtained. For example:
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.
release
in interface NamedCache<K,V_FRONT>
CacheFactory.releaseCache(NamedCache)
, ConfigurableCacheFactory.releaseCache(NamedCache)
public void destroy()
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 internal resources will be released.
Caches should be destroyed by the same mechanism in which they were obtained. For example:
destroy
in interface NamedCache<K,V_FRONT>
CacheFactory.destroyCache(NamedCache)
, ConfigurableCacheFactory.destroyCache(NamedCache)
public boolean isDestroyed()
isDestroyed
in interface NamedCache<K,V_FRONT>
public boolean isReleased()
isReleased
in interface NamedCache<K,V_FRONT>
protected V_FRONT getInternal(Object oKey)
oKey
- the key to get the associated value forprotected Map<K,V_FRONT> getAllInternal(Collection<? extends K> colKeys)
colKeys
- the keys to get the associated values forprotected Set<Map.Entry<K,V_FRONT>> entrySetInternal(Filter filter)
filter
- the filter to find the entries forprotected Set<Map.Entry<K,V_FRONT>> entrySetInternal(Filter filter, Comparator comparator)
filter
- the filter to find the entries forprotected Map<K,V_FRONT> transform(Set<Map.Entry<K,V_BACK>> setIn, ValueExtractor<? super V_BACK,? extends V_FRONT> transformer)
setIn
- the set of entries to transformtransformer
- the transformer to useprotected Filter mergeFilter(Filter filter)
filter
- the filter to merge with this cache's filterprotected void checkReadOnly()
IllegalStateException
- if the ContinuousQueryCache is read-onlyprotected void checkEntry(Map.Entry entry)
entry
- a key value pair to check.IllegalArgumentException
- if the entry does not belong in this ContinuousQueryCache (based on the cache's filter)protected void checkEntry(Object oKey, Object oValue)
oKey
- the key for the entryoValue
- the value for the entryIllegalArgumentException
- if the entry does not belong in this ContinuousQueryCache (based on the cache's filter)protected void configureSynchronization(boolean fReload)
fReload
- pass true to force a data reloadprotected Filter createTransformerFilter(MapEventFilter filterAdd)
filterAdd
- add filter to wrapprotected void ensureSynchronized(boolean fReload)
fReload
- the value to pass to the #configureSynchronization method if the ContinuousQueryCache needs to be configured and synchronizedprotected boolean isEventDeferred(Object oKey)
oKey
- the key that the event is related toprotected Map ensureIndexMap()
protected Map getIndexMap()
protected void releaseIndexMap()
protected MapListener<K,V_FRONT> instantiateAddListener()
protected MapListener<K,V_FRONT> instantiateRemoveListener()
protected void registerServiceListener()
The primary goal of that listener is invalidation of the front map in case of the service [automatic] restart.
protected void unregisterServiceListener()
protected ContinuousQueryCache.EventRouter<K,V_FRONT> instantiateEventRouter(MapListener<? super K,? super V_FRONT> listener)
listener
- the listener to route toprotected TaskDaemon instantiateEventQueue()
protected TaskDaemon getEventQueue()
protected TaskDaemon ensureEventQueue()
protected void shutdownEventQueue()