Class AbstractFulfillmentStatusChangeHandler
- java.lang.Object
 - 
- com.broadleafcommerce.orderoperation.service.handler.AbstractFulfillmentStatusChangeHandler
 
 
- 
- All Implemented Interfaces:
 FulfillmentStatusChangeHandler
- Direct Known Subclasses:
 CancelStatusChangeHandler,CapturingPaymentStatusChangeHandler,FulfilledStatusChangeHandler,FulfillFailedStatusChangeHandler,FulfillingStatusChangeHandler,PaymentCapturedStatusChangeHandler,PaymentCaptureFailedStatusChangeHandler
public abstract class AbstractFulfillmentStatusChangeHandler extends Object implements FulfillmentStatusChangeHandler
 
- 
- 
Constructor Summary
Constructors Constructor Description AbstractFulfillmentStatusChangeHandler(FulfillmentSplittingService<com.broadleafcommerce.order.client.domain.OrderFulfillment> splittingService, FulfillmentProvider<com.broadleafcommerce.order.client.domain.OrderFulfillment> fulfillmentProvider, OrderProvider<com.broadleafcommerce.order.client.domain.Order> orderProvider, com.broadleafcommerce.common.extension.TypeFactory typeFactory) 
- 
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddAdditionalOrderFulfillmentFields(com.broadleafcommerce.order.client.domain.OrderFulfillment newOrderFulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Perform any additional handling before replacing the single fulfillment order.protected voidaddAdditionalOrderFulfillmentFields(com.broadleafcommerce.order.client.domain.OrderFulfillment newOrderFulfillment, com.broadleafcommerce.order.client.domain.OrderFulfillment leftoverOrderFulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Perform any additional handling before replacing the fulfillment order.booleancanHandle(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment)Determine if this handler can process the givenFulfillmentStatusChangeRequest.protected FulfillmentProvider<com.broadleafcommerce.order.client.domain.OrderFulfillment>getFulfillmentProvider()protected com.broadleafcommerce.order.client.domain.OrderFulfillmentgetFulfillmentWithChangedStatus(FulfillmentStatusChangeRequest request, List<com.broadleafcommerce.order.client.domain.OrderFulfillment> fulfillments)Retrieve the fulfillment which changed status.protected OrderProvider<com.broadleafcommerce.order.client.domain.Order>getOrderProvider()protected FulfillmentSplittingService<com.broadleafcommerce.order.client.domain.OrderFulfillment>getSplittingService()protected com.broadleafcommerce.common.extension.TypeFactorygetTypeFactory()protected abstract Set<String>getValidOriginatingStatuses()protected abstract StringgetValidTargetStatus()protected com.broadleafcommerce.order.client.domain.OrderFulfillmentpostProcessStatusChange(FulfillmentStatusChangeRequest request, String originalStatus, List<com.broadleafcommerce.order.client.domain.OrderFulfillment> fulfillments, com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Perform any additional handling after the fulfillment has changed status.com.broadleafcommerce.order.client.domain.OrderFulfillmentprocess(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Perform the status change requested by theFulfillmentStatusChangeRequest.protected com.broadleafcommerce.order.client.domain.OrderFulfillmentprocessSingleFulfillment(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Process the status change for an entire single fulfillment without splitting.protected List<com.broadleafcommerce.order.client.domain.OrderFulfillment>processSplitFulfillments(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment leftoverFulfillment, com.broadleafcommerce.order.client.domain.OrderFulfillment newFulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Process the status change for fulfillments which were split.protected booleanrequestingCompleteFulfillment(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment)Check if therequestis requesting all of the items in the fulfillment.protected voidsendFulfillmentStatusChangeEvent(org.springframework.messaging.MessageChannel channel, FulfillmentStatusChangeRequest request, String originalStatus, com.broadleafcommerce.order.client.domain.OrderFulfillment changed, com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Builds aFulfillmentStatusChangeEventfor the status change which occurred. 
 - 
 
- 
- 
Constructor Detail
- 
AbstractFulfillmentStatusChangeHandler
public AbstractFulfillmentStatusChangeHandler(FulfillmentSplittingService<com.broadleafcommerce.order.client.domain.OrderFulfillment> splittingService, FulfillmentProvider<com.broadleafcommerce.order.client.domain.OrderFulfillment> fulfillmentProvider, OrderProvider<com.broadleafcommerce.order.client.domain.Order> orderProvider, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
 
 - 
 
- 
Method Detail
- 
canHandle
public boolean canHandle(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment)
Description copied from interface:FulfillmentStatusChangeHandlerDetermine if this handler can process the givenFulfillmentStatusChangeRequest.- Specified by:
 canHandlein interfaceFulfillmentStatusChangeHandler- Parameters:
 request- the status change requestfulfillment- the fulfillment to have its status changed- Returns:
 - whether this handler can process the status change request
 
 
- 
getValidTargetStatus
protected abstract String getValidTargetStatus()
 
- 
process
public com.broadleafcommerce.order.client.domain.OrderFulfillment process(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:FulfillmentStatusChangeHandlerPerform the status change requested by theFulfillmentStatusChangeRequest.- Specified by:
 processin interfaceFulfillmentStatusChangeHandler- Parameters:
 request- the status change requestfulfillment- the fulfillment to have its status changedcontextInfo- context information around sandbox and multitenant state- Returns:
 - the fulfillment, or part of it, which has changed status
 
 
- 
requestingCompleteFulfillment
protected boolean requestingCompleteFulfillment(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment)
Check if therequestis requesting all of the items in the fulfillment.- Parameters:
 request- the status change requestfulfillment- the fulfillment to have its status changed- Returns:
 - whether all of the items in the fulfillment are being requested
 
 
- 
processSingleFulfillment
protected com.broadleafcommerce.order.client.domain.OrderFulfillment processSingleFulfillment(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Process the status change for an entire single fulfillment without splitting.- Parameters:
 request- the status change requestfulfillment- the fulfillment to have its status changedcontextInfo- context information around sandbox and multitenant state.- Returns:
 - the fulfillment with its state changed
 
 
- 
processSplitFulfillments
protected List<com.broadleafcommerce.order.client.domain.OrderFulfillment> processSplitFulfillments(FulfillmentStatusChangeRequest request, com.broadleafcommerce.order.client.domain.OrderFulfillment leftoverFulfillment, com.broadleafcommerce.order.client.domain.OrderFulfillment newFulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Process the status change for fulfillments which were split.- Parameters:
 request- the status change requestleftoverFulfillment- the remaining fulfillment containing items not requestednewFulfillment- a new fulfillment with changed statuscontextInfo- context information around sandbox and multitenant state- Returns:
 - all of the fulfillments updated or created
 
 
- 
postProcessStatusChange
protected com.broadleafcommerce.order.client.domain.OrderFulfillment postProcessStatusChange(FulfillmentStatusChangeRequest request, String originalStatus, List<com.broadleafcommerce.order.client.domain.OrderFulfillment> fulfillments, com.broadleafcommerce.order.client.domain.Order order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Perform any additional handling after the fulfillment has changed status.- Parameters:
 request- the status change requestoriginalStatus- the original status of the fulfillment before status changefulfillments- the fulfillments involved in the status changeorder- the order which contains the fulfillmentscontextInfo- context information around sandbox and multitenant state- Returns:
 - the fulfillment which changed status
 
 
- 
getFulfillmentWithChangedStatus
protected com.broadleafcommerce.order.client.domain.OrderFulfillment getFulfillmentWithChangedStatus(FulfillmentStatusChangeRequest request, List<com.broadleafcommerce.order.client.domain.OrderFulfillment> fulfillments)
Retrieve the fulfillment which changed status.- Parameters:
 request- the status change requestfulfillments- the fulfillments involved in the status change- Returns:
 - the fulfillment which changed status
 
 
- 
addAdditionalOrderFulfillmentFields
protected void addAdditionalOrderFulfillmentFields(com.broadleafcommerce.order.client.domain.OrderFulfillment newOrderFulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Perform any additional handling before replacing the single fulfillment order.- Parameters:
 newOrderFulfillment- the new fulfillment to replace withcontextInfo- context information around sandbox and multitenant state
 
- 
addAdditionalOrderFulfillmentFields
protected void addAdditionalOrderFulfillmentFields(com.broadleafcommerce.order.client.domain.OrderFulfillment newOrderFulfillment, @Nullable com.broadleafcommerce.order.client.domain.OrderFulfillment leftoverOrderFulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Perform any additional handling before replacing the fulfillment order.- Parameters:
 newOrderFulfillment- the new fulfillment to replace withleftoverOrderFulfillment- the leftover fulfillment if split to replace withcontextInfo- context information around sandbox and multitenant state
 
- 
sendFulfillmentStatusChangeEvent
protected void sendFulfillmentStatusChangeEvent(org.springframework.messaging.MessageChannel channel, FulfillmentStatusChangeRequest request, String originalStatus, com.broadleafcommerce.order.client.domain.OrderFulfillment changed, com.broadleafcommerce.order.client.domain.Order order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Builds aFulfillmentStatusChangeEventfor the status change which occurred. Used in manyFulfillmentStatusChangeHandlersto create messages to notify of the status change.- Parameters:
 request- the request to change statusoriginalStatus- the original status of the fulfillment before the status changechanged- the fulfillment which had status changedorder- the order to which the changed fulfillment belongscontextInfo- context information around sandbox and multitenant state
 
- 
getSplittingService
protected FulfillmentSplittingService<com.broadleafcommerce.order.client.domain.OrderFulfillment> getSplittingService()
 
- 
getFulfillmentProvider
protected FulfillmentProvider<com.broadleafcommerce.order.client.domain.OrderFulfillment> getFulfillmentProvider()
 
- 
getOrderProvider
protected OrderProvider<com.broadleafcommerce.order.client.domain.Order> getOrderProvider()
 
- 
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
 
 - 
 
 -