Class DefaultCartItemMergingService<I extends com.broadleafcommerce.cart.client.domain.CartItem>

    • Method Detail

      • getItemsFromContainer

        protected Collection<I> getItemsFromContainer​(@NonNull
                                                      @NonNull com.broadleafcommerce.cart.client.domain.Cart container,
                                                      @Nullable
                                                      com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from class: AbstractItemMergingService
        Gets the from the item container.
        Specified by:
        getItemsFromContainer in class AbstractItemMergingService<com.broadleafcommerce.cart.client.domain.Cart,​I extends com.broadleafcommerce.cart.client.domain.CartItem>
        Parameters:
        container - the container to fetch the items from
        context - the context of the request
        Returns:
        the items from the container
      • isSameItem

        protected boolean isSameItem​(@NonNull
                                     @NonNull com.broadleafcommerce.cart.client.domain.CartItem item1,
                                     @NonNull
                                     @NonNull com.broadleafcommerce.cart.client.domain.CartItem item2)
        Description copied from class: AbstractItemMergingService
        Tells if two item instances are actually the same instance. This would typically be determined by something like the item ID. Note that this does NOT indicate that "these items are the same so they should be merged". This is used to prevent creating an item match with itself during an update scenario.
        Specified by:
        isSameItem in class AbstractItemMergingService<com.broadleafcommerce.cart.client.domain.Cart,​I extends com.broadleafcommerce.cart.client.domain.CartItem>
        Parameters:
        item1 - an item to compare
        item2 - another item to compare
        Returns:
        true if the two items are referring to the same instance
      • hashMatchingCriteria

        protected String hashMatchingCriteria​(@NonNull
                                              I item)
        Generates a hash for any information on the item that should be used to determine if they represent the same item configuration. This implementation only uses attribute choices, which are product options of type CART_ITEM_ATTRIBUTE or VARIANT_DISTINGUISHING.
        Specified by:
        hashMatchingCriteria in class AbstractItemMergingService<com.broadleafcommerce.cart.client.domain.Cart,​I extends com.broadleafcommerce.cart.client.domain.CartItem>
        Parameters:
        item - the item to generate a hash for
        Returns:
        a hashed string of some subset of the items attributes
      • resolveMergeTypes

        protected void resolveMergeTypes​(@NonNull
                                         @NonNull List<MergeItemPair<I>> mergeItemPairs,
                                         @Nullable
                                         com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from class: AbstractItemMergingService
        Determines what merge types should be used for the items and applies it to the merge item pairs.
        Specified by:
        resolveMergeTypes in class AbstractItemMergingService<com.broadleafcommerce.cart.client.domain.Cart,​I extends com.broadleafcommerce.cart.client.domain.CartItem>
        Parameters:
        mergeItemPairs - the item pairs to resolve the merge types for
      • buildCatalogItemRequestsForMergeItem

        protected Collection<CatalogItemRequest> buildCatalogItemRequestsForMergeItem​(@NonNull
                                                                                      @NonNull List<MergeItemPair<I>> mergeItemPairs,
                                                                                      @Nullable
                                                                                      com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      • buildCatalogItemRequest

        protected CatalogItemRequest buildCatalogItemRequest​(@NonNull
                                                             @NonNull MergeItemPair<I> mergeItemPair,
                                                             @Nullable
                                                             com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Hook point to build the CatalogItemRequest and populate any additional attributes that should be passed to the CatalogProvider when fetching the catalog representation for merging the cart item.
        Parameters:
        mergeItemPair - the MergeItemPair containing the details for the item merge
        context - context information around sandbox and multitenant state
        Returns:
        the populated CatalogItemRequest for the MergeItemPair
      • identifyCatalogItemKey

        protected String identifyCatalogItemKey​(@NonNull
                                                @NonNull MergeItemPair<I> mergeItemPair,
                                                @Nullable
                                                com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      • doMergeCombine

        protected void doMergeCombine​(@NonNull
                                      @NonNull MergeItemPair<I> itemPair)
        Description copied from class: AbstractItemMergingService
        Perform the actual combination of two items (quantity change) for the combination merge type.
        Specified by:
        doMergeCombine in class AbstractItemMergingService<com.broadleafcommerce.cart.client.domain.Cart,​I extends com.broadleafcommerce.cart.client.domain.CartItem>
        Parameters:
        itemPair - the item pair to combine
      • getObjectMapper

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

        protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
      • setTypeFactory

        @Autowired
        public void setTypeFactory​(com.broadleafcommerce.common.extension.TypeFactory typeFactory)