Class DefaultCartNotificationService

java.lang.Object
com.broadleafcommerce.cart.service.messaging.DefaultCartNotificationService
All Implemented Interfaces:
CartNotificationService

public class DefaultCartNotificationService extends Object implements CartNotificationService
Default implementation for CartNotificationService.
Author:
Dima Myroniuk (dmyroniuk)
  • Field Details

  • Constructor Details

    • DefaultCartNotificationService

      public DefaultCartNotificationService(CartRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, CartNotificationRepository cartNotificationRepository, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
  • Method Details

    • sendRollbackEvent

      public void sendRollbackEvent(@NonNull @NonNull CheckoutRollbackEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends rollback event to process the error during checkout. It uses durable sending to guarantee delivery.
      Specified by:
      sendRollbackEvent in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • sendCheckoutCompletionEvent

      public void sendCheckoutCompletionEvent(@NonNull @NonNull CheckoutCompletionEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends checkout completion event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCheckoutCompletionEvent in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
      See Also:
      • CheckoutCompletionProducer
    • sendExternalPaymentTransactionCartFinalizationEvent

      public void sendExternalPaymentTransactionCartFinalizationEvent(@NonNull @NonNull ExternalPaymentTransactionCartFinalizationEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Specified by:
      sendExternalPaymentTransactionCartFinalizationEvent in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
    • sendCartRejectionEvent

      public void sendCartRejectionEvent(@NonNull @NonNull CartRejectionEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends cart rejection event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCartRejectionEvent in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • sendCartRejectionEvent

      public void sendCartRejectionEvent(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.cart.client.domain.CartActionAudit audit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends cart rejection event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCartRejectionEvent in interface CartNotificationService
      Parameters:
      cart - The updated Cart
      audit - The CartActionAudit for the update
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • sendCartApprovalRequestEvent

      public void sendCartApprovalRequestEvent(@NonNull @NonNull CartApprovalRequestEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends cart approval request event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCartApprovalRequestEvent in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • sendCartApprovalRequestEvent

      public void sendCartApprovalRequestEvent(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.cart.client.domain.CartActionAudit audit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends cart approval requested event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCartApprovalRequestEvent in interface CartNotificationService
      Parameters:
      cart - The updated Cart
      audit - The CartActionAudit for the update
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • convertCartRejectionEventToJson

      protected String convertCartRejectionEventToJson(@NonNull @NonNull CartRejectionEvent event)
    • sendCartPendingPaymentFailedEventUri

      public void sendCartPendingPaymentFailedEventUri(@NonNull @NonNull CartPendingPaymentFailedEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends cart pending payment failed event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCartPendingPaymentFailedEventUri in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • sendCartAwaitingPaymentResultsEvent

      public void sendCartAwaitingPaymentResultsEvent(@NonNull @NonNull CartAwaitingPaymentResultsEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends cart awaiting payment results event. It uses durable sending to guarantee delivery.
      Specified by:
      sendCartAwaitingPaymentResultsEvent in interface CartNotificationService
      Parameters:
      event - the message payload
      contextInfo - context information around sandbox and multitenant state
      See Also:
    • sendQuoteStatusUpdatedEvent

      public void sendQuoteStatusUpdatedEvent(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart quote, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartActionAudit audit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartNotificationService
      Sends quote status updated event.
      Specified by:
      sendQuoteStatusUpdatedEvent in interface CartNotificationService
      Parameters:
      quote - the quote to send the notification for
      audit - The related CartActionAudit
      contextInfo - Additional sandbox and multitenant info
    • sendQuoteStatusChangedEvent

      protected void sendQuoteStatusChangedEvent(@NonNull @NonNull QuoteStatusChangedEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Sends the given QuoteStatusChangedEvent.
      Parameters:
      event - the QuoteStatusChangedEvent to send out
      contextInfo - context information around sandbox and multitenant state
    • determineQuoteStatusChangeEventProducerType

      protected String determineQuoteStatusChangeEventProducerType(@NonNull @NonNull QuoteStatusChangedEvent event)
      Determines the message producer type based on the cart status and action type in QuoteStatusChangedEvent.
      Parameters:
      event - the QuoteStatusChangedEvent containing the cart status and action type
      Returns:
      the message producer type based on the cart status and action type
    • determineCustomQuoteStatusChangeEventProducerType

      protected String determineCustomQuoteStatusChangeEventProducerType(@NonNull @NonNull QuoteStatusChangedEvent event)
      A hook point to determine the message producer type based on the given QuoteStatusChangedEvent.
      Parameters:
      event - the QuoteStatusChangedEvent containing the cart status and action type
      Throws:
      UnsupportedOperationException - by default
    • validateCheckoutRollbackEvent

      protected void validateCheckoutRollbackEvent(@NonNull @NonNull CheckoutRollbackEvent event)
    • validateCartIsAwaitingPaymentResultWithRequestId

      protected void validateCartIsAwaitingPaymentResultWithRequestId(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable cart, @NonNull @NonNull String requestId)
      Validates if the cart has a request id related to a checkout attempt that resulted in the awaiting payment result cart status.
      Parameters:
      cart - the cart used to validate if the event can be resent
      requestId - the checkout request id
    • validateCartHasWorkflowErrorForRequestId

      protected void validateCartHasWorkflowErrorForRequestId(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable cart, @NonNull @NonNull String requestId)
      Validates if the checkout rollback event can be resent for the given cart.
      Parameters:
      cart - the cart used to validate if the event can be resent
      requestId - the checkout request id
    • validateCheckoutCompletionEvent

      protected void validateCheckoutCompletionEvent(@NonNull @NonNull CheckoutCompletionEvent event)
    • validateCartFields

      protected void validateCartFields(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Hook point to validate the given cart's fields.

      Validates that the cart's order number exist by default.

      Parameters:
      cart - the cart to validate against
      contextInfo - context information related to multitenancy
    • validateExternalPaymentTransactionCartFinalizationEvent

      protected void validateExternalPaymentTransactionCartFinalizationEvent(@NonNull @NonNull ExternalPaymentTransactionCartFinalizationEvent event, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • validateCartRejectionEvent

      protected void validateCartRejectionEvent(@NonNull @NonNull CartRejectionEvent event)
    • validateCartApprovalRequestEvent

      protected void validateCartApprovalRequestEvent(@NonNull @NonNull CartApprovalRequestEvent event)
    • validateCartPendingPaymentFailedEvent

      protected void validateCartPendingPaymentFailedEvent(@NonNull @NonNull CartPendingPaymentFailedEvent event)
    • validateCartAwaitingPaymentResultsEvent

      protected void validateCartAwaitingPaymentResultsEvent(@NonNull @NonNull CartAwaitingPaymentResultsEvent event)
    • validateQuoteStatusChangedEvent

      protected void validateQuoteStatusChangedEvent(@NonNull @NonNull QuoteStatusChangedEvent event)
    • sendEvent

      protected void sendEvent(com.broadleafcommerce.data.tracking.core.Trackable cart, String messageJson, String messageName, String messageType)
    • validateCartIsSubmitted

      protected void validateCartIsSubmitted(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable cart)
    • validateCartIsRejected

      protected void validateCartIsRejected(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable cart)
    • validateCartRequiresApproval

      protected void validateCartRequiresApproval(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable cart)
    • validateCartHasPendingPaymentFailedStatus

      protected void validateCartHasPendingPaymentFailedStatus(@NonNull @NonNull JpaCart cart)
    • validateCartAwaitingPaymentResults

      protected void validateCartAwaitingPaymentResults(@NonNull @NonNull JpaCart cart)
    • validateQuoteStatusMatchesEventAudit

      protected void validateQuoteStatusMatchesEventAudit(@NonNull @NonNull com.broadleafcommerce.data.tracking.core.Trackable quote, @NonNull @NonNull QuoteStatusChangedEvent event)
    • getRepository

      protected CartRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
    • getNotificationStateService

      protected com.broadleafcommerce.common.messaging.notification.NotificationStateService getNotificationStateService()
    • getNotificationManager

      protected com.broadleafcommerce.common.messaging.notification.NotificationManager getNotificationManager()
    • getCartNotificationRepository

      protected CartNotificationRepository getCartNotificationRepository()
    • getObjectMapper

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

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

      @Autowired public void setTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory)
    • getQuoteProperties

      protected com.broadleafcommerce.cart.client.properties.QuoteProperties getQuoteProperties()
    • setQuoteProperties

      @Autowired public void setQuoteProperties(com.broadleafcommerce.cart.client.properties.QuoteProperties quoteProperties)
    • getDurableMessageSender

      protected com.broadleafcommerce.common.messaging.notification.DetachedDurableMessageSender getDurableMessageSender()
    • setDurableMessageSender

      @Autowired public void setDurableMessageSender(com.broadleafcommerce.common.messaging.notification.DetachedDurableMessageSender durableMessageSender)
    • getHelper

      protected com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper getHelper()
    • setHelper

      @Autowired public void setHelper(com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper helper)