java.lang.Object
org.eclipse.persistence.internal.descriptors.changetracking.ObjectChangeListener
org.eclipse.persistence.internal.descriptors.changetracking.AttributeChangeListener
All Implemented Interfaces:
PropertyChangeListener, Serializable, EventListener
Direct Known Subclasses:
AggregateAttributeChangeListener

public class AttributeChangeListener extends ObjectChangeListener

Purpose: Define a listener for attribute change tracking.

Description: Listener is notified on a PropertyChangeEvent from the object it belongs to.

Responsibilities: Set the flag to true and build ObjectChangeSet that includes the ChangeRecords for the changed attributes.

See Also:
  • Field Details

  • Constructor Details

    • AttributeChangeListener

      public AttributeChangeListener(ClassDescriptor descriptor, UnitOfWorkImpl uow, Object owner)
      INTERNAL: Create a AttributeChangeListener with a descriptor and unit of work
  • Method Details

    • getObjectChangeSet

      public ObjectChangeSet getObjectChangeSet()
      INTERNAL: Return the object change set associated with this listener
    • setObjectChangeSet

      public void setObjectChangeSet(ObjectChangeSet changeSet)
      INTERNAL: Return the object change set associated with this listener
    • getDescriptor

      public ClassDescriptor getDescriptor()
      INTERNAL: Return the descriptor associated with this listener
    • setDescriptor

      public void setDescriptor(ClassDescriptor descriptor)
      INTERNAL: Set the descriptor associated with this listener
    • getUnitOfWork

      public UnitOfWorkImpl getUnitOfWork()
      INTERNAL: Return the unit of work associated with this listener
    • setUnitOfWork

      public void setUnitOfWork(UnitOfWorkImpl uow)
      INTERNAL: Set the unit of work associated with this listener
    • propertyChange

      public void propertyChange(PropertyChangeEvent evt)
      PUBLIC: This method creates the object change set if necessary. It also creates/updates the change record based on the new value. Object should check the if newValue and oldValue are identical. If they are identical, do not create PropertyChangeEvent and call this method.
      Specified by:
      propertyChange in interface PropertyChangeListener
      Overrides:
      propertyChange in class ObjectChangeListener
    • internalPropertyChange

      public void internalPropertyChange(PropertyChangeEvent evt)
      INTERNAL: This method marks the object as changed. This method is only called by EclipseLink
      Overrides:
      internalPropertyChange in class ObjectChangeListener
    • clearChanges

      public void clearChanges(boolean forRefresh)
      INTERNAL: Clear the changes in this listener
      Overrides:
      clearChanges in class ObjectChangeListener
    • toString

      public String toString()
      Overrides:
      toString in class Object