Class DefaultIncludedProductConfigurationService
java.lang.Object
com.broadleafcommerce.cartoperation.service.configuration.DefaultIncludedProductConfigurationService
- All Implemented Interfaces:
IncludedProductConfigurationService
public class DefaultIncludedProductConfigurationService
extends Object
implements IncludedProductConfigurationService
- Author:
- Chad Harchar (charchar)
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultIncludedProductConfigurationService(org.springframework.context.MessageSource messageSource, com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddItemConfigError(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull IncludedProduct includedProduct, @NonNull String errorCode, @NonNull String errorMessage) protected com.broadleafcommerce.cart.client.domain.CartItemcreateDependentItem(@NonNull IncludedProduct includedProduct) protected Optional<com.broadleafcommerce.cart.client.domain.CartItem>findDependentMatchingIncludedProduct(@NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull IncludedProduct includedProduct) protected Optional<com.broadleafcommerce.cart.client.domain.CartItem>findMatchingProduct(@NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull IncludedProduct includedProduct) protected Optional<com.broadleafcommerce.cart.client.domain.CartItem>findMatchingVariant(@NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull IncludedProduct includedProduct) protected javax.money.MonetaryAmountgetIncludedItemUnitPrice(@NonNull IncludedProduct includedProduct) Returns the "unitPrice" of theIncludedProductto use for aCartItem.protected StringgetIncludedProductName(@NonNull IncludedProduct includedProduct) Returns the "name" of theIncludedProductto use for aCartItem.protected StringgetMessage(@NonNull String errorMessage, Object... args) protected org.springframework.context.MessageSourceprotected com.broadleafcommerce.common.extension.TypeFactoryvoidpopulateIncludedProduct(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull IncludedProduct includedProduct, @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems, boolean isAdd) Populate theIncludedProductas a dependent item in the providedCartItem.voidvalidateIncludedProduct(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull IncludedProduct includedProduct, @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems) Perform validation against the providedCartItemfor the givenIncludedProduct.protected voidvalidateQuantity(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.cart.client.domain.CartItem matchingCartItem, @NonNull IncludedProduct includedProduct)
-
Constructor Details
-
DefaultIncludedProductConfigurationService
public DefaultIncludedProductConfigurationService(org.springframework.context.MessageSource messageSource, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
Method Details
-
populateIncludedProduct
public void populateIncludedProduct(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull IncludedProduct includedProduct, @NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems, boolean isAdd) Description copied from interface:IncludedProductConfigurationServicePopulate theIncludedProductas a dependent item in the providedCartItem. If there is already an item inCartItem.getDependentCartItems()which matches theIncludedProduct, then that will be hydrated with pricing information. Otherwise, a new dependent cart item will be added to represent theIncludedProductif we are in an add-to-cart flow.- Specified by:
populateIncludedProductin interfaceIncludedProductConfigurationService- Parameters:
cartItem- TheCartItemfor which to populate theIncludedProduct.includedProduct- TheIncludedProductwe are populating.potentialDependentItems- The list ofCartItem.getDependentCartItems()to pick from to find a match for theIncludedProduct.isAdd- Whether we are in an add-to-cart flow, which dictates whether to add an unmatchedIncludedProduct.
-
findDependentMatchingIncludedProduct
protected Optional<com.broadleafcommerce.cart.client.domain.CartItem> findDependentMatchingIncludedProduct(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull IncludedProduct includedProduct) -
findMatchingProduct
protected Optional<com.broadleafcommerce.cart.client.domain.CartItem> findMatchingProduct(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull IncludedProduct includedProduct) -
findMatchingVariant
protected Optional<com.broadleafcommerce.cart.client.domain.CartItem> findMatchingVariant(@NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> dependentCartItems, @NonNull @NonNull IncludedProduct includedProduct) -
createDependentItem
protected com.broadleafcommerce.cart.client.domain.CartItem createDependentItem(@NonNull @NonNull IncludedProduct includedProduct) -
getIncludedProductName
Returns the "name" of theIncludedProductto use for aCartItem. This defaults to the label, but if not present it will defer to the specific Variant or Product's name.- Parameters:
includedProduct- theIncludedProductfor which to determine a name- Returns:
- the "name" of the
IncludedProductto use for aCartItem
-
getIncludedItemUnitPrice
protected javax.money.MonetaryAmount getIncludedItemUnitPrice(@NonNull @NonNull IncludedProduct includedProduct) Returns the "unitPrice" of theIncludedProductto use for aCartItem. This defaults to the overridePrice, but if not present it will defer to the specific Variant or Product's price.- Parameters:
includedProduct- theIncludedProductfor which to determine a unitPrice- Returns:
- the "unitPrice" of the
IncludedProductto use for aCartItem
-
validateIncludedProduct
public void validateIncludedProduct(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull IncludedProduct includedProduct, @NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> potentialDependentItems) Description copied from interface:IncludedProductConfigurationServicePerform validation against the providedCartItemfor the givenIncludedProduct.- Specified by:
validateIncludedProductin interfaceIncludedProductConfigurationService- Parameters:
cartItem- TheCartItemto performincluded productvalidation against.includedProduct- TheIncludedProductwe are using to validate the cart against.potentialDependentItems- The list ofdependent cart itemsto pick from when validatingIncludedProduct.
-
validateQuantity
protected void validateQuantity(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.cart.client.domain.CartItem matchingCartItem, @NonNull @NonNull IncludedProduct includedProduct) -
getMessage
-
addItemConfigError
protected void addItemConfigError(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull IncludedProduct includedProduct, @NonNull @NonNull String errorCode, @NonNull @NonNull String errorMessage) -
getMessageSource
protected org.springframework.context.MessageSource getMessageSource() -
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
-