Class DefaultCloneContentItemService<P extends ContentItem,R extends CloneContentItemRequest>
java.lang.Object
com.broadleafcommerce.content.clone.contentitem.service.DefaultCloneContentItemService<P,R>
- All Implemented Interfaces:
CloneContentItemService<P,R>
public class DefaultCloneContentItemService<P extends ContentItem,R extends CloneContentItemRequest>
extends Object
implements CloneContentItemService<P,R>
Default implementation for
CloneContentItemService.- Author:
- Susana Cruz (susanaccruz)
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultCloneContentItemService(ContentItemService<P> ContentItemService, FieldDataService<FieldData> fieldDataService, ContentItemHydrationService hydrationService, ContentFolderItemService<ContentFolderItem> folderItemService, ContentItemRepository<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, com.broadleafcommerce.common.extension.TypeFactory typeFactory, com.broadleafcommerce.data.tracking.core.tenant.service.CommonCatalogService<com.broadleafcommerce.data.tracking.core.tenant.domain.Catalog> catalogService) -
Method Summary
Modifier and TypeMethodDescriptionbulkCloneContentItems(List<R> requests, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) cloneContentItem(R request, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Clone the product with an idCloneContentItemRequest.getContentItemId().protected voidcloneFieldData(P original, P cloned, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) protected PcloneNestedContentItem(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, P nestedItem) Deprecated.protected PcloneNestedContentItem(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, P nestedItem, boolean hasReusableParent) protected voidcreateFolderItem(P clonedItem, R request, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) protected com.broadleafcommerce.common.messaging.notification.domain.NotificationStatecreateNotificationState(P original, P cloned) protected com.broadleafcommerce.data.tracking.core.TrackablegenerateClone(R request, com.broadleafcommerce.data.tracking.core.Trackable original, Class<P> businessType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) protected com.broadleafcommerce.data.tracking.core.tenant.service.CommonCatalogService<com.broadleafcommerce.data.tracking.core.tenant.domain.Catalog>protected ContentItemService<P>protected com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManagerprotected FieldDataService<FieldData>protected ContentFolderItemService<ContentFolderItem>protected ContentItemHydrationServiceprotected LinkedHashSet<String>getNestedContentItemIds(FieldData fieldData) protected com.broadleafcommerce.common.messaging.notification.NotificationManagerprotected com.fasterxml.jackson.databind.ObjectMapperprotected ContentItemRepository<com.broadleafcommerce.data.tracking.core.Trackable>protected StringgetSerializedEvent(ContentItemCloneEvent cloneEvent) protected org.springframework.transaction.support.TransactionTemplateprotected com.broadleafcommerce.common.extension.TypeFactoryprotected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManagerprotected voidhydrateCatalogInfoInAppContext(@NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context, @NonNull com.broadleafcommerce.data.tracking.core.Trackable original) When performing a clone operation, typically for bulk cloning in an application context, it is not necessarily possible for the caller to identify which assigned catalog (a.k.a., profile) since multiple items may be getting cloned and multiple catalogs can be assigned to the application.protected voidnotifyContentItemCloned(com.broadleafcommerce.data.tracking.core.Trackable cloned) protected PperformClone(R request, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.Trackable original) Deprecated.protected PperformClone(R request, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.Trackable original, boolean hasReusableParent) Creates a cloneContentItembased on aCloneContentItemRequest.protected com.broadleafcommerce.data.tracking.core.context.ContextInfoprepareCloneContext(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.Trackable clone) protected voidupdateFieldDataValue(FieldData fieldData, ContentField contentField, List<String> clonedNestedIds) protected voidvalidateForCreate(P clone, R request, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
-
Constructor Details
-
DefaultCloneContentItemService
public DefaultCloneContentItemService(ContentItemService<P> ContentItemService, FieldDataService<FieldData> fieldDataService, ContentItemHydrationService hydrationService, ContentFolderItemService<ContentFolderItem> folderItemService, ContentItemRepository<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, com.broadleafcommerce.common.extension.TypeFactory typeFactory, com.broadleafcommerce.data.tracking.core.tenant.service.CommonCatalogService<com.broadleafcommerce.data.tracking.core.tenant.domain.Catalog> catalogService)
-
-
Method Details
-
cloneContentItem
public P cloneContentItem(R request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CloneContentItemServiceClone the product with an id
CloneContentItemRequest.getContentItemId(). This will also clone theContentItemrelationships which are specified inCloneContentItemRequest.getCloneRelationships().- Specified by:
cloneContentItemin interfaceCloneContentItemService<P extends ContentItem,R extends CloneContentItemRequest> - Parameters:
request- the request to perform the clone operationcontext- context information surrounding sandboxing and multitenant state- Returns:
- the cloned
ContentItem
-
bulkCloneContentItems
public List<P> bulkCloneContentItems(List<R> requests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) - Specified by:
bulkCloneContentItemsin interfaceCloneContentItemService<P extends ContentItem,R extends CloneContentItemRequest>
-
performClone
@Deprecated protected P performClone(R request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.Trackable original) Deprecated. -
performClone
protected P performClone(R request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.Trackable original, boolean hasReusableParent) Creates a cloneContentItembased on aCloneContentItemRequest.- Parameters:
request- the request to perform the clone operation.context- context information surrounding sandboxing and multitenant state.original- the original content item to clone.hasReusableParent- indicates whether the item to be cloned has a standalone parent item or if its parent is embedded. This is only relevant if the item to be cloned is embedded, otherwise it is ignored.- Returns:
- the cloned content item.
-
prepareCloneContext
protected com.broadleafcommerce.data.tracking.core.context.ContextInfo prepareCloneContext(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, com.broadleafcommerce.data.tracking.core.Trackable clone) -
hydrateCatalogInfoInAppContext
protected void hydrateCatalogInfoInAppContext(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context, @NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable original) When performing a clone operation, typically for bulk cloning in an application context, it is not necessarily possible for the caller to identify which assigned catalog (a.k.a., profile) since multiple items may be getting cloned and multiple catalogs can be assigned to the application. Therefore, the items could be from different catalogs. To handle this, the item being cloned will be consulted to glean its catalog. Then, this method will resolve the implicit catalog matching the original but which belongs to the current application. This will be set on theContextRequest.- Parameters:
context- The request'sContextInfothat needs to be hydrated.original- The item to be cloned.- Throws:
com.broadleafcommerce.data.tracking.core.exception.NotPermittedException- when the original item's catalog has no implicit catalog belonging to the current application.
-
generateClone
-
validateForCreate
-
cloneFieldData
-
cloneNestedContentItem
@Deprecated protected P cloneNestedContentItem(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, P nestedItem) Deprecated. -
cloneNestedContentItem
-
getNestedContentItemIds
-
updateFieldDataValue
protected void updateFieldDataValue(FieldData fieldData, ContentField contentField, List<String> clonedNestedIds) -
createNotificationState
-
createFolderItem
-
getSerializedEvent
-
notifyContentItemCloned
protected void notifyContentItemCloned(com.broadleafcommerce.data.tracking.core.Trackable cloned) -
getContentItemService
-
getFieldDataService
-
getHydrationService
-
getFolderItemService
-
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() -
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory() -
getCatalogService
protected com.broadleafcommerce.data.tracking.core.tenant.service.CommonCatalogService<com.broadleafcommerce.data.tracking.core.tenant.domain.Catalog> getCatalogService()
-