Class ConcurrentMapAdapter<K,V>
- java.lang.Object
-
- com.apama.correlator.memstore.AbstractTable
-
- com.apama.correlator.memstore.ConcurrentMapAdapter<K,V>
-
- Type Parameters:
K
- The class used to represent keys. Typically this is String, but could alternatively be an application-specific class (if a custom converter is supplied).V
- The class used to represent row values. Typically this isRowValue
, but could alternatively be an application-specific class (if a custom converter is supplied).
- All Implemented Interfaces:
java.lang.Iterable<java.util.Map.Entry<java.lang.String,RowValue>>
public class ConcurrentMapAdapter<K,V> extends AbstractTable
Helper class for implementing the distributed MemoryStore AbstractTable class using an instance of ConcurrentMap, which is exposed by many providers.Usually the type parameters for this class will be String,
RowValue
, but if the distributed data is being shared with other non-Apama applications it is possible to use any desired Java class for the K and V type parameters, provided an appropriate converter is supplied when the constructor is invoked.Drivers may optionally provide support for 'row changed' notifications. See the documentation for
AbstractTable
for further details.- See Also:
- ConcurrentMap,
AbstractTable
-
-
Constructor Summary
Constructors Constructor Description ConcurrentMapAdapter(java.util.concurrent.ConcurrentMap<K,V> map)
Create a table implementation that handles all accessor methods by calling the supplied map, translating keys and values by casting to/from String (for keys) and RowValue (for row values).ConcurrentMapAdapter(java.util.concurrent.ConcurrentMap<K,V> map, RowKeyValueConverter<K,V> converter)
Create a table implementation that handles all accessor methods by calling the supplied map, translating keys and values via the supplied converter.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Removes all of the mappings from this map (optional operation).boolean
containsKey(java.lang.String key)
Returns true if this map contains a mapping for the specified key.RowValue
get(java.lang.String key)
Returns the value to which the specified key is mapped, ornull
if this map contains no mapping for the key.java.util.Iterator<java.util.Map.Entry<java.lang.String,RowValue>>
iterator()
Returns an iterator over all the rows of this table.void
put(java.lang.String key, RowValue value)
Associates the specified key with the given value.RowValue
putIfAbsent(java.lang.String key, RowValue value)
If the specified key is not already associated with a value, associates it with the given value.RowValue
remove(java.lang.String key)
Removes the mapping for a key from this map if it is present.boolean
remove(java.lang.String key, RowValue value)
Removes the entry for a key only if currently mapped to a given value.boolean
replace(java.lang.String key, RowValue oldValue, RowValue newValue)
Replaces the entry for a key only if it is currently mapped to a given value.int
size()
Returns the number of key-value mappings in this map.java.lang.String
toString()
-
Methods inherited from class com.apama.correlator.memstore.AbstractTable
close, getRowChangedSubscriptionManager
-
-
-
-
Constructor Detail
-
ConcurrentMapAdapter
public ConcurrentMapAdapter(java.util.concurrent.ConcurrentMap<K,V> map, RowKeyValueConverter<K,V> converter)
Create a table implementation that handles all accessor methods by calling the supplied map, translating keys and values via the supplied converter.- Parameters:
map
- the map this class will be adapting to
-
ConcurrentMapAdapter
public ConcurrentMapAdapter(java.util.concurrent.ConcurrentMap<K,V> map)
Create a table implementation that handles all accessor methods by calling the supplied map, translating keys and values by casting to/from String (for keys) and RowValue (for row values).Do not use this constructor overload if the map may contain keys and values put there by another (non-Apama) application, using some custom class other than RowValue to represent the values in the map (or a class other than String to represent the keys).
- Parameters:
map
- the map this class will be adapting to
-
-
Method Detail
-
get
public RowValue get(java.lang.String key)
Description copied from class:AbstractTable
Returns the value to which the specified key is mapped, ornull
if this map contains no mapping for the key.- Specified by:
get
in classAbstractTable
- Parameters:
key
- the key whose associated value is to be returned- Returns:
- the value to which the specified key is mapped, or
null
if this map contains no mapping for the key
-
clear
public void clear()
Description copied from class:AbstractTable
Removes all of the mappings from this map (optional operation). The map will be empty after this call returns.- Specified by:
clear
in classAbstractTable
-
remove
public RowValue remove(java.lang.String key)
Description copied from class:AbstractTable
Removes the mapping for a key from this map if it is present. More formally, if this map contains a mapping from key k to value v such that(key==null ? k==null : key.equals(k))
, that mapping is removed. (The map can contain at most one such mapping.)Returns the value to which this map previously associated the key, or null if the map contained no mapping for the key.
- Specified by:
remove
in classAbstractTable
- Parameters:
key
- key whose mapping is to be removed from the map- Returns:
- the previous value associated with key, or null if there was no mapping for key
-
remove
public boolean remove(java.lang.String key, RowValue value)
Description copied from class:AbstractTable
Removes the entry for a key only if currently mapped to a given value.- Specified by:
remove
in classAbstractTable
- Parameters:
key
- key with which the specified value is associatedvalue
- value expected to be associated with the specified key- Returns:
- true if the value was removed
-
replace
public boolean replace(java.lang.String key, RowValue oldValue, RowValue newValue)
Description copied from class:AbstractTable
Replaces the entry for a key only if it is currently mapped to a given value. Compare and swap.- Specified by:
replace
in classAbstractTable
- Parameters:
key
- key with which the specified value is associatedoldValue
- value expected to be associated with the specified keynewValue
- value to be associated with the specified key- Returns:
- true if the value was replaced
-
putIfAbsent
public RowValue putIfAbsent(java.lang.String key, RowValue value)
Description copied from class:AbstractTable
If the specified key is not already associated with a value, associates it with the given value.- Specified by:
putIfAbsent
in classAbstractTable
- Parameters:
key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified key- Returns:
- null if there was no mapping for the key. The current value associated with the specified key if a mapping already existed.
-
put
public void put(java.lang.String key, RowValue value)
Description copied from class:AbstractTable
Associates the specified key with the given value. If an entry for the given key already exists then the entry is replaced.The default implementation of this method throws UnsupportedOperationException. Subclasses should override this method and have it perform unconditional put if required.
- Overrides:
put
in classAbstractTable
- Parameters:
key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified key throws UnsupportedOperationException if the unconditional put is not supported by this map.
-
containsKey
public boolean containsKey(java.lang.String key)
Description copied from class:AbstractTable
Returns true if this map contains a mapping for the specified key.- Specified by:
containsKey
in classAbstractTable
- Parameters:
key
- key whose presence in this map is to be tested- Returns:
- true if this map contains a mapping for the specified key
-
size
public int size()
Description copied from class:AbstractTable
Returns the number of key-value mappings in this map. If the map contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.- Specified by:
size
in classAbstractTable
- Returns:
- the number of key-value mappings in this map
-
iterator
public java.util.Iterator<java.util.Map.Entry<java.lang.String,RowValue>> iterator()
Description copied from class:AbstractTable
Returns an iterator over all the rows of this table.Note: a simple way to construct a Map.Entry is to use the AbstractMap.SimpleEntry class.
- Specified by:
iterator
in interfacejava.lang.Iterable<K>
- Specified by:
iterator
in classAbstractTable
- Returns:
- an iterator
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-