Class DefaultIncludedProductConfigurationService

    • Constructor Detail

      • DefaultIncludedProductConfigurationService

        public DefaultIncludedProductConfigurationService​(org.springframework.context.MessageSource messageSource,
                                                          com.broadleafcommerce.common.extension.TypeFactory typeFactory)
    • 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: IncludedProductConfigurationService
        Populate the IncludedProduct as a dependent item in the provided CartItem. If there is already an item in CartItem.getDependentCartItems() which matches the IncludedProduct, then that will be hydrated with pricing information. Otherwise, a new dependent cart item will be added to represent the IncludedProduct if we are in an add-to-cart flow.
        Specified by:
        populateIncludedProduct in interface IncludedProductConfigurationService
        Parameters:
        cartItem - The CartItem for which to populate the IncludedProduct.
        includedProduct - The IncludedProduct we are populating.
        potentialDependentItems - The list of CartItem.getDependentCartItems() to pick from to find a match for the IncludedProduct.
        isAdd - Whether we are in an add-to-cart flow, which dictates whether to add an unmatched IncludedProduct.
      • 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 the IncludedProduct to use for a CartItem. This defaults to the label, but if not present it will defer to the specific Variant or Product's name.
        Parameters:
        includedProduct - the IncludedProduct for which to determine a name
        Returns:
        the "name" of the IncludedProduct to use for a CartItem
      • getIncludedItemUnitPrice

        protected javax.money.MonetaryAmount getIncludedItemUnitPrice​(@NonNull
                                                                      @NonNull IncludedProduct includedProduct)
        Returns the "unitPrice" of the IncludedProduct to use for a CartItem. This defaults to the overridePrice, but if not present it will defer to the specific Variant or Product's price.
        Parameters:
        includedProduct - the IncludedProduct for which to determine a unitPrice
        Returns:
        the "unitPrice" of the IncludedProduct to use for a CartItem
      • 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()