Class ProductCrudEntityHelper

java.lang.Object
com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
com.broadleafcommerce.catalog.service.tenant.ProductCrudEntityHelper
All Implemented Interfaces:
com.broadleafcommerce.data.tracking.core.service.ChangeNotifier, com.broadleafcommerce.data.tracking.core.service.PropagationIntegrator

public class ProductCrudEntityHelper extends com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
Override of CrudEntityHelper for product mutation flows to run input validation even when no changes are detected on the product entity. This primarily targets characteristics validation that is no longer part of the product entity but persisted in a product's flow.
Since:
CatalogServices 2.3.0, Release Train 2.3.0
  • Field Summary

    Fields inherited from class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper

    SKIP_UPDATE_MSG_FMT
  • Constructor Summary

    Constructors
    Constructor
    Description
    ProductCrudEntityHelper(com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager mapper, List<com.broadleafcommerce.data.tracking.core.filtering.fetch.SortTransformer> sortTransformers, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator, com.broadleafcommerce.data.tracking.core.TrackableBehaviorUtil trackableBehaviorUtil)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected <P> org.springframework.data.util.Pair<P,com.broadleafcommerce.data.tracking.core.Trackable>
    applyUpdate(String entityToUpdateId, P change, Map<String,com.broadleafcommerce.data.tracking.core.Trackable> foundEntitiesByContextId, List<com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse.PersistenceFailure<P>> failures, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
     
    <P> P
    replace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
    Targets Product and validate early to validate characteristics that are now not part of the product entity.
    <P> P
    update(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
    Targets Product and validate early to validate characteristics that are now not part of the product entity.
    <P> List<P>
    updateAll(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
     
    <P> com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P>
    updateAllAllowingPartialSuccess(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
     

    Methods inherited from class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper

    applyReplace, convertFromPersistentDomain, convertToPersistentDomain, create, createAll, createAllAllowingPartialSuccess, delete, getMapper, getNotificationManager, getOriginalChanges, getPropagationHelperUtility, getSingleIndexRequestMessageFactory, getSortTransformers, getTrackableBehaviorUtil, getValidator, isSandboxableChangeWithNoChangedFields, notify, prepare, propagateIfApplicable, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, safeBuildSlimPropagationTracking, safeBuildSlimPropagationTrackingMap, setApplicationEventPublisher, setNotificationManager, setPropagationHelperUtility, setPropagationManager, setSingleIndexRequestMessageFactory, setTypeFactory, shouldValidateForEntityUpdate, transform, transformSort, updateSort, validateAllForCreate, validateAllForCreateAndThrowIfError, validateAllForReplace, validateAllForReplaceAndThrowIfError, validateAllForUpdate, validateAllForUpdateAndThrowIfError

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ProductCrudEntityHelper

      public ProductCrudEntityHelper(com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager mapper, List<com.broadleafcommerce.data.tracking.core.filtering.fetch.SortTransformer> sortTransformers, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator, com.broadleafcommerce.data.tracking.core.TrackableBehaviorUtil trackableBehaviorUtil)
  • Method Details

    • update

      public <P> P update(@NonNull String id, @NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, @NonNull com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
      Targets Product and validate early to validate characteristics that are now not part of the product entity. Because of that, no changes will be detected on a product and no validation happens in a normal flow.
      Overrides:
      update in class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
    • replace

      public <P> P replace(@NonNull String id, @NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
      Targets Product and validate early to validate characteristics that are now not part of the product entity. Because of that, no changes will be detected on a product and no validation happens in a normal flow.
      Overrides:
      replace in class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
    • updateAll

      public <P> List<P> updateAll(@NonNull List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, @NonNull com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
      Overrides:
      updateAll in class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
    • updateAllAllowingPartialSuccess

      public <P> com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P> updateAllAllowingPartialSuccess(@NonNull List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, @NonNull com.broadleafcommerce.data.tracking.core.TrackableRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository)
      Overrides:
      updateAllAllowingPartialSuccess in class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
    • applyUpdate

      @Nullable protected <P> org.springframework.data.util.Pair<P,com.broadleafcommerce.data.tracking.core.Trackable> applyUpdate(String entityToUpdateId, P change, Map<String,com.broadleafcommerce.data.tracking.core.Trackable> foundEntitiesByContextId, List<com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse.PersistenceFailure<P>> failures, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Overrides:
      applyUpdate in class com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper
      Parameters:
      entityToUpdateId - the context ID of the entity to which the change should be applied
      change - the changes to apply to the entity (only non-null values from this object will be applied)
      foundEntitiesByContextId - a map of entities by context ID. This will be used to get the entity to which the change will be applied.
      failures - if the update cannot be applied for whatever reason, the details of the failure will be added to this list
      contextInfo - context information surrounding sandboxing and multitenant state
      Returns:
      a pair of the business-domain and trackable representations of the entity after successfully applying the update. If the entity to update could not be found in foundEntitiesByContextId or if there was some error in mapping the updates, the return value will be null and the failure details will be added to failures.