Class DefaultCartResolverService
- java.lang.Object
-
- com.broadleafcommerce.cartoperation.service.DefaultCartResolverService
-
- All Implemented Interfaces:
CartResolverService
public class DefaultCartResolverService extends Object implements CartResolverService
- Author:
- Nick Crum (ncrum)
-
-
Field Summary
Fields Modifier and Type Field Description static String
CART_NOT_FOUND_MESSAGE_FORMAT
-
Constructor Summary
Constructors Constructor Description DefaultCartResolverService(CartOperationService cartOperationService, com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
accountMatches(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer)
Whether the customer's account matches the cart owner's.protected boolean
accountMatchesHierarchy(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer)
Whether the customer's account is in the cart owner's account hierarchy.protected boolean
applicationMatches(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String applicationId)
protected boolean
cartOwnershipMatchWithCustomerRef(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customerRef)
protected boolean
cartOwnershipMatchWithCustomerRef(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customerRef, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Determines if the givenCart.getCustomerRef()
matches with the givenCustomerRef
.protected boolean
contextMatches(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
protected boolean
customerHasAccessToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
protected boolean
customerMatches(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer)
Whether the customer matches the cart's owner.protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils
getAuthenticationUtils()
protected CartApprovalValidationService
getCartApprovalValidationService()
String
getCartNotFoundMessage(String cartId)
protected CartOperationService
getCartOperationService()
protected CartVersionValidationService
getCartVersionValidationService()
protected org.springframework.context.MessageSource
getMessageSource()
protected boolean
isUserAnApprover(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customerRef, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Determines if the givenCustomerRef
is an account approver for the givenCart
with theDefaultCartStatuses.REQUIRES_APPROVAL
status.protected boolean
isVisibleToCustomer(String cartStatus)
Returns whether a cart with the given status is allowed to viewed by a customer.Optional<com.broadleafcommerce.cart.client.domain.Cart>
resolveCartById(String cartId, com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Resolves aCart
given the cart ID, customer, and context.Optional<com.broadleafcommerce.cart.client.domain.Cart>
resolveCartByStatus(@NonNull Collection<String> statuses, @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Resolves theCart
with the first matching status for the given customer and context.com.broadleafcommerce.cart.client.domain.Cart
resolveCartForStatusChange(String cartId, Integer cartVersion, com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Similar toCartResolverService.resolveCartForUpdate(String, Integer, CustomerRef, ContextInfo)
except it will allow carts with statusDefaultCartStatuses.REQUIRES_APPROVAL
to have their statuses updated.com.broadleafcommerce.cart.client.domain.Cart
resolveCartForUpdate(String cartId, Integer cartVersion, com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Resolves the cart with additional validation that it can be updated by checking theCart.getVersion()
andCart.getStatus()
.Optional<com.broadleafcommerce.cart.client.domain.Cart>
resolveImplicitCart(@NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Resolves the givenCustomerRef
's implicit/default cart, which out of the box means anDefaultCartStatuses.IN_PROCESS
cart withnull
name.void
setCartApprovalValidationService(CartApprovalValidationService cartApprovalValidationService)
void
setCartVersionValidationService(CartVersionValidationService cartVersionValidationService)
void
setMessageSource(org.springframework.context.MessageSource messageSource)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.broadleafcommerce.cartoperation.service.CartResolverService
resolveCartByStatus, resolveInProcessCart
-
-
-
-
Field Detail
-
CART_NOT_FOUND_MESSAGE_FORMAT
public static final String CART_NOT_FOUND_MESSAGE_FORMAT
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DefaultCartResolverService
public DefaultCartResolverService(CartOperationService cartOperationService, com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils)
-
-
Method Detail
-
resolveCartById
public Optional<com.broadleafcommerce.cart.client.domain.Cart> resolveCartById(String cartId, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartResolverService
Resolves aCart
given the cart ID, customer, and context.If the provided
CustomerRef
is not registered, this will resolve a guest cart for the given ID and context. If the cart is found to be a customer cart, this will return as empty, because an anonymous customer can only access guest carts.If the provided
CustomerRef
is registered, this will resolve a customer cart for the given customer, ID, and context. If the cart is found to be a guest cart, this will return as empty.If no cart is found, this will return an empty optional.
- Specified by:
resolveCartById
in interfaceCartResolverService
- Parameters:
cartId
- the cart IDcustomer
- the customercontextInfo
- the context info- Returns:
- an optional with a cart, or empty
-
resolveCartByStatus
public Optional<com.broadleafcommerce.cart.client.domain.Cart> resolveCartByStatus(@NonNull @NonNull Collection<String> statuses, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartResolverService
Resolves theCart
with the first matching status for the given customer and context.This method will iterate through each status, in given order, and attempt to retrieve a cart for that status. The first accessible cart retrieved for a status will be returned.
If no cart is found, this will return an empty optional.
- Specified by:
resolveCartByStatus
in interfaceCartResolverService
- Parameters:
statuses
- the statuses to checkcustomer
- the customercontextInfo
- the context info- Returns:
- an optional with a cart, or empty
-
resolveImplicitCart
public Optional<com.broadleafcommerce.cart.client.domain.Cart> resolveImplicitCart(@NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartResolverService
Resolves the givenCustomerRef
's implicit/default cart, which out of the box means anDefaultCartStatuses.IN_PROCESS
cart withnull
name.- Specified by:
resolveImplicitCart
in interfaceCartResolverService
- Parameters:
customer
- theCustomerRef
representing the currently authenticated usercontextInfo
- the context info- Returns:
- an optional with a cart, or empty
-
resolveCartForStatusChange
public com.broadleafcommerce.cart.client.domain.Cart resolveCartForStatusChange(String cartId, @Nullable Integer cartVersion, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartResolverService
Similar toCartResolverService.resolveCartForUpdate(String, Integer, CustomerRef, ContextInfo)
except it will allow carts with statusDefaultCartStatuses.REQUIRES_APPROVAL
to have their statuses updated. This enables the original requester of the approval to reclaim their cart to make changes.- Specified by:
resolveCartForStatusChange
in interfaceCartResolverService
- Parameters:
cartId
- Id of the cart to resolvecartVersion
- Cart version expectedcustomer
- Customer who owns the cartcontextInfo
- Additional sandbox and multitenant info- Returns:
- The matching cart if it's updatable
-
resolveCartForUpdate
public com.broadleafcommerce.cart.client.domain.Cart resolveCartForUpdate(String cartId, @Nullable Integer cartVersion, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartResolverService
Resolves the cart with additional validation that it can be updated by checking theCart.getVersion()
andCart.getStatus()
.- Specified by:
resolveCartForUpdate
in interfaceCartResolverService
- Parameters:
cartId
- Id of the cart to resolvecartVersion
- Cart version expectedcustomer
- Customer who owns the cartcontextInfo
- Additional sandbox and multitenant info- Returns:
- The matching cart if it's updatable
-
getCartNotFoundMessage
public String getCartNotFoundMessage(String cartId)
- Specified by:
getCartNotFoundMessage
in interfaceCartResolverService
-
contextMatches
protected boolean contextMatches(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
-
applicationMatches
protected boolean applicationMatches(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable String applicationId)
-
customerHasAccessToCart
protected boolean customerHasAccessToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
-
cartOwnershipMatchWithCustomerRef
protected boolean cartOwnershipMatchWithCustomerRef(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef)
-
cartOwnershipMatchWithCustomerRef
protected boolean cartOwnershipMatchWithCustomerRef(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Determines if the givenCart.getCustomerRef()
matches with the givenCustomerRef
.- Parameters:
cart
- theCart
to check the ownershipcustomerRef
- theCustomerRef
to check against- Returns:
- true if the cart ownership matches with the given
CustomerRef
, otherwise false
-
customerMatches
protected boolean customerMatches(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer)
Whether the customer matches the cart's owner.- Parameters:
cart
- The cart being resolvedcustomer
- The customer requested the cart- Returns:
- Whether the customer matches the cart's owner.
-
accountMatches
protected boolean accountMatches(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer)
Whether the customer's account matches the cart owner's.- Parameters:
cart
- The cart being resolvedcustomer
- The customer requested the cart- Returns:
- Whether the customer matches the cart owner's.
-
accountMatchesHierarchy
protected boolean accountMatchesHierarchy(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer)
Whether the customer's account is in the cart owner's account hierarchy.- Parameters:
cart
- The cart being resolvedcustomer
- The customer requested the cart- Returns:
- Whether the customer's account is in the cart owner's account hierarchy.
-
isVisibleToCustomer
protected boolean isVisibleToCustomer(String cartStatus)
Returns whether a cart with the given status is allowed to viewed by a customer.- Parameters:
cartStatus
- The status of the cart in question.- Returns:
- Whether a cart with the given status is allowed to viewed by a customer.
-
isUserAnApprover
protected boolean isUserAnApprover(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Determines if the givenCustomerRef
is an account approver for the givenCart
with theDefaultCartStatuses.REQUIRES_APPROVAL
status.- Parameters:
cart
- theCart
that requires approvalcustomerRef
- theCustomerRef
to check- Returns:
- true if the given
CustomerRef
is an account approver for the givenCart
, otherwise false
-
getCartOperationService
protected CartOperationService getCartOperationService()
-
getAuthenticationUtils
protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils()
-
getCartApprovalValidationService
protected CartApprovalValidationService getCartApprovalValidationService()
-
setCartApprovalValidationService
@Autowired public void setCartApprovalValidationService(CartApprovalValidationService cartApprovalValidationService)
-
getCartVersionValidationService
protected CartVersionValidationService getCartVersionValidationService()
-
setCartVersionValidationService
@Autowired public void setCartVersionValidationService(CartVersionValidationService cartVersionValidationService)
-
getMessageSource
protected org.springframework.context.MessageSource getMessageSource()
-
setMessageSource
@Autowired public void setMessageSource(org.springframework.context.MessageSource messageSource)
-
-