java.lang.Object
com.broadleafcommerce.cartoperation.service.util.subscription.CartSubscriptionUtils

public class CartSubscriptionUtils extends Object
Utility class for subscription-related operations on a Cart.
Since:
Cart Operation Service 2.3.0, Release Train 2.3.0
Author:
Sunny Yu
  • Constructor Details

    • CartSubscriptionUtils

      public CartSubscriptionUtils(com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
  • Method Details

    • isSubscriptionEnabled

      public boolean isSubscriptionEnabled()
      Whether or not the subscription is enabled.
      Returns:
      true if the subscription is enabled, false otherwise
    • getSubscriptionActionFlow

      @Nullable public String getSubscriptionActionFlow(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Retrieves the subscription action flow from the cart. If the cart does not have an existing subscription action flow, it will check if the cart has subscription items. If the cart has subscription items, it will return DefaultSubscriptionActionFlow.CREATE.
      Parameters:
      cart - the cart whose subscription action flow is being evaluated
      contextInfo - context surrounding sandboxing and multitenant state
      Returns:
      the subscription action flow, null if the cart does not have subscription items
      See Also:
    • hasSubscriptionItems

      public boolean hasSubscriptionItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Determines if the cart has subscription items.
      Parameters:
      cart - the cart whose subscription items are being evaluated
      contextInfo - context surrounding sandboxing and multitenant state
      Returns:
      true if the cart has subscription items, false otherwise
    • identifySubscriptionRootItems

      public Map<String,com.broadleafcommerce.cart.client.domain.CartItem> identifySubscriptionRootItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Identifies the cart items that are serving as the root/parent item for a subscription. Note: each root item may or may not have dependent cart items.
      Parameters:
      cart - the cart whose subscription item prices are being evaluated & updated
      contextInfo - context surrounding sandboxing and multitenant state
      Returns:
      a map of cart item id to subscription root cart item
    • isSubscriptionItem

      public boolean isSubscriptionItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Determines if the given CartItem is a Broadleaf-managed subscription item.

      Broadleaf-managed subscriptions require Broadleaf's SubscriptionOperation, Billing, and Workflow dependencies.

      Parameters:
      cartItem - The CartItem in question.
      Returns:
      Whether cartItem is a subscription.
    • isSeparateFromPrimaryItem

      protected boolean isSeparateFromPrimaryItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
    • getExistingSubscriptionDetails

      public ExistingSubscriptionDetails getExistingSubscriptionDetails(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart)
      Gets the existing subscription details from the cart attributes.

      This is only relevant for subscriptions in a post-purchase flow, such as DefaultSubscriptionActionFlow.EDIT.

      Parameters:
      cart - the cart to get the existing subscription details from
      Returns:
      the ExistingSubscriptionDetails from the cart attributes
      See Also:
    • getExistingSubscriptionItemDetail

      public Optional<ExistingSubscriptionItemDetail> getExistingSubscriptionItemDetail(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Gets the existing subscription item detail.
      Parameters:
      cart - the cart to get the existing subscription details from
      cartItem - the cart item containing the id of the existing subscription item
      Returns:
      the Optional of ExistingSubscriptionItemDetail
      See Also:
    • getExistingSubscriptionItemDetail

      public Optional<ExistingSubscriptionItemDetail> getExistingSubscriptionItemDetail(@NonNull @NonNull ExistingSubscriptionDetails existingSubscriptionDetails, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
    • getExistingSubscriptionItemDetailForCustomFlow

      protected Optional<ExistingSubscriptionItemDetail> getExistingSubscriptionItemDetailForCustomFlow(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Hookpoint for custom SubscriptionActionFlows when determining the ExistingSubscriptionItemDetail for the given CartItem.
      Parameters:
      cart - the cart to get the existing subscription details from
      cartItem - the cart item containing the id of the existing subscription item
      Returns:
      the Optional of ExistingSubscriptionItemDetail
      See Also:
    • getObjectMapper

      protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
    • getTypeFactory

      protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
    • getEnvironment

      protected org.springframework.core.env.Environment getEnvironment()
    • setEnvironment

      @Autowired public void setEnvironment(org.springframework.core.env.Environment environment)