From e0edb109f8c92b9a2e41b76ff3390d5105f60d28 Mon Sep 17 00:00:00 2001 From: "J.R. Hill" Date: Tue, 21 Nov 2023 12:36:32 -0800 Subject: [PATCH] fix: default write to transaction mode --- .../openfga/sdk/api/client/OpenFgaClient.java | 8 +++---- .../sdk/api/client/OpenFgaClientTest.java | 24 ++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java b/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java index 51f8bfc..b403378 100644 --- a/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java +++ b/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java @@ -277,11 +277,11 @@ public CompletableFuture write(ClientWriteRequest request, configuration.assertValid(); String storeId = configuration.getStoreIdChecked(); - if (options != null && !options.disableTransactions()) { - return writeTransactions(storeId, request, options); + if (options != null && options.disableTransactions()) { + return writeNonTransaction(storeId, request, options); } - return writeNonTransaction(storeId, request, options); + return writeTransactions(storeId, request, options); } private CompletableFuture writeNonTransaction( @@ -305,7 +305,7 @@ private CompletableFuture writeNonTransaction( private CompletableFuture writeTransactions( String storeId, ClientWriteRequest request, ClientWriteOptions options) { - int chunkSize = options.getTransactionChunkSize(); + int chunkSize = options == null ? DEFAULT_MAX_METHOD_PARALLEL_REQS : options.getTransactionChunkSize(); var writeTransactions = chunksOf(chunkSize, request.getWrites()).map(ClientWriteRequest::ofWrites); var deleteTransactions = chunksOf(chunkSize, request.getDeletes()).map(ClientWriteRequest::ofDeletes); diff --git a/src/test/java/dev/openfga/sdk/api/client/OpenFgaClientTest.java b/src/test/java/dev/openfga/sdk/api/client/OpenFgaClientTest.java index 0b8827e..d5c1414 100644 --- a/src/test/java/dev/openfga/sdk/api/client/OpenFgaClientTest.java +++ b/src/test/java/dev/openfga/sdk/api/client/OpenFgaClientTest.java @@ -1249,11 +1249,15 @@ public void write_400() throws Exception { mockHttpClient .onPost(postUrl) .doReturn(400, "{\"code\":\"validation_error\",\"message\":\"Generic validation error\"}"); + ClientWriteRequest request = new ClientWriteRequest() + .writes(List.of(new ClientTupleKey() + ._object(DEFAULT_OBJECT) + .relation(DEFAULT_RELATION) + .user(DEFAULT_USER))); // When ExecutionException execException = - assertThrows(ExecutionException.class, () -> fga.write(new ClientWriteRequest()) - .get()); + assertThrows(ExecutionException.class, () -> fga.write(request).get()); // Then mockHttpClient.verify().post(postUrl).called(1); @@ -1271,11 +1275,15 @@ public void write_404() throws Exception { mockHttpClient .onPost(postUrl) .doReturn(404, "{\"code\":\"undefined_endpoint\",\"message\":\"Endpoint not enabled\"}"); + ClientWriteRequest request = new ClientWriteRequest() + .writes(List.of(new ClientTupleKey() + ._object(DEFAULT_OBJECT) + .relation(DEFAULT_RELATION) + .user(DEFAULT_USER))); // When ExecutionException execException = - assertThrows(ExecutionException.class, () -> fga.write(new ClientWriteRequest()) - .get()); + assertThrows(ExecutionException.class, () -> fga.write(request).get()); // Then mockHttpClient.verify().post(postUrl).called(1); @@ -1292,11 +1300,15 @@ public void write_500() throws Exception { mockHttpClient .onPost(postUrl) .doReturn(500, "{\"code\":\"internal_error\",\"message\":\"Internal Server Error\"}"); + ClientWriteRequest request = new ClientWriteRequest() + .writes(List.of(new ClientTupleKey() + ._object(DEFAULT_OBJECT) + .relation(DEFAULT_RELATION) + .user(DEFAULT_USER))); // When ExecutionException execException = - assertThrows(ExecutionException.class, () -> fga.write(new ClientWriteRequest()) - .get()); + assertThrows(ExecutionException.class, () -> fga.write(request).get()); // Then mockHttpClient.verify().post(postUrl).called(1 + DEFAULT_MAX_RETRIES);