EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.descriptors.changetracking
Class DeferredChangeDetectionPolicy

java.lang.Object
  extended by org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy
All Implemented Interfaces:
java.io.Serializable, ObjectChangePolicy
Direct Known Subclasses:
ObjectChangeTrackingPolicy

public class DeferredChangeDetectionPolicy
extends java.lang.Object
implements ObjectChangePolicy, java.io.Serializable

PUBLIC: A DeferredChangeDetectionPolicy defers all change detection to the UnitOfWork's change detection process. Essentially, the calculateChanges() method will run for all objects in a UnitOfWork. This is the default ObjectChangePolicy unless weaving is used.

See Also:
Serialized Form
Author:
Tom Ware

Constructor Summary
DeferredChangeDetectionPolicy()
           
 
Method Summary
 java.lang.Object buildBackupClone(java.lang.Object clone, org.eclipse.persistence.internal.descriptors.ObjectBuilder builder, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
          INTERNAL: Build back up clone.
 org.eclipse.persistence.internal.sessions.ObjectChangeSet calculateChanges(java.lang.Object clone, java.lang.Object backUp, boolean isNew, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor, boolean shouldRaiseEvent)
          INTERNAL: calculateChanges creates a change set for a particular object.
 org.eclipse.persistence.internal.sessions.ObjectChangeSet calculateChangesForExistingObject(java.lang.Object clone, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor, boolean shouldRaiseEvent)
          INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.
 org.eclipse.persistence.internal.sessions.ObjectChangeSet calculateChangesForNewObject(java.lang.Object clone, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor, boolean shouldRaiseEvent)
          INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.
 void clearChanges(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, ClassDescriptor descriptor, boolean forRefresh)
          INTERNAL: This is a place holder for reseting the listener on one of the subclasses
 org.eclipse.persistence.internal.sessions.ObjectChangeSet createObjectChangeSet(java.lang.Object clone, java.lang.Object backUp, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet, boolean isNew, org.eclipse.persistence.internal.sessions.AbstractSession session, ClassDescriptor descriptor)
          INTERNAL: Create ObjectChangeSet
 org.eclipse.persistence.internal.sessions.ObjectChangeSet createObjectChangeSetThroughComparison(java.lang.Object clone, java.lang.Object backUp, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet, boolean isNew, org.eclipse.persistence.internal.sessions.AbstractSession session, ClassDescriptor descriptor)
          INTERNAL: Create ObjectChangeSet
 void dissableEventProcessing(java.lang.Object changeTracker)
          INTERNAL: This method is used to disable changetracking temporarily
 void enableEventProcessing(java.lang.Object changeTracker)
          INTERNAL: This method is used to enable changetracking temporarily
 void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session, ClassDescriptor descriptor)
          INTERNAL: initialize the Policy
 boolean isAttributeChangeTrackingPolicy()
          Used to track instances of the change policies without doing an instance of check
 boolean isDeferredChangeDetectionPolicy()
          Used to track instances of the change policies without doing an instance of check
 boolean isObjectChangeTrackingPolicy()
          Used to track instances of the change policies without doing an instance of check
 void raiseInternalPropertyChangeEvent(java.lang.Object source, java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
          INTERNAL: This may cause a property change event to be raised to a listener in the case that a listener exists.
 void revertChanges(java.lang.Object clone, ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map cloneMapping, boolean forRefresh)
          INTERNAL: This method is used to revert an object within the unit of work
 void setAggregateChangeListener(java.lang.Object parent, java.lang.Object aggregate, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, ClassDescriptor descriptor, java.lang.String mappingAttribute)
          INTERNAL: Assign ChangeListener to an aggregate object
 java.beans.PropertyChangeListener setChangeListener(java.lang.Object clone, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, ClassDescriptor descriptor)
          INTERNAL: Set ChangeListener for the clone
 void setChangeSetOnListener(org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet, java.lang.Object clone)
          INTERNAL: Set the ObjectChangeSet on the Listener, initially used for aggregate support
 boolean shouldCompareExistingObjectForChange(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor)
          INTERNAL: Return true if the Object should be compared, false otherwise.
 void updateListenerForSelfMerge(org.eclipse.persistence.internal.descriptors.changetracking.ObjectChangeListener listener, ForeignReferenceMapping mapping, java.lang.Object source, java.lang.Object target, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
          INTERNAL: In cases where a relationship with detached or new entities is merged into itself previous changes may have been recorded for the detached/new entity that need to be updated.
 void updateWithChanges(java.lang.Object clone, org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, ClassDescriptor descriptor)
          INTERNAL: Clear changes in the ChangeListener of the clone
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DeferredChangeDetectionPolicy

public DeferredChangeDetectionPolicy()
Method Detail

calculateChangesForNewObject

public org.eclipse.persistence.internal.sessions.ObjectChangeSet calculateChangesForNewObject(java.lang.Object clone,
                                                                                              org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet,
                                                                                              org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                                                                                              ClassDescriptor descriptor,
                                                                                              boolean shouldRaiseEvent)
INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.

Specified by:
calculateChangesForNewObject in interface ObjectChangePolicy
Parameters:
clone - the Object to compute a change set for
changeSet - the change set to add changes to
descriptor - the descriptor for this object
shouldRaiseEvent - indicates whether PreUpdate event should be risen (usually true)
Returns:
ObjectChangeSet an object change set describing the changes to this object

calculateChangesForExistingObject

public org.eclipse.persistence.internal.sessions.ObjectChangeSet calculateChangesForExistingObject(java.lang.Object clone,
                                                                                                   org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet,
                                                                                                   org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                                                                                                   ClassDescriptor descriptor,
                                                                                                   boolean shouldRaiseEvent)
INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.

Specified by:
calculateChangesForExistingObject in interface ObjectChangePolicy
Parameters:
clone - the Object to compute a change set for
changeSet - the change set to add changes to
descriptor - the descriptor for this object
shouldRaiseEvent - indicates whether PreUpdate event should be risen (usually true)
Returns:
ObjectChangeSet an object change set describing the changes to this object

calculateChanges

public org.eclipse.persistence.internal.sessions.ObjectChangeSet calculateChanges(java.lang.Object clone,
                                                                                  java.lang.Object backUp,
                                                                                  boolean isNew,
                                                                                  org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet,
                                                                                  org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                                                                                  ClassDescriptor descriptor,
                                                                                  boolean shouldRaiseEvent)
INTERNAL: calculateChanges creates a change set for a particular object. In DeferredChangeDetectionPolicy all mappings will be compared against a backup copy of the object.

Specified by:
calculateChanges in interface ObjectChangePolicy
Parameters:
clone - the Object to compute a change set for
backUp - the old version of the object to use for comparison
changeSet - the change set to add changes to
session - the current session
descriptor - the descriptor for this object
shouldRaiseEvent - indicates whether PreUpdate event should be risen (usually true)
Returns:
an object change set describing the changes to this object

clearChanges

public void clearChanges(java.lang.Object object,
                         org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                         ClassDescriptor descriptor,
                         boolean forRefresh)
INTERNAL: This is a place holder for reseting the listener on one of the subclasses

Specified by:
clearChanges in interface ObjectChangePolicy

createObjectChangeSet

public org.eclipse.persistence.internal.sessions.ObjectChangeSet createObjectChangeSet(java.lang.Object clone,
                                                                                       java.lang.Object backUp,
                                                                                       org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet,
                                                                                       boolean isNew,
                                                                                       org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                                                       ClassDescriptor descriptor)
INTERNAL: Create ObjectChangeSet


createObjectChangeSetThroughComparison

public org.eclipse.persistence.internal.sessions.ObjectChangeSet createObjectChangeSetThroughComparison(java.lang.Object clone,
                                                                                                        java.lang.Object backUp,
                                                                                                        org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet changeSet,
                                                                                                        boolean isNew,
                                                                                                        org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                                                                        ClassDescriptor descriptor)
INTERNAL: Create ObjectChangeSet

Specified by:
createObjectChangeSetThroughComparison in interface ObjectChangePolicy

dissableEventProcessing

public void dissableEventProcessing(java.lang.Object changeTracker)
INTERNAL: This method is used to disable changetracking temporarily

Specified by:
dissableEventProcessing in interface ObjectChangePolicy

enableEventProcessing

public void enableEventProcessing(java.lang.Object changeTracker)
INTERNAL: This method is used to enable changetracking temporarily

Specified by:
enableEventProcessing in interface ObjectChangePolicy

shouldCompareExistingObjectForChange

public boolean shouldCompareExistingObjectForChange(java.lang.Object object,
                                                    org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                                                    ClassDescriptor descriptor)
INTERNAL: Return true if the Object should be compared, false otherwise. In DeferredChangeDetectionPolicy, true is always returned since always allow the UnitOfWork to calculate changes.

Specified by:
shouldCompareExistingObjectForChange in interface ObjectChangePolicy
Parameters:
object - the object that will be compared
unitOfWork - the active unitOfWork
descriptor - the descriptor for the current object

buildBackupClone

public java.lang.Object buildBackupClone(java.lang.Object clone,
                                         org.eclipse.persistence.internal.descriptors.ObjectBuilder builder,
                                         org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Build back up clone. Used if clone is new because listener should not be set.

Specified by:
buildBackupClone in interface ObjectChangePolicy

setAggregateChangeListener

public void setAggregateChangeListener(java.lang.Object parent,
                                       java.lang.Object aggregate,
                                       org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                       ClassDescriptor descriptor,
                                       java.lang.String mappingAttribute)
INTERNAL: Assign ChangeListener to an aggregate object

Specified by:
setAggregateChangeListener in interface ObjectChangePolicy

setChangeListener

public java.beans.PropertyChangeListener setChangeListener(java.lang.Object clone,
                                                           org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                                           ClassDescriptor descriptor)
INTERNAL: Set ChangeListener for the clone

Specified by:
setChangeListener in interface ObjectChangePolicy

setChangeSetOnListener

public void setChangeSetOnListener(org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet,
                                   java.lang.Object clone)
INTERNAL: Set the ObjectChangeSet on the Listener, initially used for aggregate support

Specified by:
setChangeSetOnListener in interface ObjectChangePolicy

updateWithChanges

public void updateWithChanges(java.lang.Object clone,
                              org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet,
                              org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                              ClassDescriptor descriptor)
INTERNAL: Clear changes in the ChangeListener of the clone

Specified by:
updateWithChanges in interface ObjectChangePolicy

raiseInternalPropertyChangeEvent

public void raiseInternalPropertyChangeEvent(java.lang.Object source,
                                             java.lang.String propertyName,
                                             java.lang.Object oldValue,
                                             java.lang.Object newValue)
INTERNAL: This may cause a property change event to be raised to a listener in the case that a listener exists. If there is no listener then this call is a no-op

Specified by:
raiseInternalPropertyChangeEvent in interface ObjectChangePolicy

revertChanges

public void revertChanges(java.lang.Object clone,
                          ClassDescriptor descriptor,
                          org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                          java.util.Map cloneMapping,
                          boolean forRefresh)
INTERNAL: This method is used to revert an object within the unit of work

Specified by:
revertChanges in interface ObjectChangePolicy
Parameters:
cloneMapping - may not be the same as what is in the uow

initialize

public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session,
                       ClassDescriptor descriptor)
INTERNAL: initialize the Policy

Specified by:
initialize in interface ObjectChangePolicy

isDeferredChangeDetectionPolicy

public boolean isDeferredChangeDetectionPolicy()
Used to track instances of the change policies without doing an instance of check

Specified by:
isDeferredChangeDetectionPolicy in interface ObjectChangePolicy

isObjectChangeTrackingPolicy

public boolean isObjectChangeTrackingPolicy()
Used to track instances of the change policies without doing an instance of check

Specified by:
isObjectChangeTrackingPolicy in interface ObjectChangePolicy

isAttributeChangeTrackingPolicy

public boolean isAttributeChangeTrackingPolicy()
Used to track instances of the change policies without doing an instance of check

Specified by:
isAttributeChangeTrackingPolicy in interface ObjectChangePolicy

updateListenerForSelfMerge

public void updateListenerForSelfMerge(org.eclipse.persistence.internal.descriptors.changetracking.ObjectChangeListener listener,
                                       ForeignReferenceMapping mapping,
                                       java.lang.Object source,
                                       java.lang.Object target,
                                       org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
INTERNAL: In cases where a relationship with detached or new entities is merged into itself previous changes may have been recorded for the detached/new entity that need to be updated.

Specified by:
updateListenerForSelfMerge in interface ObjectChangePolicy

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference