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:
  • Field Details

    • 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 Details

    • DeferrableChangeRecord

      protected DeferrableChangeRecord()
    • DeferrableChangeRecord

      protected DeferrableChangeRecord(ObjectChangeSet owner)
  • Method Details

    • 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)