Top Description Constructors Methods
org.eclipse.persistence.descriptors.changetracking

public Class DeferredChangeDetectionPolicy

extends Object
implements ObjectChangePolicy, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy
Known Direct Subclasses
org.eclipse.persistence.descriptors.changetracking.ObjectChangeTrackingPolicy
Imports
java.beans.PropertyChangeListener, java.util.List, .Map, org.eclipse.persistence.descriptors.ClassDescriptor, .DescriptorEvent, .DescriptorEventManager, org.eclipse.persistence.exceptions.ValidationException, org.eclipse.persistence.internal.descriptors.ObjectBuilder, org.eclipse.persistence.internal.descriptors.changetracking.ObjectChangeListener, org.eclipse.persistence.internal.sessions.AbstractSession, .MergeManager, .ObjectChangeSet, .RepeatableWriteUnitOfWork, .UnitOfWorkChangeSet, .UnitOfWorkImpl, org.eclipse.persistence.mappings.DatabaseMapping, .ForeignReferenceMapping, org.eclipse.persistence.queries.FetchGroup, .WriteObjectQuery

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.
Author
Tom Ware

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public Object
public ObjectChangeSet

Returns:

an object change set describing the changes to this object
calculateChanges
(Object
the Object to compute a change set for
clone
,
Object
the old version of the object to use for comparison
backUp
,
boolean
determines if the object is new
isNew
,
UnitOfWorkChangeSet
the change set to add changes to
changeSet
,
UnitOfWorkImpl
the current session
unitOfWork
,
ClassDescriptor
the descriptor for this object
descriptor
,
boolean
indicates whether PreUpdate event should be risen (usually true)
shouldRaiseEvent
)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChanges.

INTERNAL: calculateChanges creates a change set for a particular object.
public ObjectChangeSet
calculateChangesForExistingObject(Object
the Object to compute a change set for
clone
,
UnitOfWorkChangeSet
the change set to add changes to
changeSet
,
UnitOfWorkImpl
the current session
unitOfWork
,
ClassDescriptor
the descriptor for this object
descriptor
,
boolean
indicates whether PreUpdate event should be risen (usually true)
shouldRaiseEvent
)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.
public ObjectChangeSet
calculateChangesForNewObject(Object
the Object to compute a change set for
clone
,
UnitOfWorkChangeSet
the change set to add changes to
changeSet
,
UnitOfWorkImpl
the current session
unitOfWork
,
ClassDescriptor
the descriptor for this object
descriptor
,
boolean
indicates whether PreUpdate event should be risen (usually true)
shouldRaiseEvent
)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.
public void
clearChanges(Object object, UnitOfWorkImpl uow, ClassDescriptor descriptor, boolean forRefresh)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.clearChanges.

INTERNAL: This is a place holder for reseting the listener on one of the subclasses
public ObjectChangeSet
createObjectChangeSet(Object clone, Object backUp, UnitOfWorkChangeSet changeSet, boolean isNew, AbstractSession session, ClassDescriptor descriptor)

INTERNAL: Create ObjectChangeSet

public ObjectChangeSet
public void
dissableEventProcessing(Object changeTracker)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.dissableEventProcessing.

INTERNAL: This method is used to disable changetracking temporarily
public void
enableEventProcessing(Object changeTracker)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.enableEventProcessing.

INTERNAL: This method is used to enable changetracking temporarily
public void
public boolean
isAttributeChangeTrackingPolicy()

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.isAttributeChangeTrackingPolicy.

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

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.isDeferredChangeDetectionPolicy.

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

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.isObjectChangeTrackingPolicy.

Used to track instances of the change policies without doing an instance of check
public void
raiseInternalPropertyChangeEvent(Object source, String propertyName, Object oldValue, Object newValue)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.raiseInternalPropertyChangeEvent.

INTERNAL: This may cause a property change event to be raised to a listener in the case that a listener exists.
public void
revertChanges(Object clone, ClassDescriptor descriptor, UnitOfWorkImpl uow, Map<K, V>
may not be the same as what is in the uow
cloneMapping
,
boolean forRefresh)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.revertChanges.

INTERNAL: This method is used to revert an object within the unit of work
public void
setAggregateChangeListener(Object parent, Object aggregate, UnitOfWorkImpl uow, ClassDescriptor descriptor, String mappingAttribute)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.setAggregateChangeListener.

INTERNAL: Assign ChangeListener to an aggregate object
public PropertyChangeListener
public void
setChangeSetOnListener(ObjectChangeSet objectChangeSet, Object clone)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.setChangeSetOnListener.

INTERNAL: Set the ObjectChangeSet on the Listener, initially used for aggregate support
public boolean
shouldCompareExistingObjectForChange(Object
the object that will be compared
object
,
UnitOfWorkImpl
the active unitOfWork
unitOfWork
,
ClassDescriptor
the descriptor for the current object
descriptor
)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.shouldCompareExistingObjectForChange.

INTERNAL: Return true if the Object should be compared, false otherwise.
public void
updateListenerForSelfMerge(ObjectChangeListener listener, ForeignReferenceMapping mapping, Object source, Object target, UnitOfWorkImpl unitOfWork)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.updateListenerForSelfMerge.

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.
public void
updateWithChanges(Object clone, ObjectChangeSet objectChangeSet, UnitOfWorkImpl uow, ClassDescriptor descriptor)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.updateWithChanges.

INTERNAL: Clear changes in the ChangeListener of the clone
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

DeferredChangeDetectionPolicyback to summary
public DeferredChangeDetectionPolicy()

Method Detail

buildBackupCloneback to summary
public Object buildBackupClone(Object clone, ObjectBuilder builder, UnitOfWorkImpl uow)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.buildBackupClone.

INTERNAL: Build back up clone. Used if clone is new because listener should not be set.

Annotations
@Override
calculateChangesback to summary
public ObjectChangeSet calculateChanges(Object clone, Object backUp, boolean isNew, UnitOfWorkChangeSet changeSet, UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor, boolean shouldRaiseEvent)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChanges.

INTERNAL: calculateChanges creates a change set for a particular object. In DeferredChangeDetectionPolicy all mappings will be compared against a backup copy of the object.

Parameters
clone:Object

the Object to compute a change set for

backUp:Object

the old version of the object to use for comparison

isNew:boolean

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChanges.

determines if the object is new

changeSet:UnitOfWorkChangeSet

the change set to add changes to

unitOfWork:UnitOfWorkImpl

the current session

descriptor:ClassDescriptor

the descriptor for this object

shouldRaiseEvent:boolean

indicates whether PreUpdate event should be risen (usually true)

Returns:ObjectChangeSet

an object change set describing the changes to this object

Annotations
@Override
calculateChangesForExistingObjectback to summary
public ObjectChangeSet calculateChangesForExistingObject(Object clone, UnitOfWorkChangeSet changeSet, UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor, boolean shouldRaiseEvent)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.

Parameters
clone:Object

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

the Object to compute a change set for

changeSet:UnitOfWorkChangeSet

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

the change set to add changes to

unitOfWork:UnitOfWorkImpl

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

the current session

descriptor:ClassDescriptor

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

the descriptor for this object

shouldRaiseEvent:boolean

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

indicates whether PreUpdate event should be risen (usually true)

Returns:ObjectChangeSet

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForExistingObject.

ObjectChangeSet an object change set describing the changes to this object

Annotations
@Override
calculateChangesForNewObjectback to summary
public ObjectChangeSet calculateChangesForNewObject(Object clone, UnitOfWorkChangeSet changeSet, UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor, boolean shouldRaiseEvent)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

INTERNAL: PERF: Calculate change for the new object, avoids check for new since already know.

Parameters
clone:Object

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

the Object to compute a change set for

changeSet:UnitOfWorkChangeSet

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

the change set to add changes to

unitOfWork:UnitOfWorkImpl

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

the current session

descriptor:ClassDescriptor

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

the descriptor for this object

shouldRaiseEvent:boolean

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

indicates whether PreUpdate event should be risen (usually true)

Returns:ObjectChangeSet

Doc from org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.calculateChangesForNewObject.

ObjectChangeSet an object change set describing the changes to this object

Annotations
@Override
clearChangesback to summary
public void clearChanges(Object object, UnitOfWorkImpl uow, ClassDescriptor descriptor, boolean forRefresh)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.clearChanges.

INTERNAL: This is a place holder for reseting the listener on one of the subclasses

Annotations
@Override
createObjectChangeSetback to summary
public ObjectChangeSet createObjectChangeSet(Object clone, Object backUp, UnitOfWorkChangeSet changeSet, boolean isNew, AbstractSession session, ClassDescriptor descriptor)

INTERNAL: Create ObjectChangeSet

createObjectChangeSetThroughComparisonback to summary
public ObjectChangeSet createObjectChangeSetThroughComparison(Object clone, Object backUp, UnitOfWorkChangeSet changeSet, boolean isNew, AbstractSession session, ClassDescriptor descriptor)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.createObjectChangeSetThroughComparison.

INTERNAL: Create ObjectChangeSet

Annotations
@Override
dissableEventProcessingback to summary
public void dissableEventProcessing(Object changeTracker)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.dissableEventProcessing.

INTERNAL: This method is used to disable changetracking temporarily

Annotations
@Override
enableEventProcessingback to summary
public void enableEventProcessing(Object changeTracker)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.enableEventProcessing.

INTERNAL: This method is used to enable changetracking temporarily

Annotations
@Override
initializeback to summary
public void initialize(AbstractSession session, ClassDescriptor descriptor)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.initialize.

INTERNAL: initialize the Policy

Annotations
@Override
isAttributeChangeTrackingPolicyback to summary
public boolean isAttributeChangeTrackingPolicy()

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.isAttributeChangeTrackingPolicy.

Used to track instances of the change policies without doing an instance of check

Annotations
@Override
isDeferredChangeDetectionPolicyback to summary
public boolean isDeferredChangeDetectionPolicy()

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.isDeferredChangeDetectionPolicy.

Used to track instances of the change policies without doing an instance of check

Annotations
@Override
isObjectChangeTrackingPolicyback to summary
public boolean isObjectChangeTrackingPolicy()

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.isObjectChangeTrackingPolicy.

Used to track instances of the change policies without doing an instance of check

Annotations
@Override
raiseInternalPropertyChangeEventback to summary
public void raiseInternalPropertyChangeEvent(Object source, String propertyName, Object oldValue, Object newValue)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.raiseInternalPropertyChangeEvent.

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

Annotations
@Override
revertChangesback to summary
public void revertChanges(Object clone, ClassDescriptor descriptor, UnitOfWorkImpl uow, Map<K, V> cloneMapping, boolean forRefresh)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.revertChanges.

INTERNAL: This method is used to revert an object within the unit of work

Parameters
cloneMapping:Map<K, V>

may not be the same as what is in the uow

Annotations
@Override
setAggregateChangeListenerback to summary
public void setAggregateChangeListener(Object parent, Object aggregate, UnitOfWorkImpl uow, ClassDescriptor descriptor, String mappingAttribute)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.setAggregateChangeListener.

INTERNAL: Assign ChangeListener to an aggregate object

Annotations
@Override
setChangeListenerback to summary
public PropertyChangeListener setChangeListener(Object clone, UnitOfWorkImpl uow, ClassDescriptor descriptor)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.setChangeListener.

INTERNAL: Set ChangeListener for the clone

Annotations
@Override
setChangeSetOnListenerback to summary
public void setChangeSetOnListener(ObjectChangeSet objectChangeSet, Object clone)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.setChangeSetOnListener.

INTERNAL: Set the ObjectChangeSet on the Listener, initially used for aggregate support

Annotations
@Override
shouldCompareExistingObjectForChangeback to summary
public boolean shouldCompareExistingObjectForChange(Object object, UnitOfWorkImpl unitOfWork, ClassDescriptor descriptor)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.shouldCompareExistingObjectForChange.

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.

Parameters
object:Object

the object that will be compared

unitOfWork:UnitOfWorkImpl

the active unitOfWork

descriptor:ClassDescriptor

the descriptor for the current object

Annotations
@Override
updateListenerForSelfMergeback to summary
public void updateListenerForSelfMerge(ObjectChangeListener listener, ForeignReferenceMapping mapping, Object source, Object target, UnitOfWorkImpl unitOfWork)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.updateListenerForSelfMerge.

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.

Annotations
@Override
updateWithChangesback to summary
public void updateWithChanges(Object clone, ObjectChangeSet objectChangeSet, UnitOfWorkImpl uow, ClassDescriptor descriptor)

Implements org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy.updateWithChanges.

INTERNAL: Clear changes in the ChangeListener of the clone

Annotations
@Override