Class ExternalPricingProvider

java.lang.Object
com.broadleafcommerce.cartoperation.service.provider.external.AbstractExternalProvider
com.broadleafcommerce.cartoperation.service.provider.external.ExternalPricingProvider
All Implemented Interfaces:
PricingProvider

public class ExternalPricingProvider extends AbstractExternalProvider implements PricingProvider
Author:
Chad Harchar (charchar), Nathan Moore (nathandmoore)
  • Constructor Details

    • ExternalPricingProvider

      public ExternalPricingProvider(org.springframework.web.reactive.function.client.WebClient webClient, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, CartItemPricingUtils cartItemPricingUtils, ExternalPricingProperties properties, UserTargetGenerationService userTargetGenerationService)
  • Method Details

    • retrievePrices

      public <C extends com.broadleafcommerce.cart.client.domain.CartItem> List<C> retrievePrices(@NonNull @NonNull Collection<C> cartItems, @NonNull @NonNull Locale locale, @NonNull @NonNull javax.money.CurrencyUnit currency, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: PricingProvider
      Retrieve and attach prices for the provided cart items.
      Specified by:
      retrievePrices in interface PricingProvider
      Parameters:
      cartItems - The cart items that we are pricing.
      locale - The locale to use to match prices.
      currency - The currency to use to match prices.
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The cart items with prices attached.
    • getServiceClient

      protected String getServiceClient()
    • getTotalQuantityForTargetIdMap

      protected <C extends com.broadleafcommerce.cart.client.domain.CartItem> Map<String,Integer> getTotalQuantityForTargetIdMap(@NonNull @NonNull Collection<C> cartItems)
      Creates a map of the SKU or pricing key of an underlying item from a cart item to the total quantity of that item across all cart items. That is to say, if multiple of the same product are in the cart as separate line items, this method will return the combined quantity for that product as if it had only one line item.
      Type Parameters:
      C - Type of the CartItem in case of extensions
      Parameters:
      cartItems - Items in the cart
      Returns:
      A map of the SKU or pricing key of an underlying item from a cart item to the total quantity of that item across all cart items.
    • buildPriceContextHeader

      protected String buildPriceContextHeader(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext)
    • getPriceContext

      protected com.broadleafcommerce.pricing.client.domain.context.PriceContext getPriceContext(Locale locale, javax.money.CurrencyUnit currency)
    • getPriceInfoContext

      protected com.broadleafcommerce.pricing.client.domain.context.PriceInfoContext getPriceInfoContext(Set<com.broadleafcommerce.pricing.client.domain.PriceableTarget> priceableTargets)
    • attachPricingToCartItem

      protected <P extends com.broadleafcommerce.pricing.client.domain.PriceInfo> void attachPricingToCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull Collection<P> priceInfos, @Nullable String variantId)
    • attachPricingToCartItem

      protected <P extends com.broadleafcommerce.pricing.client.domain.PriceInfo> void attachPricingToCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull Collection<P> priceInfos)
    • isDependentItem

      protected boolean isDependentItem(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
    • addUserTargets

      protected void addUserTargets(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext)
      Add customer and customer segment user targets to PriceContext.getUserTargets(). Uses the current authentication token to determine principal and details.
      Parameters:
      priceContext - The priceContext to add user targets to
    • getCartItemPricingUtils

      protected CartItemPricingUtils getCartItemPricingUtils()
    • getProperties

      protected ExternalPricingProperties getProperties()
    • getUserTargetGenerationService

      protected UserTargetGenerationService getUserTargetGenerationService()