Class DefaultItemChoiceConfigurationService

java.lang.Object
com.broadleafcommerce.cartoperation.service.configuration.DefaultItemChoiceConfigurationService
All Implemented Interfaces:
ItemChoiceConfigurationService

public class DefaultItemChoiceConfigurationService extends Object implements ItemChoiceConfigurationService
Author:
Chad Harchar (charchar)
  • Constructor Details

    • DefaultItemChoiceConfigurationService

      public DefaultItemChoiceConfigurationService(org.springframework.context.MessageSource messageSource, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
  • Method Details

    • populateItemChoice

      public void populateItemChoice(com.broadleafcommerce.cart.client.domain.CartItem cartItem, ProductOption option, List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems)
      Description copied from interface: ItemChoiceConfigurationService
      Populates item choices in CartItem.getDependentCartItems() and hydrates them with pricing information from ItemChoice and SpecificItemChoice.
      Specified by:
      populateItemChoice in interface ItemChoiceConfigurationService
      Parameters:
      cartItem - The CartItem on which to populate ItemChoices.
      option - The ProductOption (and its ProductOption.getItemChoice() for the item to populate and hydrate
      potentialDependentItems - The list of dependent cart items to pick from when populating ItemChoice.
    • findAndHydrateDependentsMatchingItemChoice

      protected List<com.broadleafcommerce.cart.client.domain.CartItem> findAndHydrateDependentsMatchingItemChoice(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull ItemChoice itemChoice)
    • findAndHydrateDependentsInCategory

      protected List<com.broadleafcommerce.cart.client.domain.CartItem> findAndHydrateDependentsInCategory(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull ItemChoice itemChoice)
    • findAndHydrateDependentsMatchingProducts

      protected List<com.broadleafcommerce.cart.client.domain.CartItem> findAndHydrateDependentsMatchingProducts(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull ItemChoice itemChoice)
    • findAndHydrateDependentsMatchingVariants

      protected List<com.broadleafcommerce.cart.client.domain.CartItem> findAndHydrateDependentsMatchingVariants(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull ItemChoice itemChoice)
    • hydrateItemChoicePricingDetails

      protected void hydrateItemChoicePricingDetails(@NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem dependentCartItem)
      Hydrates the pricing details for the parent ItemChoice on the dependent CartItem representing a specific choice. This information will be needed when pricing since the ItemChoice.getOverridePrice() should be used if the specific item doesn't have its own rather than using the underlying Product's or Variant's.
      Parameters:
      itemChoice - The parent ItemChoice of the dependentCartItem representing a SpecificItemChoice.
      dependentCartItem - The CartItem representing a SpecificItemChoice
    • isDiscountAllowed

      protected boolean isDiscountAllowed(@NonNull @NonNull ItemChoice itemChoice)
    • isDiscountAllowed

      protected boolean isDiscountAllowed(@NonNull @NonNull ItemChoice itemChoice, SpecificItemChoice specificItemChoice)
    • validateItemChoice

      public void validateItemChoice(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ProductOption option, @NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems)
      Description copied from interface: ItemChoiceConfigurationService
      Perform validation against the provided CartItem for the given ProductOption of type ProductOptionType.isItemChoice(String). This will also hydrate CartItem with pricing information from ItemChoice and SpecificItemChoice.
      Specified by:
      validateItemChoice in interface ItemChoiceConfigurationService
      Parameters:
      cartItem - The CartItem to perform item choice validation against.
      option - The ProductOption (and it's ProductOption.getItemChoice() we are using to validate the cart against.
      potentialDependentItems - The list of dependent cart items to pick from when validating ItemChoice.
    • findDependentsMatchingItemChoice

      protected MatchingDependentsContext findDependentsMatchingItemChoice(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull ItemChoice itemChoice)
    • validateMinQuantity

      protected void validateMinQuantity(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, @NonNull @NonNull ProductOption option)
    • validateMaxQuantity

      protected void validateMaxQuantity(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, @NonNull @NonNull ProductOption option)
    • getMessage

      protected String getMessage(@NonNull @NonNull String errorMessage, @Nullable Object... args)
    • addItemConfigError

      protected void addItemConfigError(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull String errorCode, @NonNull @NonNull String errorMessage)
    • getMessageSource

      protected org.springframework.context.MessageSource getMessageSource()
    • getTypeFactory

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