Class ExternalPricingProvider
java.lang.Object
com.broadleafcommerce.cartoperation.service.provider.external.AbstractExternalProvider
com.broadleafcommerce.cartoperation.service.provider.external.ExternalPricingProvider
- All Implemented Interfaces:
PricingProvider
- Author:
- Chad Harchar (charchar), Nathan Moore (nathandmoore)
-
Field Summary
Fields inherited from class com.broadleafcommerce.cartoperation.service.provider.external.AbstractExternalProvider
ENTITY_NOT_FOUND
-
Constructor Summary
ConstructorDescriptionExternalPricingProvider
(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 Summary
Modifier and TypeMethodDescriptionprotected void
addUserTargets
(@NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext) Deprecated, for removal: This API element is subject to removal in a future version.protected void
addUserTargets
(@NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Add customer and customer segment user targets toPriceContext.getUserTargets()
.protected <P extends com.broadleafcommerce.pricing.client.domain.PriceInfo>
voidattachPricingToCartItem
(@NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Collection<P> priceInfos, String variantId) protected <C extends com.broadleafcommerce.cart.client.domain.CartItem>
Set<com.broadleafcommerce.pricing.client.domain.PriceableTarget>buildPriceableTargets
(@NotNull Collection<C> cartItems, Map<String, Integer> totalQuantityForTargetId) protected String
buildPriceContextHeader
(@NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext) protected com.broadleafcommerce.pricing.client.domain.UserTargetRef
createUserTargetRef
(String targetValue, String targetType) protected CartItemPricingUtils
protected com.broadleafcommerce.pricing.client.domain.context.PriceContext
getPriceContext
(Locale locale, javax.money.CurrencyUnit currency) protected com.broadleafcommerce.pricing.client.domain.context.PriceContext
getPriceContext
(Locale locale, javax.money.CurrencyUnit currency, com.broadleafcommerce.cart.client.domain.Cart cart) protected com.broadleafcommerce.pricing.client.domain.context.PriceInfoContext
getPriceInfoContext
(Set<com.broadleafcommerce.pricing.client.domain.PriceableTarget> priceableTargets) protected ExternalPricingProperties
protected String
getTotalQuantityForTargetIdMap
(@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.protected UserTargetGenerationService
protected boolean
isDependentItem
(com.broadleafcommerce.cart.client.domain.CartItem cartItem) List<com.broadleafcommerce.cart.client.domain.CartItem>
retrievePrices
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Locale locale, @NonNull javax.money.CurrencyUnit currency, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve and attach prices for the provided cart items.<C extends com.broadleafcommerce.cart.client.domain.CartItem>
List<C>retrievePrices
(@NonNull Collection<C> cartItems, @NonNull Locale locale, @NonNull javax.money.CurrencyUnit currency, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve and attach prices for the provided cart items.protected List<com.broadleafcommerce.pricing.client.domain.PriceInfo>
sendCartItemPricingRequest
(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, com.broadleafcommerce.pricing.client.domain.context.PriceInfoContext priceInfoContext, com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext) Methods inherited from class com.broadleafcommerce.cartoperation.service.provider.external.AbstractExternalProvider
buildNotFoundException, executeRequest, getHeaders, getObjectMapper, getTypeFactory, getWebClient, isEntityNotFound, pageableToParams, uriVars
-
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 interfacePricingProvider
- 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 interfacePricingProvider
- 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
-
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.in favor ofaddUserTargets(PriceContext,ContextInfo)
Add customer and customer segment user targets toPriceContext.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 toPriceContext.getUserTargets()
. Uses the current authentication token to determine principal and details.- Parameters:
priceContext
- The priceContext to add user targets tocontextInfo
- The context information with customer segments
-
createUserTargetRef
-
getCartItemPricingUtils
-
getProperties
-
getUserTargetGenerationService
-
addUserTargets(PriceContext,ContextInfo)