Module org.eclipse.persistence.core
Class DeferrableChangeRecord
- java.lang.Object
-
- org.eclipse.persistence.internal.sessions.ChangeRecord
-
- org.eclipse.persistence.internal.sessions.DeferrableChangeRecord
-
- All Implemented Interfaces:
Serializable,ChangeRecord
- Direct Known Subclasses:
CollectionChangeRecord,DirectCollectionChangeRecord,DirectMapChangeRecord
public abstract class DeferrableChangeRecord extends ChangeRecord
Abstract change record for collection type records that allow deferrable change detection. Used for change tracking when user sets entire collection.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanisDeferredDefines if this change should be calculated at commit time using the two collections.protected ObjectlatestCollectionUsed for change tracking when user sets entire collection.protected ObjectoriginalCollectionUsed for change tracking when user sets entire collection.-
Fields inherited from class org.eclipse.persistence.internal.sessions.ChangeRecord
attribute, mapping, owner
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedDeferrableChangeRecord()protectedDeferrableChangeRecord(ObjectChangeSet owner)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract voidclearChanges()Clears info about added / removed objects set by change tracker.ObjectgetLatestCollection()Used for change tracking when user sets entire collection.ObjectgetOldValue()ADVANCED: If the owning UnitOfWork has shouldChangeRecordKeepOldValue set to true, then return the old value of the attribute represented by this ChangeRecord.ObjectgetOldValue(Object currentCollection, AbstractSession session)ObjectgetOriginalCollection()Used for change tracking when user sets entire collection.abstract voidinternalRecreateOriginalCollection(Object currentCollection, AbstractSession session)Recreates the original state of currentCollection.booleanisDeferred()Returns if this change should be calculated at commit time using the two collections.voidrecreateOriginalCollection(Object currentCollection, AbstractSession session)Recreates the original state of the collection.voidsetIsDeferred(boolean isDeferred)Sets if this change should be calculated at commit time using the two collections.voidsetLatestCollection(Object latestCollection)Used for change tracking when user sets entire collection.voidsetOriginalCollection(Object originalCollection)Used for change tracking when user sets entire collection.-
Methods inherited from class org.eclipse.persistence.internal.sessions.ChangeRecord
getAttribute, getMapping, getOwner, mergeRecord, prepareForSynchronization, setAttribute, setMapping, setOwner, toString, updateChangeRecordWithNewValue, updateReferences
-
-
-
-
Field Detail
-
originalCollection
protected transient Object originalCollection
Used for change tracking when user sets entire collection.
-
latestCollection
protected transient Object latestCollection
Used for change tracking when user sets entire collection.
-
isDeferred
protected boolean isDeferred
Defines if this change should be calculated at commit time using the two collections. This is used to handle collection replacement.
-
-
Constructor Detail
-
DeferrableChangeRecord
protected DeferrableChangeRecord()
-
DeferrableChangeRecord
protected DeferrableChangeRecord(ObjectChangeSet owner)
-
-
Method Detail
-
isDeferred
public boolean isDeferred()
Returns if this change should be calculated at commit time using the two collections. This is used to handle collection replacement.
-
setIsDeferred
public void setIsDeferred(boolean isDeferred)
Sets if this change should be calculated at commit time using the two collections. This is used to handle collection replacement.
-
getLatestCollection
public Object getLatestCollection()
Used for change tracking when user sets entire collection. This is the last collection that was set on the object.
-
getOriginalCollection
public Object getOriginalCollection()
Used for change tracking when user sets entire collection. This is the original collection that was set on the object when it was cloned.
-
setLatestCollection
public void setLatestCollection(Object latestCollection)
Used for change tracking when user sets entire collection. This is the last collection that was set on the object.
-
setOriginalCollection
public void setOriginalCollection(Object originalCollection)
Used for change tracking when user sets entire collection. This is the original collection that was set on the object when it was cloned.
-
internalRecreateOriginalCollection
public abstract void internalRecreateOriginalCollection(Object currentCollection, AbstractSession session)
Recreates the original state of currentCollection.
-
clearChanges
public abstract void clearChanges()
Clears info about added / removed objects set by change tracker. Called after the change info has been already used for creation of originalCollection. Also called to make sure there is no change info before comparison for change is performed (change info is still in the record after comparison for change is performed and may cause wrong results when the second comparison for change performed on the same change record).
-
recreateOriginalCollection
public void recreateOriginalCollection(Object currentCollection, AbstractSession session)
Recreates the original state of the collection.
-
getOldValue
public Object getOldValue()
ADVANCED: If the owning UnitOfWork has shouldChangeRecordKeepOldValue set to true, then return the old value of the attribute represented by this ChangeRecord.
-
getOldValue
public Object getOldValue(Object currentCollection, AbstractSession session)
-
-