Interface PropagationManager

All Known Implementing Classes:
DefaultPropagationManager

public interface PropagationManager
Manager component responsible for aggregating one or more PropagationHandler instances and picking the best handler to perform propagation give a set of contextual criteria.
Author:
Jeff Fischer
  • Method Summary

    Modifier and Type
    Method
    Description
    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 using the process defined implementations of PropagationHandler.
  • 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 using the process defined implementations of PropagationHandler. PropagationHandler instances are registered with Spring and ordered. The first instance capable of handling is used and others are ignored.

      For deletion, a CatalogEntityDeletedEvent is 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, InternalPersistenceEvent is used instead.

      Parameters:
      deployed - The deployed item containing changes to propagate
      parentCatalog - The catalog whose children will be checked for propagation items
      changeType - The type of operation to be propagated (CREATE,UPDATE,DELETE)
      propagationId - An id that identifies changes as part of this propagation. See ChangeDetail.getPropagationId().
      repository - The repository responsible for persistence of the entity type