Class DefaultCancellationPolicyService
java.lang.Object
com.broadleafcommerce.cartoperation.service.subscription.DefaultCancellationPolicyService
- All Implemented Interfaces:
CancellationPolicyService
Default implementation of
CancellationPolicyService.- Since:
- Cart Operation Service 2.3.0, Release Train 2.3.0
- Author:
- Sunny Yu
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultCancellationPolicyService(SubscriptionOpsProvider subscriptionOpsProvider, CartSubscriptionUtils cartSubscriptionUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected <T extends com.broadleafcommerce.cart.client.domain.CartItem>
IdentifyCancellationPolicyRequestbuildIdentifyCancellationPolicyRequest(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull List<T> cartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected Optional<com.broadleafcommerce.order.common.domain.subscription.CancellationPolicyRef>findCancellationPolicy(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Finds the cancellation policy for the given cart item fromCartItem.getCandidateCancellationPolicies().protected CartSubscriptionUtilsprotected SubscriptionOpsProviderprotected com.broadleafcommerce.common.extension.TypeFactoryprotected List<com.broadleafcommerce.cart.client.domain.CartItem>identifyCancellationPolicyFromCandidates(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> itemsRequiresPolicy) Identifies and sets the cancellation policy for the givenCartItems from theCartItem.getCandidateCancellationPolicies().com.broadleafcommerce.cart.client.domain.CartpopulateCancellationPolicies(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates theCartItem.getCancellationPolicyRef()for the givenCart.getCartItems().protected <T extends com.broadleafcommerce.order.common.domain.subscription.CancellationPolicyRef>
voidpopulateCancellationPolicyForItem(@NonNull Map<String, T> policyByCartItemId, @NonNull com.broadleafcommerce.cart.client.domain.CartItem item) Populates the cancellation policy for the givenCartItem.protected booleanrequiresCancellationPolicy(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Checks if the givenCartItemrequires a cancellation policy.
-
Constructor Details
-
DefaultCancellationPolicyService
public DefaultCancellationPolicyService(SubscriptionOpsProvider subscriptionOpsProvider, CartSubscriptionUtils cartSubscriptionUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
Method Details
-
populateCancellationPolicies
public com.broadleafcommerce.cart.client.domain.Cart populateCancellationPolicies(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CancellationPolicyServicePopulates theCartItem.getCancellationPolicyRef()for the givenCart.getCartItems().- Specified by:
populateCancellationPoliciesin interfaceCancellationPolicyService- Parameters:
cart- theCartcontaining the items to populate the cancellation policy forcontextInfo- the current context- Returns:
- the updated
Cart
-
requiresCancellationPolicy
protected boolean requiresCancellationPolicy(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Checks if the givenCartItemrequires a cancellation policy.By default, it checks whether the item is a Broadleaf subscription item
- Parameters:
cartItem- theCartItemto check- Returns:
trueif the givenCartItemrequires a cancellation policy, otherwisefalse
-
identifyCancellationPolicyFromCandidates
protected List<com.broadleafcommerce.cart.client.domain.CartItem> identifyCancellationPolicyFromCandidates(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull List<com.broadleafcommerce.cart.client.domain.CartItem> itemsRequiresPolicy) Identifies and sets the cancellation policy for the givenCartItems from theCartItem.getCandidateCancellationPolicies(). For any items that could not have a cancellation policy identified, they will be returned in the result.- Parameters:
cart- theCartthat the givenCartItems belong toitemsRequiresPolicy- theCartItems to identify the cancellation policy for- Returns:
- the
CartItems that still require a cancellation policy
-
findCancellationPolicy
protected Optional<com.broadleafcommerce.order.common.domain.subscription.CancellationPolicyRef> findCancellationPolicy(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Finds the cancellation policy for the given cart item fromCartItem.getCandidateCancellationPolicies().The method first looks for a
CancellationPolicyRefwith aDefaultCancellationPolicySourceTypes.BLC_PRICE_DATA, thenDefaultCancellationPolicySourceTypes.BLC_PRODUCT.- Parameters:
cart- theCartthat the givenCartItembelongs tocartItem- theCartItemto find the cancellation policy for- Returns:
- an
Optionalcontaining theCancellationPolicyRefif found, otherwise empty
-
buildIdentifyCancellationPolicyRequest
protected <T extends com.broadleafcommerce.cart.client.domain.CartItem> IdentifyCancellationPolicyRequest buildIdentifyCancellationPolicyRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull List<T> cartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
populateCancellationPolicyForItem
protected <T extends com.broadleafcommerce.order.common.domain.subscription.CancellationPolicyRef> void populateCancellationPolicyForItem(@NonNull @NonNull Map<String, T> policyByCartItemId, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem item) Populates the cancellation policy for the givenCartItem.- Parameters:
policyByCartItemId- the map ofCartItem.getId()to the matchingCancellationPolicyRefitem- theCartItemto populate the cancellation policy for- Throws:
com.broadleafcommerce.data.tracking.core.exception.EntityMissingException- if the cancellation policy for the givenCartItemis not found
-
getSubscriptionOpsProvider
-
getCartSubscriptionUtils
-
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
-