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
ConstructorsConstructorDescriptionProductCrudEntityHelper(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 TypeMethodDescriptionprotected <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> Preplace(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> Pupdate(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
-
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:
updatein classcom.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:
replacein classcom.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:
updateAllin classcom.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:
updateAllAllowingPartialSuccessin classcom.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:
applyUpdatein classcom.broadleafcommerce.data.tracking.core.service.CrudEntityHelper- Parameters:
entityToUpdateId- the context ID of the entity to which the change should be appliedchange- 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 listcontextInfo- 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
foundEntitiesByContextIdor if there was some error in mapping the updates, the return value will benulland the failure details will be added tofailures.
-