Interface ChangeRecord<K,V>
ChangeRecord
s are typically provided to EventInterceptor
s
as part of a FederatedChangeEvent
for the purpose of inspecting and
possibly modifying an entry prior to it being committed.
EventInterceptor
s may choose to
reject the change
or
change the value
. When no change is specified
the modified value is committed.
Any updates to a ChangeRecord
will overwrite the modified Entry and
thus the updated value when the change is committed.
When ChangeRecord
is for a local participant, the original and
local entry will be the same.
- Author:
- bb
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
Represents the key, value and name of the Participant from which the entry originated. -
Method Summary
Modifier and TypeMethodDescriptioncom.tangosol.net.events.federation.FederatedChangeEvent.Type
The type of the FederatedChangeEvent.getKey()
Obtain the key of the changedChangeRecord.Entry
.Obtains a representation ofChangeRecord.Entry
as it appears in the local participant.Obtain a representation of the modifiedChangeRecord.Entry
.Obtain a representation of theChangeRecord.Entry
prior to any changes occurring.boolean
Determine if the modified entry in the ChangeRecord was deleted.boolean
Determine whether the change represented by this ChangeRecord is local only, therefore not federated.boolean
Determine if this Entry has been synthetically mutated.void
Signal that the modifiedChangeRecord.Entry
should not be applied.void
setLocalOnly
(boolean bLocal) Set the local only flag to indicate that the change is not federated.void
Update the modifiedChangeRecord.Entry
value.void
Update the modifiedChangeRecord.Entry
value with a synthetic flag.<T> void
update
(ValueUpdater<V, T> updater, T oValue) Update the modified Entry's value using the givenValueUpdater
.
-
Method Details
-
getKey
K getKey()Obtain the key of the changedChangeRecord.Entry
.- Returns:
- the entry key
-
getModifiedEntry
ChangeRecord.Entry<K,V> getModifiedEntry()Obtain a representation of the modifiedChangeRecord.Entry
.This
ChangeRecord.Entry
will be used to modify the associatedChangeRecord.Entry
in the destination participant.- Returns:
- modified entry
-
getOriginalEntry
ChangeRecord.Entry<K,V> getOriginalEntry()Obtain a representation of theChangeRecord.Entry
prior to any changes occurring.This is typically a representation of the
ChangeRecord.Entry
at the source participant prior to a change occurring.- Returns:
- the original entry
-
getLocalEntry
ChangeRecord.Entry<K,V> getLocalEntry()Obtains a representation ofChangeRecord.Entry
as it appears in the local participant.- Returns:
- the local entry
-
getEventType
com.tangosol.net.events.federation.FederatedChangeEvent.Type getEventType()The type of the FederatedChangeEvent.- Returns:
- the type of the FederatedChangeEvent
- Since:
- 12.2.1.0.2
-
setValue
Update the modifiedChangeRecord.Entry
value.This method can potentially cause the change to be propagated back to the origin participant. Care must be taken to avoid any recursive ping-pong cycles.
- Parameters:
newValue
- new value for the modified entry
-
setValue
Update the modifiedChangeRecord.Entry
value with a synthetic flag.This method can potentially cause the change to be propagated back to the origin participant. Care must be taken to avoid any recursive ping-pong cycles.
Note: Marking a change as synthetic will have different behavior depending on the federation event type: COMMITTING_LOCAL - the change will not be federated to other clusters and CacheStores will not be called. REPLICATING - setting the change synthetic is not allowed. An UnsupportedOperationException will be thrown. COMMITTING_REMOTE - the change will be applied as a synthetic change. CacheStores will not be triggered and federation will not forward the change to other clusters from this destination cluster.
- Parameters:
newValue
- new value for the modified entryfSynthetic
- a flag to indicate whether the update is synthetic- Since:
- 12.2.1.4.1
-
update
Update the modified Entry's value using the givenValueUpdater
.- Parameters:
updater
- a ValueUpdater used to modify the Entry's valueoValue
- the new value for this Entry
-
rejectChange
void rejectChange()Signal that the modifiedChangeRecord.Entry
should not be applied. The localChangeRecord.Entry
should remain unchanged. -
isDeleted
boolean isDeleted()Determine if the modified entry in the ChangeRecord was deleted.- Returns:
- true if the entry was deleted
-
getBinaryChangeRecord
ChangeRecord<Binary,Binary> getBinaryChangeRecord()- Returns:
- Binary ChangeRecord
-
setLocalOnly
void setLocalOnly(boolean bLocal) Set the local only flag to indicate that the change is not federated.Note: this setting is only applicable to
FederatedChangeEvent.Type.COMMITTING_LOCAL
events.- Parameters:
bLocal
- a flag to indicate whether to keep the change local only- Since:
- 12.2.1.0.3
-
isLocalOnly
boolean isLocalOnly()Determine whether the change represented by this ChangeRecord is local only, therefore not federated.Note: this setting is only applicable to
FederatedChangeEvent.Type.COMMITTING_LOCAL
events.- Returns:
- a boolean value to indicate whether the change is local only
- Since:
- 12.2.1.0.3
-
isSynthetic
boolean isSynthetic()Determine if this Entry has been synthetically mutated. This method returnsfalse
if either a non-synthetic update was made or the entry has not been modified.- Returns:
- true if the Entry has been synthetically mutated
- Since:
- 12.2.1.4.1
-