public class ChangeCopier extends Object implements ChangeSwitch<Change<?>>
Change object based on an existing one where the JObjects referred to by the
new Change are copies in a different transaction of the originals. This is useful to allow database
change information to be accessed after the transaction in which the change occured has completed.
Each instance has an internal CopyState used to avoid redundant copies, accessible via getCopyState().
| Modifier and Type | Field and Description |
|---|---|
protected CopyState |
copyState |
protected JTransaction |
dest |
| Constructor and Description |
|---|
ChangeCopier()
"Snapshot" constructor for when the destination transaction is the "snapshot" transaction of the transaction
associated with the current thread.
|
ChangeCopier(JTransaction dest)
Primary constructor.
|
protected final JTransaction dest
protected final CopyState copyState
public ChangeCopier(JTransaction dest)
dest - destination transaction for copied JObjectsIllegalArgumentException - if dest is nullpublic ChangeCopier()
This is a convenience constructor, equivalent to:
ChangeCopier(JTransaction.getCurrent().getSnapshotTransaction())
IllegalStateException - if this is not a snapshot instance and there is no JTransaction
associated with the current threadpublic JTransaction getDestinationTransaction()
public CopyState getCopyState()
CopyState used by this instance.public <T> ObjectCreate<T> caseObjectCreate(ObjectCreate<T> change)
ChangeSwitchObjectCreate event.caseObjectCreate in interface ChangeSwitch<Change<?>>T - changed object typechange - visiting changepublic <T> ObjectDelete<T> caseObjectDelete(ObjectDelete<T> change)
ChangeSwitchObjectDelete event.caseObjectDelete in interface ChangeSwitch<Change<?>>T - changed object typechange - visiting changepublic <T,E> ListFieldAdd<T,E> caseListFieldAdd(ListFieldAdd<T,E> change)
ChangeSwitchListFieldAdd event.caseListFieldAdd in interface ChangeSwitch<Change<?>>T - changed object typeE - changed list element typechange - visiting changepublic <T> ListFieldClear<T> caseListFieldClear(ListFieldClear<T> change)
ChangeSwitchListFieldClear event.caseListFieldClear in interface ChangeSwitch<Change<?>>T - changed object typechange - visiting changepublic <T,E> ListFieldRemove<T,E> caseListFieldRemove(ListFieldRemove<T,E> change)
ChangeSwitchListFieldRemove event.caseListFieldRemove in interface ChangeSwitch<Change<?>>T - changed object typeE - changed list element typechange - visiting changepublic <T,E> ListFieldReplace<T,E> caseListFieldReplace(ListFieldReplace<T,E> change)
ChangeSwitchListFieldReplace event.caseListFieldReplace in interface ChangeSwitch<Change<?>>T - changed object typeE - changed list element typechange - visiting changepublic <T,K,V> MapFieldAdd<T,K,V> caseMapFieldAdd(MapFieldAdd<T,K,V> change)
ChangeSwitchMapFieldAdd event.caseMapFieldAdd in interface ChangeSwitch<Change<?>>T - changed object typeK - changed map key typeV - changed map value typechange - visiting changepublic <T> MapFieldClear<T> caseMapFieldClear(MapFieldClear<T> change)
ChangeSwitchMapFieldClear event.caseMapFieldClear in interface ChangeSwitch<Change<?>>T - changed object typechange - visiting changepublic <T,K,V> MapFieldRemove<T,K,V> caseMapFieldRemove(MapFieldRemove<T,K,V> change)
ChangeSwitchMapFieldRemove event.caseMapFieldRemove in interface ChangeSwitch<Change<?>>T - changed object typeK - changed map key typeV - changed map value typechange - visiting changepublic <T,K,V> MapFieldReplace<T,K,V> caseMapFieldReplace(MapFieldReplace<T,K,V> change)
ChangeSwitchMapFieldReplace event.caseMapFieldReplace in interface ChangeSwitch<Change<?>>T - changed object typeK - changed map key typeV - changed map value typechange - visiting changepublic <T,E> SetFieldAdd<T,E> caseSetFieldAdd(SetFieldAdd<T,E> change)
ChangeSwitchSetFieldAdd event.caseSetFieldAdd in interface ChangeSwitch<Change<?>>T - changed object typeE - changed set element typechange - visiting changepublic <T> SetFieldClear<T> caseSetFieldClear(SetFieldClear<T> change)
ChangeSwitchSetFieldClear event.caseSetFieldClear in interface ChangeSwitch<Change<?>>T - changed object typechange - visiting changepublic <T,E> SetFieldRemove<T,E> caseSetFieldRemove(SetFieldRemove<T,E> change)
ChangeSwitchSetFieldRemove event.caseSetFieldRemove in interface ChangeSwitch<Change<?>>T - changed object typeE - changed set element typechange - visiting changepublic <T,V> SimpleFieldChange<T,V> caseSimpleFieldChange(SimpleFieldChange<T,V> change)
ChangeSwitchSimpleFieldChange event.caseSimpleFieldChange in interface ChangeSwitch<Change<?>>T - changed object typeV - changed field typechange - visiting changeprotected JObject copy(JObject jobj)
JObject into the destination transaction.
The implementation in ChangeCopier invokes jobj.copyTo(this.dest, null, this.getCopyState()) unless
jobj does not exist, in which case it is not copied (but the
corresponding JObject is still returned).
Subclasses may override to copy additional objects referenced by jobj as needed.
jobj - original objectdestIllegalArgumentException - if jobj is nullCopyright © 2017. All rights reserved.