Interface PropagationManager
- All Known Implementing Classes:
DefaultPropagationManager
PropagationHandler instances
and picking the best handler to perform propagation give a set of contextual criteria.- Author:
- Jeff Fischer
-
Method Summary
Modifier and TypeMethodDescriptionvoidpropagate(Trackable deployed, String parentCatalog, OperationType changeType, String propagationId, TrackableRepository<Trackable> repository) Given a deployed catalog discriminated change, recurse through versions of the entity in child catalogs and transfer the deployed changes to those versions as appropriate.
-
Method Details
-
propagate
void propagate(Trackable deployed, String parentCatalog, OperationType changeType, String propagationId, TrackableRepository<Trackable> repository) Given a deployed catalog discriminated change, recurse through versions of the entity in child catalogs and transfer the deployed changes to those versions as appropriate.
Since DataTracking 2.0.7, if
PropagationManagerProperties.isAllowHierarchyPropagationHandlers(), the default implementation will first try finding aHierarchyPropagationHandlerthat can handle the request. See the documentation onHierarchyPropagationHandlerfor more details. If the global setting is disabled, or if noHierarchyPropagationHandlercould handle the request, the behavior will fall back to the standard propagation flow as described below.In the standard propagation flow, the default implementation defers to implementations of
PropagationHandler.PropagationHandlerinstances are registered with Spring and ordered. The first instance capable of handling is used and others are ignored. By default, for deletion, aCatalogEntityDeletedEventis emitted at the parent catalog level, and then one for each child catalog if propagation candidate doesn't exist. If propagation candidate exists for a child catalog,InternalPersistenceEventis used instead.- Parameters:
deployed- The deployed item containing changes to propagateparentCatalog- The catalog whose children will be checked for propagation itemschangeType- The type of operation to be propagated (CREATE,UPDATE,DELETE)propagationId- An id that identifies changes as part of this propagation. SeeChangeDetail.getPropagationId().repository- The repository responsible for persistence of the entity type
-