diff --git a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/executor/SagaItemExecutor.java b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/executor/SagaItemExecutor.java index d29985e..a5b3e23 100644 --- a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/executor/SagaItemExecutor.java +++ b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/executor/SagaItemExecutor.java @@ -12,7 +12,8 @@ void updateItem(String inventoryId, Long tokenId, String metadataUrl, String traceId, - ItemState itemState) throws Exception; + ItemState itemState, + Long version) throws Exception; void updateItems(List updates, String traceId) throws Exception; diff --git a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItem.java b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItem.java index c6dfbc4..35d3b82 100644 --- a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItem.java +++ b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItem.java @@ -28,6 +28,7 @@ public class SagaItem { @DtoExclude private Instant updatedAt; private String state; + private long version; public static SagaItem fromProto(ItemProto proto) { var user = ProtoUtil.toDto(proto, SagaItem.class); diff --git a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItemUpdate.java b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItemUpdate.java index 71a50f9..19c28b0 100644 --- a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItemUpdate.java +++ b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/model/SagaItemUpdate.java @@ -19,6 +19,7 @@ public class SagaItemUpdate { private String oauthId; private long tokenId; private String metadataUrl; + private long version; @DtoExclude private ItemState itemState; diff --git a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/observer/SagaStatusUpdateObserver.java b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/observer/SagaStatusUpdateObserver.java index 4a0ce54..e1af6ad 100644 --- a/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/observer/SagaStatusUpdateObserver.java +++ b/saga-sdk-java/src/main/java/games/mythical/saga/sdk/client/observer/SagaStatusUpdateObserver.java @@ -229,7 +229,8 @@ private void handleItemUpdate(ItemUpdate update, String traceId) throws Exceptio message.getTokenId(), message.getMetadataUrl(), traceId, - message.getItemState() + message.getItemState(), + message.getVersion() ); } else { final var updates = update.getStatusUpdates().getStatusUpdatesList().stream() diff --git a/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/SagaItemClientTest.java b/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/SagaItemClientTest.java index 5e28a33..b98a105 100644 --- a/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/SagaItemClientTest.java +++ b/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/SagaItemClientTest.java @@ -79,6 +79,7 @@ public void getItem() throws Exception { .setMetadataUrl("metadata-url") .setCreatedAt(Timestamps.fromMillis(Instant.now().toEpochMilli() - 86400)) .setUpdatedAt(Timestamps.fromMillis(Instant.now().toEpochMilli())) + .setVersion(1L) .build(); when(mockServiceBlockingStub.getItem(any())).thenReturn(expectedResponse); var itemResponse = itemClient.getItem(INVENTORY_ID); diff --git a/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/executor/MockItemExecutor.java b/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/executor/MockItemExecutor.java index 712f25d..bc47ae1 100644 --- a/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/executor/MockItemExecutor.java +++ b/saga-sdk-java/src/test/java/games/mythical/saga/sdk/client/executor/MockItemExecutor.java @@ -17,6 +17,7 @@ public class MockItemExecutor extends MockBaseExecutor implements SagaItemExecut private String metadataUri; private String traceId; private ItemState itemState; + private Long version; @Override public void updateItem(String inventoryId, @@ -25,7 +26,8 @@ public void updateItem(String inventoryId, Long tokenId, String metadataUrl, String traceId, - ItemState itemState) throws Exception { + ItemState itemState, + Long version) throws Exception { this.inventoryId = inventoryId; this.itemTypeId = itemTypeId; this.oauthId = oauthId; @@ -33,6 +35,7 @@ public void updateItem(String inventoryId, this.metadataUri = metadataUrl; this.traceId = traceId; this.itemState = itemState; + this.version = version; } @Override @@ -45,7 +48,8 @@ public void updateItems(List updates, String traceId) throws Exc update.getTokenId(), update.getMetadataUrl(), traceId, - update.getItemState() + update.getItemState(), + update.getVersion() ); } diff --git a/saga-sdk-proto/src/main/proto b/saga-sdk-proto/src/main/proto index b02d0e8..aea311b 160000 --- a/saga-sdk-proto/src/main/proto +++ b/saga-sdk-proto/src/main/proto @@ -1 +1 @@ -Subproject commit b02d0e8a062d62ed86f85e2c520723814ff6ed3a +Subproject commit aea311b4a13dd0932fa0b30ad0000efb2b5cfa36