protected abstract static class AbstractKeyBasedMap.DeferredCacheEvent<K,V> extends CacheEvent<K,V>
CacheEvent
object that defers the loading
of the old value
.
This event has two predominant states; active and inactive. The event is
active from incarnation and can transition to inactive (via deactivate()
)
but not vice-versa. Being active allows the getOldValue implementation
to load the value from underlying map, thus all consumers of this
event must ensure they call getOldValue prior to returning control when
this event is dispatched.
Once inactive the correct value may no longer be available in the map thus in this state a getOldValue will return either null or the cached old value.
CacheEvent.TransformationState
Modifier and Type | Field and Description |
---|---|
protected boolean |
m_fActive
Whether the DeferredCacheEvent is in an active or inactive state.
|
m_fPriming, m_fSynthetic, m_transformState
ENTRY_DELETED, ENTRY_INSERTED, ENTRY_UPDATED, m_nId, m_oKey, m_oValueNew, m_oValueOld
source
Constructor and Description |
---|
DeferredCacheEvent(ObservableMap<K,V> map,
int nId,
K oKey,
V oValueOld,
V oValueNew,
boolean fSynthetic)
Constructs a new DeferredCacheEvent.
|
Modifier and Type | Method and Description |
---|---|
void |
deactivate()
Deactivate this DeferredCacheEvent instance.
|
V |
getOldValue()
Return an old value associated with this event.
|
protected abstract V |
readOldValue()
Perform a deferred read for the old value in a usage-specific way.
|
getDescription, getTransformationState, isPriming, isSynthetic, shouldDispatch
dispatch, dispatch, dispatch, getDescription, getId, getKey, getMap, getNewEntry, getNewValue, getOldEntry, isDelete, isInsert, isUpdate, readExternal, toString, writeExternal
getSource
protected volatile boolean m_fActive
public DeferredCacheEvent(ObservableMap<K,V> map, int nId, K oKey, V oValueOld, V oValueNew, boolean fSynthetic)
map
- the ObservableMapnId
- this event's id, one of MapEvent.ENTRY_INSERTED
,
MapEvent.ENTRY_UPDATED
or MapEvent.ENTRY_DELETED
oKey
- the key into the mapoValueOld
- the old value (for update and delete events)oValueNew
- the new value (for insert and update events)fSynthetic
- true iff the event is caused by the cache
internal processing such as eviction or loadingpublic V getOldValue()
The old value represents a value deleted from or updated in a map. It is always null for "insert" notifications.
getOldValue
in class MapEvent<K,V>
protected abstract V readOldValue()
public void deactivate()
getOldValue()
calls using the underlying map *after*
the event dispatching code returned and the content of the map had
been changed to a new value.
The contract between the DeferredCacheEvent and consumers of
the event states that consumers must call getOldValue
prior to
returning from event dispatching logic.