Class AbstractFulfillmentStatusChangeInventoryAdjustmentListener
java.lang.Object
com.broadleafcommerce.inventory.service.messaging.AbstractInventoryAdjustmentListener
com.broadleafcommerce.inventory.service.messaging.fulfillments.AbstractFulfillmentStatusChangeInventoryAdjustmentListener
- Direct Known Subclasses:
FulfillmentCancelledInventoryAdjustmentListener
,FulfillmentFulfilledInventoryAdjustmentListener
public abstract class AbstractFulfillmentStatusChangeInventoryAdjustmentListener
extends AbstractInventoryAdjustmentListener
Listens for fulfillment status changes to create
InventoryTransactions
and update SkuInventory
.-
Nested Class Summary
Nested classes/interfaces inherited from class com.broadleafcommerce.inventory.service.messaging.AbstractInventoryAdjustmentListener
AbstractInventoryAdjustmentListener.OrderFulfillment, AbstractInventoryAdjustmentListener.OrderFulfillmentItem, AbstractInventoryAdjustmentListener.OrderItem
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final String
protected static final String
protected static final String
static final String
protected static final String
Fields inherited from class com.broadleafcommerce.inventory.service.messaging.AbstractInventoryAdjustmentListener
APPLICATION_ID_PATH, INVENTORY_SERIALIZATION_VALUE, TENANT_ID_PATH
-
Constructor Summary
ConstructorDescriptionAbstractFulfillmentStatusChangeInventoryAdjustmentListener
(com.broadleafcommerce.common.messaging.service.IdempotentMessageConsumptionService idempotentConsumptionService, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SkuInventoryService<SkuInventory> skuInventoryService) -
Method Summary
Modifier and TypeMethodDescriptionprotected List<SkuInventoryAdjustmentRequestItem>
buildRequestedItems
(List<AbstractInventoryAdjustmentListener.OrderFulfillmentItem> fulfillmentItems, List<AbstractInventoryAdjustmentListener.OrderItem> orderItems) BuildsSkuInventoryAdjustmentRequestItems
for each of thefulfillmentItems
.protected String
Builds a sku with an appended serialization value parameterprotected SkuInventoryAdjustmentRequestItem
buildSkuInventoryAdjustmentItem
(AbstractInventoryAdjustmentListener.OrderFulfillmentItem fulfillmentItem, AbstractInventoryAdjustmentListener.OrderItem orderItem) Builds aSkuInventoryAdjustmentRequestItem
with data from provided objects.protected SkuInventoryAdjustmentRequest
buildSkuInventoryAdjustmentRequest
(@NonNull com.jayway.jsonpath.DocumentContext jsonContext, @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Builds theSkuInventoryAdjustmentRequest
based on the fulfillment info in the status change message.protected String
Hook point to get the serialization value of an order itemgetOrderItemsIncludingDependents
(@NonNull com.jayway.jsonpath.DocumentContext jsonContext) Gets a list ofOrderItems
along with their dependent items.protected abstract String
Supplies the valid fulfillment status which can be handled.protected boolean
Determines whether the order item has a serialized sku inventory objectprotected abstract void
performInventoryAdjustment
(SkuInventoryAdjustmentRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Execute the required inventory adjustment for the status change.void
Extracts the message, createsInventoryTransactions
and updatesSkuInventory
.Methods inherited from class com.broadleafcommerce.inventory.service.messaging.AbstractInventoryAdjustmentListener
buildContextInfo, buildContextInfo, getDocumentContext, getIdempotentConsumptionService, getSkuInventoryService, getSkuReferenceFieldType, getTypeFactory
-
Field Details
-
FULFILLMENT_ID_PATH
- See Also:
-
FULFILLMENT_STATUS_PATH
- See Also:
-
FULFILLMENT_ITEMS_PATH
- See Also:
-
ORDER_ITEMS_PATH
- See Also:
-
NEVER_RESERVATION_STRATEGY
- See Also:
-
-
Constructor Details
-
AbstractFulfillmentStatusChangeInventoryAdjustmentListener
public AbstractFulfillmentStatusChangeInventoryAdjustmentListener(com.broadleafcommerce.common.messaging.service.IdempotentMessageConsumptionService idempotentConsumptionService, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SkuInventoryService<SkuInventory> skuInventoryService)
-
-
Method Details
-
process
Extracts the message, createsInventoryTransactions
and updatesSkuInventory
.- Parameters:
message
- The fulfillment cancelled event message
-
getValidFulfillmentStatus
Supplies the valid fulfillment status which can be handled.- Returns:
- the valid fulfillment status which can be handled
-
buildSkuInventoryAdjustmentRequest
protected SkuInventoryAdjustmentRequest buildSkuInventoryAdjustmentRequest(@NonNull @NonNull com.jayway.jsonpath.DocumentContext jsonContext, @NonNull @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Builds theSkuInventoryAdjustmentRequest
based on the fulfillment info in the status change message.- Parameters:
jsonContext
- aDocumentContext
representation of the fulfillment message payloadcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The
SkuInventoryAdjustmentRequest
based on the fulfillment info in the status change message.
-
getOrderItemsIncludingDependents
public List<AbstractInventoryAdjustmentListener.OrderItem> getOrderItemsIncludingDependents(@NonNull @NonNull com.jayway.jsonpath.DocumentContext jsonContext) Gets a list ofOrderItems
along with their dependent items. -
buildRequestedItems
protected List<SkuInventoryAdjustmentRequestItem> buildRequestedItems(List<AbstractInventoryAdjustmentListener.OrderFulfillmentItem> fulfillmentItems, List<AbstractInventoryAdjustmentListener.OrderItem> orderItems) BuildsSkuInventoryAdjustmentRequestItems
for each of thefulfillmentItems
.- Parameters:
fulfillmentItems
- the fulfillment items to build adjustment request items fororderItems
- the order items from the fulfillment's order which contain item SKU data- Returns:
- inventory adjustment request items for the
fulfillmentItems
-
buildSkuInventoryAdjustmentItem
protected SkuInventoryAdjustmentRequestItem buildSkuInventoryAdjustmentItem(AbstractInventoryAdjustmentListener.OrderFulfillmentItem fulfillmentItem, AbstractInventoryAdjustmentListener.OrderItem orderItem) Builds aSkuInventoryAdjustmentRequestItem
with data from provided objects.- Parameters:
fulfillmentItem
- the fulfillment itemorderItem
- the order item- Returns:
- the built sku inventory adjustment item
-
isSerialized
Determines whether the order item has a serialized sku inventory object- Parameters:
orderItem
- the order item- Returns:
- whether the order item has a serialized sku inventory object
-
buildSerializedSku
Builds a sku with an appended serialization value parameter- Parameters:
orderItem
- order item to access values from- Returns:
- sku with an appended serialization value parameter
-
getInventorySerializationValue
@Nullable protected String getInventorySerializationValue(AbstractInventoryAdjustmentListener.OrderItem orderItem) Hook point to get the serialization value of an order itemBy default, accesses a respective entry inside
AbstractInventoryAdjustmentListener.OrderItem.getInternalAttributes()
.- Parameters:
orderItem
- the order item- Returns:
- the serialization value
-
performInventoryAdjustment
protected abstract void performInventoryAdjustment(SkuInventoryAdjustmentRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) throws InventoryUnavailableException, InventoryNotReservedException Execute the required inventory adjustment for the status change.- Parameters:
request
- the request to adjust inventorycontextInfo
- context information surrounding sandboxing and multitenant state- Throws:
InventoryUnavailableException
- if inventory could not be decrementedInventoryNotReservedException
- if inventory was not already reserved
-