EntityChangeTracker

Responsible for collecting the details of all changes to domain objects within a transaction.

API

EntityChangeTracker.java
interface EntityChangeTracker {
  void enlistCreated(ManagedObject entity)     (1)
  void enlistUpdating(ManagedObject entity, Function<ManagedObject, Can<PropertyChangeRecord>> propertyChangeRecordSupplier)     (2)
  void enlistDeleting(ManagedObject entity)     (3)
  void incrementLoaded(ManagedObject entity)     (4)
}
1 enlistCreated(ManagedObject)

Publishing support: for object stores to enlist an object that has just been created, capturing a dummy value '[NEW]' for the pre-modification value.

2 enlistUpdating(ManagedObject, Function)

Publishing support: for object stores to enlist an object that is about to be updated, capturing the pre-modification values of the properties of the ManagedObject .

3 enlistDeleting(ManagedObject)

Publishing support: for object stores to enlist an object that is about to be deleted, capturing the pre-deletion value of the properties of the ManagedObject .

4 incrementLoaded(ManagedObject)

Not strictly part of the concern of entity tracking, but allows the default implementation to also implement the org.apache.causeway.applib.services.metrics.MetricsService .

Members

enlistCreated(ManagedObject)

Publishing support: for object stores to enlist an object that has just been created, capturing a dummy value '[NEW]' for the pre-modification value.

The post-modification values are captured when the transaction commits.

enlistUpdating(ManagedObject, Function)

Publishing support: for object stores to enlist an object that is about to be updated, capturing the pre-modification values of the properties of the ManagedObject .

The post-modification values are captured when the transaction commits.

Overload as an optimization for ORMs (specifically, JPA) where already have access to the changed records by accessing the ORM-specific data structures ( EntityManager 's unit-of-work).

enlistDeleting(ManagedObject)

Publishing support: for object stores to enlist an object that is about to be deleted, capturing the pre-deletion value of the properties of the ManagedObject .

The post-modification values are captured when the transaction commits. In the case of deleted objects, a dummy value '[DELETED]' is used as the post-modification value.

incrementLoaded(ManagedObject)

Not strictly part of the concern of entity tracking, but allows the default implementation to also implement the org.apache.causeway.applib.services.metrics.MetricsService .

Implementation

The framework provides a default implementation of this service, EntityChangeTrackerDefault.

There will not usually be any need to override the default implementation.