Class ProductOptionContributionUtils
java.lang.Object
com.broadleafcommerce.catalog.service.product.commerce.util.ProductOptionContributionUtils
Utility methods for
ProductOptionDetails
created for the response to
a ProductDetailsRequest
.- Author:
- Nathan Moore (nathandmoore)
-
Constructor Summary
ConstructorDescriptionProductOptionContributionUtils
(PriceInfoContributionUtils priceInfoContributionUtils, CatalogServiceProperties properties, com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected ItemChoiceCategory
buildItemChoiceCategory
(ProductDetailsContext product, ItemChoice itemChoice, boolean narrowChoices) Builds out and prunes the category item choices.protected List<SpecificItemChoiceDetail>
buildSpecificItemChoices
(ProductDetailsContext productDetailsContext, ItemChoice itemChoice, PriceInfo priceInfo, boolean narrowChoices) Builds out and prunes the specific item choices.protected ItemChoiceDetail
createItemChoiceDetail
(@NonNull ItemChoice itemChoice, @NonNull ProductDetailsContext productDetailsContext, boolean narrowChoices) createProductOptionDetail
(@NonNull ProductOption option, @NonNull ProductDetailsContext productDetailsContext, boolean narrowChoices) Creates aProductOptionDetail
for aProductOption
included its embedded relationships.protected SpecificItemChoiceDetail
createSpecificItemChoiceDetails
(@NonNull SpecificItemChoice specificChoice, @NonNull ProductDetailsContext productDetailsContext, PriceInfo itemChoicePriceInfo) protected PriceInfoContributionUtils
protected CatalogServiceProperties
protected com.broadleafcommerce.common.extension.TypeFactory
protected ItemChoiceDetail
populateItemChoiceDefaults
(@NonNull ItemChoiceDetail itemChoice, @NonNull ProductDetailsContext productDetailsContext) protected SpecificItemChoiceDetail
populateSpecificChoice
(@NonNull SpecificItemChoiceDetail specificChoice, @NonNull ProductDetailsContext productDetailsContext) protected Optional<ProductDetails>
recursivelyNarrowItemChoices
(ProductDetails product, Map<String, ProductDetails> relatedProducts, Map<String, VariantDetail> relatedVariants, Set<String> invalidProductChoiceIds, int currentDepth) Recursively builds out and prunes the item choices for the product.
-
Constructor Details
-
ProductOptionContributionUtils
public ProductOptionContributionUtils(PriceInfoContributionUtils priceInfoContributionUtils, CatalogServiceProperties properties, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
Method Details
-
createProductOptionDetail
public ProductOptionDetail createProductOptionDetail(@NonNull @NonNull ProductOption option, @NonNull @NonNull ProductDetailsContext productDetailsContext, boolean narrowChoices) Creates aProductOptionDetail
for aProductOption
included its embedded relationships.- Parameters:
option
- TheProductOption
for which to make aProductOptionDetail
productDetailsContext
- The relevantProductDetailsContext
- Returns:
- a
ProductOptionDetail
for aProductOption
-
createItemChoiceDetail
protected ItemChoiceDetail createItemChoiceDetail(@NonNull @NonNull ItemChoice itemChoice, @NonNull @NonNull ProductDetailsContext productDetailsContext, boolean narrowChoices) -
populateItemChoiceDefaults
protected ItemChoiceDetail populateItemChoiceDefaults(@NonNull @NonNull ItemChoiceDetail itemChoice, @NonNull @NonNull ProductDetailsContext productDetailsContext) -
createSpecificItemChoiceDetails
protected SpecificItemChoiceDetail createSpecificItemChoiceDetails(@NonNull @NonNull SpecificItemChoice specificChoice, @NonNull @NonNull ProductDetailsContext productDetailsContext, @Nullable PriceInfo itemChoicePriceInfo) -
populateSpecificChoice
protected SpecificItemChoiceDetail populateSpecificChoice(@NonNull @NonNull SpecificItemChoiceDetail specificChoice, @NonNull @NonNull ProductDetailsContext productDetailsContext) -
buildItemChoiceCategory
@Nullable protected ItemChoiceCategory buildItemChoiceCategory(ProductDetailsContext product, ItemChoice itemChoice, boolean narrowChoices) Builds out and prunes the category item choices. This is responsible for starting the recursive pruning for item choices of typeDefaultItemChoiceTargetType.CATEGORY
.- Parameters:
product
- The relevantProductDetailsContext
itemChoice
- The relevantItemChoice
narrowChoices
- Whether or not to narrow the category item choices- Returns:
- The valid
ItemChoiceCategory
for this item choice.
-
recursivelyNarrowItemChoices
protected Optional<ProductDetails> recursivelyNarrowItemChoices(ProductDetails product, Map<String, ProductDetails> relatedProducts, Map<String, VariantDetail> relatedVariants, Set<String> invalidProductChoiceIds, int currentDepth) Recursively builds out and prunes the item choices for the product.- Parameters:
product
- The product to narrow the item choices onrelatedProducts
- The relevant related productsrelatedVariants
- The relevant related variantsinvalidProductChoiceIds
- The set of invalid product choice IDscurrentDepth
- The current depth of the recursion- Returns:
- The product after its item choices have been pruned.
-
buildSpecificItemChoices
protected List<SpecificItemChoiceDetail> buildSpecificItemChoices(ProductDetailsContext productDetailsContext, ItemChoice itemChoice, PriceInfo priceInfo, boolean narrowChoices) Builds out and prunes the specific item choices. This is responsible for starting the recursive pruning for item choices of typeDefaultItemChoiceTargetType.SPECIFIC_PRODUCTS
andDefaultItemChoiceTargetType.SPECIFIC_VARIANTS
. Note: Specific variant item choices are not configurable and therefore do not require recursive pruning.- Parameters:
productDetailsContext
- The relevantProductDetailsContext
itemChoice
- The relevantItemChoice
priceInfo
- The relevantPriceInfo
for the item choicenarrowChoices
- Whether or not to narrow the product item choices- Returns:
- The list of valid specific item choice details.
-
getPriceInfoContributionUtils
-
getProperties
-
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
-