Skip navigation links

Oracle® Coherence Java API Reference
Release 12.1.2.0.3

E26043-02


com.tangosol.util
Class WrapperObservableMap

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

All Implemented Interfaces:
ObservableMap, java.util.Map
Direct Known Subclasses:
ObservableSplittingBackingMap, WrapperConcurrentMap

public class WrapperObservableMap
extends AbstractKeySetBasedMap
implements ObservableMap

A simple implementation of ObservableMap interface built as a wrapper around any Map implementation. It also provides an implementation of CacheStatistics interface.

Note: as of Coherence 3.0 the CacheStatistics implementation has to be turned on explicitly by calling the setCollectStats(boolean) method.

Note: if the underlying (wrapped) Map is an ObservableMap by itself, as of Coherence 3.2 the WrapperObservableMap implementation does not translate events generated the wrapped map by default. The translation can be turned on explicitly by calling the setTranslateEvents(boolean) method.

Since:
Coherence 2.3
Author:
gg 2003.10.01

Nested Class Summary
protected  class WrapperObservableMap.InternalListener
          An internal MapListener that listens to the wrapped map.

 

Nested classes/interfaces inherited from class com.tangosol.util.AbstractKeySetBasedMap
AbstractKeySetBasedMap.EntrySet, AbstractKeySetBasedMap.KeyIterator, AbstractKeySetBasedMap.KeySet, AbstractKeySetBasedMap.ValuesCollection

 

Nested classes/interfaces inherited from class com.tangosol.util.AbstractKeyBasedMap
AbstractKeyBasedMap.DeferredCacheEvent

 

Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry

 

Field Summary
protected  boolean m_fDeferredEvent
          Specifies whether or not fabricated events could be deferred.
protected  boolean m_fTranslateEvents
          Specifies whether or not events are translated by this wrapper.
protected  MapListener m_listenerInternal
          The MapListener used to listen to the wrapped ObservableMap.
protected  MapListenerSupport m_listenerSupport
          The event listeners.
protected  java.util.Map m_map
          The (wrapped) map containing all the resources.
protected  SimpleCacheStatistics m_stats
          The CacheStatistics object maintained by this wrapper.

 

Constructor Summary
WrapperObservableMap(java.util.Map map)
          Construct an ObservableMap wrapper based on the specified map.
WrapperObservableMap(java.util.Map map, boolean fDeferredEvent)
          Construct an ObservableMap wrapper based on the specified map.

 

Method Summary
 void addMapListener(MapListener 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 listener, Filter filter, boolean fLite)
          Add a map listener that receives events based on a filter evaluation.
 void addMapListener(MapListener listener, java.lang.Object oKey, boolean fLite)
          Add a map listener for a specific key.
 void clear()
          Clear all key/value mappings.
 boolean containsValue(java.lang.Object oValue)
          Returns true if this Map maps one or more keys to the specified value.
protected  void dispatchEvent(MapEvent evt)
          Dispatch the passed event.
protected  void dispatchPendingEvent(java.lang.Object oKey, int nId, java.lang.Object oNewValue, boolean fSynthetic)
          Dispatch an event that has not yet occurred, allowing the cache to potentially avoid reading of the "original value" information.
protected  MapListener ensureInternalListener()
          Obtain the internal MapListener, creating one if necessary.
protected  MapListenerSupport ensureMapListenerSupport()
          Obtain the MapListenerSupport, creating it if necessary.
 java.lang.Object get(java.lang.Object oKey)
          Returns the value to which this map maps the specified key.
 CacheStatistics getCacheStatistics()
          Return the CacheStatistics for this cache.
protected  java.lang.String getDescription()
          Assemble a human-readable description.
protected  java.util.Set getInternalKeySet()
          Obtain a set of keys that are represented by this Map.
 java.util.Map getMap()
          Get the Map that is wrapped by this wrapper.
protected  MapListenerSupport getMapListenerSupport()
          Accessor for the MapListenerSupport for sub-classes.
protected  boolean hasListeners()
          Determine if the OverflowMap has any listeners at all.
protected  MapListener instantiateInternalListener()
          Instantiate a MapListener to listen to the wrapped map.
 boolean isCollectStats()
          Check whether or not statistics are collected by the wrapper.
protected  boolean isEventFabricator()
          Determine if this ObservableMap has to fabricate events itself.
protected  boolean isInternalKeySetIteratorMutable()
          Determine if this Iterator should remove an iterated item by calling remove on the internal key Set Iterator, or by calling removeBlind on the map itself.
protected static boolean isSynthetic(MapEvent evt)
          Helper method to determine if an event is synthetic.
 boolean isTranslateEvents()
          Check whether or not an event source has to be translated by the wrapper.
 java.lang.Object put(java.lang.Object oKey, java.lang.Object oValue)
          Associates the specified value with the specified key in this map.
 void putAll(java.util.Map map)
          Copies all of the mappings from the specified map to this map.
 java.lang.Object remove(java.lang.Object oKey)
          Removes the mapping for this key from this map if present.
protected  boolean removeBlind(java.lang.Object oKey)
          Removes the mapping for this key from this map if present.
 void removeMapListener(MapListener listener)
          Remove a standard map listener that previously signed up for all events.
 void removeMapListener(MapListener listener, Filter filter)
          Remove a map listener that previously signed up for events based on a filter evaluation.
 void removeMapListener(MapListener listener, java.lang.Object oKey)
          Remove a map listener that previously signed up for events about a specific key.
 void setCollectStats(boolean fCollectStats)
          Specify whether or not statistics are to be collected by the wrapper.
 void setTranslateEvents(boolean fTranslate)
          Specify whether or not an event source has to be translated by the wrapper.
 java.lang.String toString()
          Returns a string representation of this Map.

 

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, getAll, hashCode, keySet, values

 

Methods inherited from interface java.util.Map
containsKey, entrySet, equals, hashCode, isEmpty, keySet, size, values

 

Field Detail

m_map

protected java.util.Map m_map
The (wrapped) map containing all the resources.

m_listenerSupport

protected MapListenerSupport m_listenerSupport
The event listeners.

m_listenerInternal

protected MapListener m_listenerInternal
The MapListener used to listen to the wrapped ObservableMap.

m_stats

protected SimpleCacheStatistics m_stats
The CacheStatistics object maintained by this wrapper.

m_fTranslateEvents

protected boolean m_fTranslateEvents
Specifies whether or not events are translated by this wrapper.

m_fDeferredEvent

protected boolean m_fDeferredEvent
Specifies whether or not fabricated events could be deferred.

Constructor Detail

WrapperObservableMap

public WrapperObservableMap(java.util.Map map)
Construct an ObservableMap wrapper based on the specified map.

Note: it is assumed that while the WrapperObservableMap exists, the contents of the underlying wrapped map are not directly manipulated.

Parameters:
map - the Map that will be wrapped by this WrapperObservableMap

WrapperObservableMap

public WrapperObservableMap(java.util.Map map,
                            boolean fDeferredEvent)
Construct an ObservableMap wrapper based on the specified map.

Note: it is assumed that while the WrapperObservableMap exists, the contents of the underlying wrapped map are not directly manipulated.

Parameters:
map - the Map that will be wrapped by this WrapperObservableMap
fDeferredEvent - true iff if the value contained in the fabricated cache events could be lazily populated. Deferred events should only be raised to listeners that will process events synchronously

Method Detail

clear

public void clear()
Clear all key/value mappings.
Specified by:
clear in interface java.util.Map
Overrides:
clear in class AbstractKeyBasedMap

containsValue

public boolean containsValue(java.lang.Object oValue)
Returns true if this Map maps one or more keys to the specified value.
Specified by:
containsValue in interface java.util.Map
Overrides:
containsValue in class AbstractKeyBasedMap
Returns:
true if this Map maps one or more keys to the specified value, false otherwise

get

public java.lang.Object get(java.lang.Object oKey)
Returns the value to which this map maps the specified key.
Specified by:
get in interface java.util.Map
Specified by:
get in class AbstractKeyBasedMap
Parameters:
oKey - the key object
Returns:
the value to which this map maps the specified key, or null if the map contains no mapping for this key

put

public java.lang.Object put(java.lang.Object oKey,
                            java.lang.Object oValue)
Associates the specified value with the specified key in this map.
Specified by:
put in interface java.util.Map
Overrides:
put in class AbstractKeyBasedMap
Parameters:
oKey - key with which the specified value is to be associated
oValue - value to be associated with the specified key
Returns:
previous value associated with specified key, or null if there was no mapping for key

putAll

public void putAll(java.util.Map map)
Copies all of the mappings from the specified map to this map. The effect of this call is equivalent to that of calling AbstractKeyBasedMap.put(java.lang.Object, java.lang.Object) 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.
Specified by:
putAll in interface java.util.Map
Overrides:
putAll in class AbstractKeyBasedMap
Parameters:
map - the Map containing the key/value pairings to put into this Map

remove

public java.lang.Object remove(java.lang.Object oKey)
Removes the mapping for this key from this map if present. Expensive: updates both the underlying cache and the local cache.
Specified by:
remove in interface java.util.Map
Overrides:
remove in class AbstractKeyBasedMap
Parameters:
oKey - key whose mapping is to be removed from the map
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.

getInternalKeySet

protected java.util.Set getInternalKeySet()
Obtain a set of keys that are represented by this Map.

The AbstractKeySetBasedMap only utilizes the internal key set as a read-only resource.

Specified by:
getInternalKeySet in class AbstractKeySetBasedMap
Returns:
an internal Set of keys that are contained by this Map

isInternalKeySetIteratorMutable

protected boolean isInternalKeySetIteratorMutable()
Determine if this Iterator should remove an iterated item by calling remove on the internal key Set Iterator, or by calling removeBlind on the map itself.
Overrides:
isInternalKeySetIteratorMutable in class AbstractKeySetBasedMap
Returns:
true to remove using the internal key Set Iterator or false to use the AbstractKeyBasedMap.removeBlind(Object) method

removeBlind

protected boolean removeBlind(java.lang.Object oKey)
Removes the mapping for this key from this map if present. This method exists to allow sub-classes to optmiize remove functionalitly for situations in which the original value is not required.
Overrides:
removeBlind in class AbstractKeyBasedMap
Parameters:
oKey - key whose mapping is to be removed from the map
Returns:
true iff the Map changed as the result of this operation

addMapListener

public void addMapListener(MapListener 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. This has the same result as the following call:
   addMapListener(listener, (Filter) null, false);
 
Specified by:
addMapListener in interface ObservableMap
Parameters:
listener - the MapEvent listener to add

removeMapListener

public void removeMapListener(MapListener listener)
Remove a standard map listener that previously signed up for all events. This has the same result as the following call:
   removeMapListener(listener, (Filter) null);
 
Specified by:
removeMapListener in interface ObservableMap
Parameters:
listener - the listener to remove

addMapListener

public void addMapListener(MapListener listener,
                           java.lang.Object oKey,
                           boolean fLite)
Add a map listener for a specific key.

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.

Specified by:
addMapListener in interface ObservableMap
Parameters:
listener - the MapEvent listener to add
oKey - the key that identifies the entry for which to raise events
fLite - true to indicate that the MapEvent objects do not have to include the OldValue and NewValue property values in order to allow optimizations

removeMapListener

public void removeMapListener(MapListener listener,
                              java.lang.Object oKey)
Remove a map listener that previously signed up for events about a specific key.
Specified by:
removeMapListener in interface ObservableMap
Parameters:
listener - the listener to remove
oKey - the key that identifies the entry for which to raise events

addMapListener

public void addMapListener(MapListener listener,
                           Filter filter,
                           boolean fLite)
Add a map listener that receives events based on a filter evaluation.

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.

Specified by:
addMapListener in interface ObservableMap
Parameters:
listener - the MapEvent listener to add
filter - 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 true
fLite - true to indicate that the MapEvent objects do not have to include the OldValue and NewValue property values in order to allow optimizations

removeMapListener

public void removeMapListener(MapListener listener,
                              Filter filter)
Remove a map listener that previously signed up for events based on a filter evaluation.
Specified by:
removeMapListener in interface ObservableMap
Parameters:
listener - the listener to remove
filter - the filter that was passed into the corresponding addMapListener() call

getMap

public java.util.Map getMap()
Get the Map that is wrapped by this wrapper.

Note: direct modifications of the returned map may cause an unpredictable behavior of the wrapper map.

Returns:
the wrapped Map

getCacheStatistics

public CacheStatistics getCacheStatistics()
Return the CacheStatistics for this cache.
Returns:
a CacheStatistics object

isCollectStats

public boolean isCollectStats()
Check whether or not statistics are collected by the wrapper.
Returns:
true if this wrapper collects cache statistics; false otherwise
Since:
Coherence 3.0

setCollectStats

public void setCollectStats(boolean fCollectStats)
Specify whether or not statistics are to be collected by the wrapper.
Parameters:
fCollectStats - true if this wrapper should collect cache statistics; false otherwise
Since:
Coherence 3.0

isTranslateEvents

public boolean isTranslateEvents()
Check whether or not an event source has to be translated by the wrapper.

Note: this setting is only meaningful if the underlying map is an ObservableMap itself.

Returns:
true if this wrapper translates an event source; false otherwise
Since:
Coherence 3.3

setTranslateEvents

public void setTranslateEvents(boolean fTranslate)
Specify whether or not an event source has to be translated by the wrapper.

Note: this setting is only meaningful if the underlying map is an ObservableMap itself.

Parameters:
fTranslate - true if this wrapper should translate an event source; false otherwise
Since:
Coherence 3.3

getDescription

protected java.lang.String getDescription()
Assemble a human-readable description.
Returns:
a description of this Map

toString

public java.lang.String toString()
Returns a string representation of this Map. The string representation consists of a list of key-value mappings in the order returned by the Map's entrySet view's iterator, enclosed in braces ("{}"). Adjacent mappings are separated by the characters ", " (comma and space). Each key-value mapping is rendered as the key followed by an equals sign ("=") followed by the associated value. Keys and values are converted to strings as by String.valueOf(Object).
Overrides:
toString in class AbstractKeyBasedMap
Returns:
a String representation of this Map

getMapListenerSupport

protected MapListenerSupport getMapListenerSupport()
Accessor for the MapListenerSupport for sub-classes.
Returns:
the MapListenerSupport, or null if there are no listeners

ensureMapListenerSupport

protected MapListenerSupport ensureMapListenerSupport()
Obtain the MapListenerSupport, creating it if necessary.
Returns:
the MapListenerSupport; never null

hasListeners

protected boolean hasListeners()
Determine if the OverflowMap has any listeners at all.
Returns:
true iff this OverflowMap has at least one MapListener

isEventFabricator

protected boolean isEventFabricator()
Determine if this ObservableMap has to fabricate events itself.
Returns:
true if events are expected, but the wrapped Map does not generate any events itself

isSynthetic

protected static boolean isSynthetic(MapEvent evt)
Helper method to determine if an event is synthetic.
Parameters:
evt - a Map Event
Returns:
true if the event is a synthetic cache event

dispatchPendingEvent

protected void dispatchPendingEvent(java.lang.Object oKey,
                                    int nId,
                                    java.lang.Object oNewValue,
                                    boolean fSynthetic)
Dispatch an event that has not yet occurred, allowing the cache to potentially avoid reading of the "original value" information.
Parameters:
oKey - the key which the event is related to
nId - the event ID
oNewValue - the new value
fSynthetic - true if the event is synthetic

dispatchEvent

protected void dispatchEvent(MapEvent evt)
Dispatch the passed event.
Parameters:
evt - a CacheEvent object

ensureInternalListener

protected MapListener ensureInternalListener()
Obtain the internal MapListener, creating one if necessary.
Returns:
an instance of MapListener; never null

instantiateInternalListener

protected MapListener instantiateInternalListener()
Instantiate a MapListener to listen to the wrapped map.
Returns:
an instance of MapListener

Skip navigation links

Oracle® Coherence Java API Reference
Release 12.1.2.0.3

E26043-02


Copyright © 2000, 2014, Oracle and/or its affiliates. All rights reserved.