Class DefaultCartItemCatalogInformationService<P extends Product>

java.lang.Object
com.broadleafcommerce.cartoperation.service.mapping.DefaultCartItemCatalogInformationService<P>
All Implemented Interfaces:
CartItemCatalogInformationService<P>

public class DefaultCartItemCatalogInformationService<P extends Product> extends Object implements CartItemCatalogInformationService<P>
Maps Product and Variant information into the CartItem.
  • Constructor Details

  • Method Details

    • populateCatalogItemInformation

      public com.broadleafcommerce.cart.client.domain.CartItem populateCatalogItemInformation(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, boolean isAdd, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartItemCatalogInformationService
      Populate catalog information within the CartItem based on the provided CatalogItem and the merchandising context
      Specified by:
      populateCatalogItemInformation in interface CartItemCatalogInformationService<P extends Product>
      Parameters:
      cartItem - The CartItem that is to be updated with catalog item data
      catalogItemList - The catalog items that were retrieved for the add-to-cart, including dependent catalog items
      isAdd - Whether we are in an add-to-cart flow
      contextInfo - Context information around sandbox and multitenant state
      Returns:
      the updated CartItem that now contains CatalogItem data
    • populateCatalogItemInformation

      public com.broadleafcommerce.cart.client.domain.CartItem populateCatalogItemInformation(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product, @NonNull @NonNull List<P> catalogItemList, boolean isAdd, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartItemCatalogInformationService
      Populate catalog information within the CartItem based on the provided CatalogItem and the merchandising context
      Specified by:
      populateCatalogItemInformation in interface CartItemCatalogInformationService<P extends Product>
      Parameters:
      cartItem - The CartItem that is to be updated with catalog item data
      product - The CatalogItem that this CartItem is intended to represent
      catalogItemList - The catalog items that were retrieved for the add-to-cart, including dependent catalog items
      isAdd - Whether we are in an add-to-cart flow
      contextInfo - Context information around sandbox and multitenant state
      Returns:
      the updated CartItem that now contains CatalogItem data
    • identifyProductForCartItem

      protected Optional<P> identifyProductForCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList)
      Finds the catalog item that was added to the cart represented by the given cart item.
      Parameters:
      cartItem - Cart item to be hydrated with Catalog info
      catalogItemList - The list of Catalog Items that match one of the cart items in the cart
      Returns:
      The catalog item that matches the specific cart item.
    • populateBasicInfo

      protected void populateBasicInfo(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product)
      Hydrates basic product information onto a cart item.
      Parameters:
      cartItem - The cart item to hydrate
      product - The product or parent product of a variant added to the cart
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • populateInternalAttributes

      protected void populateInternalAttributes(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product)
      Hydrates the internal attributes onto a cart item.
      Parameters:
      cartItem - The cart item to hydrate
      product - The product or parent product of a variant added to the cart
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • getPriceableCharacteristics

      protected List<String> getPriceableCharacteristics(@NonNull P product)
      Gets the list of Characteristic field names that can be targeted for pricing.
      Parameters:
      product - Product to get characteristics from
      Returns:
      The list of Characteristic field names that can be targeted for pricing.
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • getTargetableCharacteristics

      protected Map<String,List<Object>> getTargetableCharacteristics(@NonNull P product)
      Gets the list of product characteristic values mapped by their field names that can be targeted in rule builders.
      Parameters:
      product - Product to get characteristics from
      Returns:
      The list of product characteristic values mapped by their field names that can be targeted in rule builders.
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • populatePricingInfo

      protected Map<String,com.broadleafcommerce.pricing.client.domain.PriceInfo> populatePricingInfo(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product, @Nullable Variant variant)
      Handles setting catalog pricing info onto a cart item. Returns the sku price info found as a map where the key is the sku and the value is the price info.
      Parameters:
      cartItem - The cart item to set catalog pricing info onto
      product - The selected product to add to cart
      variant - The selected variant to add to cart if any
      Returns:
      The skue price infos
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • populateVariantInfo

      protected void populateVariantInfo(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product, @NonNull @NonNull Map<String,com.broadleafcommerce.pricing.client.domain.PriceInfo> skuPriceInfos, @Nullable Variant variant)
      Hydrates variant info onto the cart item if a variant was added to cart.
      Parameters:
      cartItem - The cart item to be hydrated
      product - The parent product of the variant
      skuPriceInfos - The price info discovered for the variant
      variant - The variant to use for hydration
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • getDataDrivenEnumId

      @Nullable protected String getDataDrivenEnumId(@Nullable DataDrivenEnum dataDrivenEnum)
    • cleanPriceInfo

      protected com.broadleafcommerce.pricing.client.domain.PriceInfo cleanPriceInfo(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.PriceInfo priceInfo)
      Exclude PriceableTarget information from the PriceInfo as it's unnecessary to calculate pricing.
      Parameters:
      priceInfo - The price info to clean up for addition to CartItem attributes
      Returns:
      The price info with target information excluded
    • getPricingKey

      protected String getPricingKey(@NonNull P product, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Returns the product price key, if specified, otherwise retrieves it from the cart item or generates a new one. This in general only needed for the DefaultProductType.MERCHANDISING_PRODUCT as it doesn't have the SKU and pricing key.
      Parameters:
      product - the product to get the pricing key from
      cartItem - the cart item to get the pricing key from
      Returns:
      the pricing key
    • getImageAssetForProduct

      @Nullable protected com.broadleafcommerce.cart.client.domain.ImageAssetRef getImageAssetForProduct(@NonNull P product)
    • getImageAssetForVariant

      @Nullable protected com.broadleafcommerce.cart.client.domain.ImageAssetRef getImageAssetForVariant(@NonNull @NonNull Variant variant, @NonNull P product)
    • matchesPreferredAssetTag

      protected boolean matchesPreferredAssetTag(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.ImageAssetRef asset)
      Whether the given asset matches the preferredAssetTag to help determine which product asset to show in the cart for the item. This only checks for a matching asset tag.
      Parameters:
      asset - The asset to check for a match
      Returns:
      Whether the asset matches the preferred tag.
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • matchesVariantOption

      protected boolean matchesVariantOption(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.ImageAssetRef asset, @NonNull @NonNull String optionKey, @NonNull @NonNull String optionValue)
      Whether the asset matches the given product option values belonging to a variant. By default, this matches against the asset's tags, converting the optionKey and optionValue to upper and lower case as well to avoid case-sensitivity.
      Parameters:
      asset - The asset to check for a match
      optionKey - The variant's option key, e.g., color
      optionValue - The variant's option value, e.g., red
      Returns:
      Whether the asset matches the variant's option.
      Since:
      Cart Operation Service 2.2.0, Release Train 2.2.0
    • getCategoryIdsForProduct

      protected Set<String> getCategoryIdsForProduct(@NonNull P product)
    • populateVariantInformation

      protected void populateVariantInformation(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull Variant variant, @NonNull @NonNull Map<String,com.broadleafcommerce.pricing.client.domain.PriceInfo> skuPriceInfos)
    • buildItemAttributeChoices

      protected Map<String,com.broadleafcommerce.order.common.domain.AttributeChoiceValue> buildItemAttributeChoices(@NonNull @NonNull Map<String,String> requestItemAttributeChoices)
    • populateAttributeChoiceLabelsFromOptions

      protected void populateAttributeChoiceLabelsFromOptions(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product)
    • populateDependentItemInformation

      @Deprecated protected void populateDependentItemInformation(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product, @NonNull @NonNull List<P> products, boolean isAdd)
      Deprecated.
    • populateDependentItemInformation

      protected void populateDependentItemInformation(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull P product, @NonNull @NonNull List<P> products, boolean isAdd, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • hydrateIncludedProductDependentItems

      protected void hydrateIncludedProductDependentItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems, @NonNull P product, boolean isAdd)
      Populate IncludedProduct information on CartItem.getDependentCartItems() based on the product configuration.
      Parameters:
      cartItem - The cart item on which to populate dependent item product configuration information.
      potentialDependentItems - The list of CartItem.getDependentCartItems() to pick from to find a match for an IncludedProduct.
      product - The product with configuration to be used for hydration.
      isAdd - Whether we are in an add-to-cart flow
    • hydrateItemChoiceDependentItems

      protected void hydrateItemChoiceDependentItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems, @NonNull P product)
      Populate ItemChoice information on CartItem.getDependentCartItems() based on the product configuration.
      Parameters:
      cartItem - The cart item on which to populate dependent item product configuration information.
      potentialDependentItems - The list of CartItem.getDependentCartItems() to pick from to find a match for an ItemChoice.
      product - The product with configuration to be used for hydration.
    • getCartItemConfigurationService

      protected CartItemConfigurationService<Product> getCartItemConfigurationService()
    • getCartItemProductMappers

      protected List<CartItemProductMapper> getCartItemProductMappers()
    • getProperties

      protected CartOperationServiceProperties getProperties()
    • getBroadleafProductService

      protected BroadleafProductService<Product> getBroadleafProductService()
    • setBroadleafProductService

      @Autowired public void setBroadleafProductService(BroadleafProductService<Product> broadleafProductService)
    • getIncludedProductService

      protected IncludedProductConfigurationService getIncludedProductService()
    • setIncludedProductService

      @Autowired public void setIncludedProductService(IncludedProductConfigurationService includedProductService)
    • getItemChoiceService

      protected ItemChoiceConfigurationService getItemChoiceService()
    • setItemChoiceService

      @Autowired public void setItemChoiceService(ItemChoiceConfigurationService itemChoiceService)
    • getCartItemProductServiceProperties

      protected CartItemProductServiceProperties getCartItemProductServiceProperties()
    • setCartItemProductServiceProperties

      @Autowired public void setCartItemProductServiceProperties(CartItemProductServiceProperties cartItemProductServiceProperties)