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
Constructors Constructor Description DefaultIncludedProductConfigurationService(org.springframework.context.MessageSource messageSource, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected 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.MessageSourcegetMessageSource()protected com.broadleafcommerce.common.extension.TypeFactorygetTypeFactory()voidpopulateIncludedProduct(@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)
-
-
-
Method Detail
-
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
protected String getIncludedProductName(@NonNull @NonNull IncludedProduct includedProduct)
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
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 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()
-
-