Class DefaultCloneProductService<P extends Product,R extends CloneProductRequest>

java.lang.Object
com.broadleafcommerce.catalog.clone.product.service.DefaultCloneProductService<P,R>
All Implemented Interfaces:
CloneProductService<P,R>

public class DefaultCloneProductService<P extends Product,R extends CloneProductRequest> extends Object implements CloneProductService<P,R>
Default implementation for CloneProductService.
Author:
Dima Myroniuk (dmyroniuk)
  • Constructor Details

    • DefaultCloneProductService

      public DefaultCloneProductService(ProductService<P> productService, CloneProductRelationshipsManager<P,R> pRelationshipService, ProductRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager domainMapper, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator, org.springframework.transaction.support.TransactionTemplate template)
  • Method Details

    • cloneProduct

      public P cloneProduct(R request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: CloneProductService

      Clone the product with an id CloneProductRequest.getProductId(). This will also clone the Product relationships DefaultRelationshipType which are specified in CloneProductRequest.getCloneRelationships().

      Additional relationships can be cloned via the P@link CloneProductRelationshipsService}

      Specified by:
      cloneProduct in interface CloneProductService<P extends Product,R extends CloneProductRequest>
      Parameters:
      request - the request to perform the clone operation
      context - context information surrounding sandboxing and multitenant state
      Returns:
      the cloned Product
    • generateClone

      protected com.broadleafcommerce.data.tracking.core.Trackable generateClone(R request, com.broadleafcommerce.data.tracking.core.Trackable product, Class<P> businessType, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • postClone

      protected void postClone(R request, P original, P cloned, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • createNotificationState

      protected com.broadleafcommerce.common.messaging.notification.domain.NotificationState createNotificationState(P original, P cloned, R request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • getAllSkus

      protected List<String> getAllSkus(P product, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • getSerializedEvent

      protected String getSerializedEvent(ProductCloneEvent cloneEvent)
    • notifyProductCloned

      protected void notifyProductCloned(com.broadleafcommerce.data.tracking.core.Trackable cloned)
    • getProductService

      protected ProductService<P> getProductService()
    • getPRelationshipService

      protected CloneProductRelationshipsManager<P,R> getPRelationshipService()
    • getRepository

      protected ProductRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
    • getNotificationManager

      protected com.broadleafcommerce.common.messaging.notification.NotificationManager getNotificationManager()
    • getDomainMapper

      protected com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager getDomainMapper()
    • getObjectMapper

      protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
    • getValidator

      protected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager getValidator()
    • getTemplate

      protected org.springframework.transaction.support.TransactionTemplate getTemplate()