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 List<com.broadleafcommerce.cart.client.domain.CartItem> retrievePrices(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @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:
      cart - The cart 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.
    • 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.
    • sendCartItemPricingRequest

      protected List<com.broadleafcommerce.pricing.client.domain.PriceInfo> sendCartItemPricingRequest(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, com.broadleafcommerce.pricing.client.domain.context.PriceInfoContext priceInfoContext, com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext)
    • buildPriceableTargets

      protected <C extends com.broadleafcommerce.cart.client.domain.CartItem> Set<com.broadleafcommerce.pricing.client.domain.PriceableTarget> buildPriceableTargets(@NotNull @NotNull Collection<C> cartItems, Map<String,Integer> totalQuantityForTargetId)
    • 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)
    • getPriceContext

      protected com.broadleafcommerce.pricing.client.domain.context.PriceContext getPriceContext(Locale locale, javax.money.CurrencyUnit currency, @Nullable com.broadleafcommerce.cart.client.domain.Cart cart)
    • 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.pricing.client.domain.context.PriceContext priceContext, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull Collection<P> priceInfos, @Nullable String variantId)
    • isDependentItem

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

      @Deprecated(forRemoval=true) protected void addUserTargets(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext)
      Deprecated, for removal: This API element is subject to removal in a future version.
      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
    • addUserTargets

      protected void addUserTargets(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      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
      contextInfo - The context information with customer segments
    • createUserTargetRef

      protected com.broadleafcommerce.pricing.client.domain.UserTargetRef createUserTargetRef(String targetValue, String targetType)
    • getCartItemPricingUtils

      protected CartItemPricingUtils getCartItemPricingUtils()
    • getProperties

      protected ExternalPricingProperties getProperties()
    • getUserTargetGenerationService

      protected UserTargetGenerationService getUserTargetGenerationService()