Class PropagationManagerProperties

java.lang.Object
com.broadleafcommerce.data.tracking.core.transition.environment.PropagationManagerProperties

@ConfigurationProperties(prefix="broadleaf.propagation") public class PropagationManagerProperties extends Object
Granular properties related to propagation capabilities. Specifically, those features embodied in DefaultPropagationManager.
Since:
Data Tracking 2.0.5
  • Constructor Details

    • PropagationManagerProperties

      public PropagationManagerProperties()
  • Method Details

    • isAllowHierarchyPropagationHandlers

      public boolean isAllowHierarchyPropagationHandlers()

      If enabled, DefaultPropagationManager will allow the use of HierarchyPropagationHandler components. Whether any of the HierarchyPropagationHandler components are actually used in a particular request depends on whether any of them can handle it, but this toggle represents a top-level opt-in/opt-out flag to gate whether the hierarchical handlers are even an available option for propagation. By default, this is set to false for backward compatibility.

      Since:
      DataTracking 2.0.7
    • isAllowCatalogEntityDeletionNotification

      public boolean isAllowCatalogEntityDeletionNotification()
      Whether a notification for a catalog entity deletion is allowed. Default is true. NOTE: Prior to 2.0.5, all catalog entity deletion notifications were always enabled and why the default is set to true.
    • isAllowCatalogEntityCreationNotification

      public boolean isAllowCatalogEntityCreationNotification()
      Whether a notification for a catalog entity creation is allowed. Default is false.
    • isAllowCatalogEntityUpdateNotification

      public boolean isAllowCatalogEntityUpdateNotification()
      Whether a notification for a catalog entity update is allowed. Default is false.
    • getRecursivePropagationCatalogIdsProcessingBatchSize

      public int getRecursivePropagationCatalogIdsProcessingBatchSize()

      When using the standard recursive propagation flow in DefaultPropagationManager, there may be a huge number of direct child catalogs found for any given catalog. Each of those may contain an override record that should be the target of propagation. We don't want to load too many things in memory, or exceed query size limits with large 'IN' clauses.

      Batching becomes especially important due to the recursive nature of the propagation. For example, without any limits, if you have 10000 child catalogs, each with their own product override, you'll have loaded 10000 child catalogs IDs as well as 10000 products at the first layer of recursion. Then, as you process each product, each one will enter this flow at the next level of recursion - it will load the next layer of catalog IDs and override entities, stacking on top of what we already have at the first layer. By setting a reasonable limit on how many entities are loaded at a time at each layer, we can place an upper bound on memory usage. Generally speaking, the default should suffice for most use cases.

      Since:
      DataTracking 2.0.7
    • setAllowHierarchyPropagationHandlers

      public void setAllowHierarchyPropagationHandlers(boolean allowHierarchyPropagationHandlers)

      If enabled, DefaultPropagationManager will allow the use of HierarchyPropagationHandler components. Whether any of the HierarchyPropagationHandler components are actually used in a particular request depends on whether any of them can handle it, but this toggle represents a top-level opt-in/opt-out flag to gate whether the hierarchical handlers are even an available option for propagation. By default, this is set to false for backward compatibility.

      Since:
      DataTracking 2.0.7
    • setAllowCatalogEntityDeletionNotification

      public void setAllowCatalogEntityDeletionNotification(boolean allowCatalogEntityDeletionNotification)
      Whether a notification for a catalog entity deletion is allowed. Default is true. NOTE: Prior to 2.0.5, all catalog entity deletion notifications were always enabled and why the default is set to true.
    • setAllowCatalogEntityCreationNotification

      public void setAllowCatalogEntityCreationNotification(boolean allowCatalogEntityCreationNotification)
      Whether a notification for a catalog entity creation is allowed. Default is false.
    • setAllowCatalogEntityUpdateNotification

      public void setAllowCatalogEntityUpdateNotification(boolean allowCatalogEntityUpdateNotification)
      Whether a notification for a catalog entity update is allowed. Default is false.
    • setRecursivePropagationCatalogIdsProcessingBatchSize

      public void setRecursivePropagationCatalogIdsProcessingBatchSize(int recursivePropagationCatalogIdsProcessingBatchSize)

      When using the standard recursive propagation flow in DefaultPropagationManager, there may be a huge number of direct child catalogs found for any given catalog. Each of those may contain an override record that should be the target of propagation. We don't want to load too many things in memory, or exceed query size limits with large 'IN' clauses.

      Batching becomes especially important due to the recursive nature of the propagation. For example, without any limits, if you have 10000 child catalogs, each with their own product override, you'll have loaded 10000 child catalogs IDs as well as 10000 products at the first layer of recursion. Then, as you process each product, each one will enter this flow at the next level of recursion - it will load the next layer of catalog IDs and override entities, stacking on top of what we already have at the first layer. By setting a reasonable limit on how many entities are loaded at a time at each layer, we can place an upper bound on memory usage. Generally speaking, the default should suffice for most use cases.

      Since:
      DataTracking 2.0.7
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • canEqual

      protected boolean canEqual(Object other)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object