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)
    • validateItemChoiceForSubscriptionItem

      protected void validateItemChoiceForSubscriptionItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, @NonNull @NonNull ProductOption option)
      Validates subscription related properties for the MatchingDependentsContext based on the ItemChoice, which is derived from the Product the CartItem represents.
      Parameters:
      cartItem - The parent CartItem whose dependents should be validated
      itemChoice - The ItemChoice being used as the source of validation rules for the dependents
      matchingCartItems - The MatchingDependentsContext with the dependents to validate based on the itemChoice.
      option - The ProductOption source of the ItemChoice
      Since:
      Cart Operation Service 2.3.0, Release Train 2.3.0
    • shouldValidateItemChoiceForSubscriptionItem

      protected boolean shouldValidateItemChoiceForSubscriptionItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice)
      Whether the cart item representing a subscription item should be validated during the current flow using the ItemChoice.
      Parameters:
      cartItem - The parent CartItem whose dependents should be validated
      itemChoice - The ItemChoice being used as the source of validation rules for the dependents
      Returns:
      Whether the cart item representing a subscription item should be validated during the current flow.
      Since:
      Cart Operation Service 2.3.0, Release Train 2.3.0
      See Also:
    • validateSubscriptionItemEditAfterPurchase

      protected boolean validateSubscriptionItemEditAfterPurchase(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, int quantityPriorModification)
    • validateSubscriptionItemAddAfterPurchase

      protected void validateSubscriptionItemAddAfterPurchase(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, int quantityPriorModification)
    • validateSubscriptionItemQuantityEditAfterPurchase

      protected void validateSubscriptionItemQuantityEditAfterPurchase(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, int quantityPriorModification)
    • validateSubscriptionItemQuantityDecreaseDeadline

      protected void validateSubscriptionItemQuantityDecreaseDeadline(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull MatchingDependentsContext matchingCartItems, int quantityPriorModification)
    • 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()
    • getCartSubscriptionUtils

      protected CartSubscriptionUtils getCartSubscriptionUtils()
    • setCartSubscriptionUtils

      @Autowired public void setCartSubscriptionUtils(CartSubscriptionUtils cartSubscriptionUtils)