Class DefaultCheckoutWorkflow

java.lang.Object
com.broadleafcommerce.cartoperation.service.checkout.workflow.DefaultCheckoutWorkflow
All Implemented Interfaces:
CheckoutWorkflow

public class DefaultCheckoutWorkflow extends Object implements CheckoutWorkflow
Author:
Chris Kittrell (ckittrell)
  • Field Details

  • Constructor Details

  • Method Details

    • execute

      public CheckoutProcessDto execute(@NonNull @NonNull CheckoutProcessDto processDto, @NonNull @NonNull Map<String,String> securityCodes, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CheckoutWorkflow
      Method used to coordinate the execution of CheckoutWorkflowActivities. If there is an exception/error during the execution of those activities, then CheckoutWorkflow.rollback(CheckoutProcessDto, ContextInfo) should be called to un-do the work that had been done up to the point of the exception/error.
      Specified by:
      execute in interface CheckoutWorkflow
      Parameters:
      processDto - The CheckoutProcessDto that we're attempting to checkout with.
      securityCodes - Secure codes that are passed to the gateway for verification during authorization or capture transactions.
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The final state of the CheckoutProcessDto following the execution of the workflow.
    • getWorkflowActivities

      protected List<? extends CheckoutWorkflowActivity> getWorkflowActivities(@NonNull @NonNull CheckoutProcessDto processDto)
    • updateCartStatusForPaymentFailures

      protected CheckoutProcessDto updateCartStatusForPaymentFailures(@NonNull @NonNull CheckoutProcessDto processDto, @NonNull @NonNull CheckoutWorkflowActivityException e, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • shouldEnterAwaitingPaymentFinalizationCartStatus

      protected boolean shouldEnterAwaitingPaymentFinalizationCartStatus(@NonNull @NonNull CheckoutProcessDto processDto, @NonNull @NonNull CheckoutWorkflowActivityException e, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • recordPaymentFinalizationTimestamp

      protected void recordPaymentFinalizationTimestamp(@NonNull @NonNull CheckoutProcessDto processDto)
    • getPaymentFinalizationTimestamps

      protected Map<String,String> getPaymentFinalizationTimestamps(@NonNull @NonNull Map<String,Object> cartInternalAttributes)
    • getCurrentTimestamp

      @Nullable protected String getCurrentTimestamp()
    • unlockPayments

      protected void unlockPayments(@NonNull @NonNull CheckoutProcessDto processDto, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • rollback

      public CheckoutProcessDto rollback(@NonNull @NonNull CheckoutProcessDto processDto, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CheckoutWorkflow
      Method used to coordinate the rollback of work that has been done by the CheckoutWorkflowActivities up to that point.
      Specified by:
      rollback in interface CheckoutWorkflow
      Parameters:
      processDto - The CheckoutProcessDto that we were attempting to checkout with, but ran into an exception/error.
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The final state of the CheckoutProcessDto following the execution of the workflow rollback.
    • sendCheckoutRollbackEvent

      public void sendCheckoutRollbackEvent(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String requestId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CheckoutWorkflow
      Send a message to notify external services (and internal listeners) of the checkout workflow rollback, so that they can react accordingly.
      Specified by:
      sendCheckoutRollbackEvent in interface CheckoutWorkflow
      Parameters:
      cart - The cart that is being rolled back.
      requestId - The checkout request id
      contextInfo - Context information around sandbox and multitenant state.
    • logErrorInitiatingWorkflowRollback

      protected void logErrorInitiatingWorkflowRollback(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String requestId, Exception e)
      Log a message to record the initiation of the workflow rollback
      Parameters:
      cart - The cart that is being acted upon in this workflow
      requestId - The id used to identify changes tied to the specific execution request
      e - The exception thrown by the CheckoutWorkflowActivity
    • executeActivity

      protected CheckoutProcessDto executeActivity(@NonNull @NonNull CheckoutWorkflowActivity activity, @NonNull @NonNull CheckoutProcessDto processDto, @NonNull @NonNull Map<String,String> securityCodes, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • logErrorInitiatingWorkflowRollback

      protected void logErrorInitiatingWorkflowRollback(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String requestId, @NonNull @NonNull CheckoutWorkflowActivityException e)
    • recordWorkflowError

      protected CheckoutProcessDto recordWorkflowError(@NonNull @NonNull CheckoutProcessDto processDto, @NonNull @NonNull CheckoutWorkflowActivityException workflowActivityException, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Method responsible for recording the error that was encountered during the activity's execution.
      Parameters:
      processDto - The CheckoutProcessDto that is being acted upon in this workflow
      workflowActivityException - The exception thrown by the CheckoutWorkflowActivity
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The cart including the recorded activity execution state
    • getCheckoutWorkflowErrors

      protected Map<String,String> getCheckoutWorkflowErrors(@NonNull @NonNull Map<String,Object> cartInternalAttributes)
    • buildWorkflowErrorMessage

      protected String buildWorkflowErrorMessage(@NonNull @NonNull Exception e)
    • recordRollbackError

      protected CheckoutProcessDto recordRollbackError(@NonNull @NonNull CheckoutProcessDto processDto, @NonNull @NonNull Exception e, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Method responsible for recording the error that was encountered during the activity's rollback.
      Parameters:
      processDto - The CheckoutProcessDto that encountered an error during the execution of this activity
      e - The exception that was encountered
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The CheckoutProcessDto including the recorded activity rollback state
    • getCheckoutWorkflowRollbackErrors

      protected Map<String,String> getCheckoutWorkflowRollbackErrors(@NonNull @NonNull Map<String,Object> cartInternalAttributes)
    • getPaymentTransactionFailureMessages

      protected List<String> getPaymentTransactionFailureMessages(@NonNull @NonNull List<PaymentTransactionFailureDetail> failureDetails)
    • getWorkflowActivities

      protected List<CheckoutWorkflowActivity> getWorkflowActivities()
    • setPaymentFinalizationWorkflowActivities

      @Autowired(required=false) public void setPaymentFinalizationWorkflowActivities(List<PaymentFinalizationActivity> paymentFinalizationWorkflowActivities)
    • getPaymentFinalizationWorkflowActivities

      protected List<PaymentFinalizationActivity> getPaymentFinalizationWorkflowActivities()
    • getCheckoutRollbackEventProducer

      protected CheckoutRollbackEventProducer getCheckoutRollbackEventProducer()
    • getCartProvider

      protected CartProvider getCartProvider()
    • getTypeFactory

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

      protected org.springframework.context.MessageSource getMessageSource()
    • setPaymentProvider

      @Autowired public void setPaymentProvider(PaymentProvider<PaymentSummary> paymentProvider)
    • getPaymentProvider

      protected PaymentProvider<PaymentSummary> getPaymentProvider()
    • setExternalPaymentTransactionProperties

      @Autowired(required=false) public void setExternalPaymentTransactionProperties(@Nullable ExternalPaymentTransactionProperties externalPaymentTransactionProperties)
    • getExternalPaymentTransactionProperties

      @Nullable protected ExternalPaymentTransactionProperties getExternalPaymentTransactionProperties()
    • setPaymentPatternProperties

      @Autowired public void setPaymentPatternProperties(PaymentPatternProperties paymentPatternProperties)
    • getPaymentPatternProperties

      protected PaymentPatternProperties getPaymentPatternProperties()
    • setMessageRetryTemplate

      @Autowired @Qualifier("checkoutWorkflowRollbackMessageRetryTemplate") public void setMessageRetryTemplate(org.springframework.retry.support.RetryTemplate messageRetryTemplate)
    • getMessageRetryTemplate

      protected org.springframework.retry.support.RetryTemplate getMessageRetryTemplate()
    • getObjectMapper

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

      @Autowired public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)