diff --git a/config/clients/java/CHANGELOG.md.mustache b/config/clients/java/CHANGELOG.md.mustache index df0b5d03..210cf087 100644 --- a/config/clients/java/CHANGELOG.md.mustache +++ b/config/clients/java/CHANGELOG.md.mustache @@ -1,5 +1,12 @@ # Changelog +## v0.2.2 + +### [0.2.2](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.2.1...v0.2.2) (2023-10-31) + +- fix(client): an empty read request will no longer send an empty tuple +- fix(client): an unused "user" field, and related methods, was removed from ClientExpandRequest + ## v0.2.1 ### [0.2.1](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.2.0...v0.2.1) (2023-10-13) diff --git a/config/clients/java/config.overrides.json b/config/clients/java/config.overrides.json index b3c2b2ec..56b97c2f 100644 --- a/config/clients/java/config.overrides.json +++ b/config/clients/java/config.overrides.json @@ -3,7 +3,7 @@ "gitRepoId": "java-sdk", "artifactId": "openfga-sdk", "groupId": "dev.openfga", - "packageVersion": "0.2.1", + "packageVersion": "0.2.2", "apiPackage": "dev.openfga.sdk.api", "authPackage": "dev.openfga.sdk.api.auth", "clientPackage": "dev.openfga.sdk.api.client", diff --git a/config/clients/java/template/client-ClientExpandRequest.java.mustache b/config/clients/java/template/client-ClientExpandRequest.java.mustache index 6c4155f6..16929d02 100644 --- a/config/clients/java/template/client-ClientExpandRequest.java.mustache +++ b/config/clients/java/template/client-ClientExpandRequest.java.mustache @@ -2,7 +2,6 @@ package {{invokerPackage}}; public class ClientExpandRequest { - private String user; private String relation; private String _object; @@ -31,17 +30,4 @@ public class ClientExpandRequest { public String getRelation() { return relation; } - - public ClientExpandRequest user(String user) { - this.user = user; - return this; - } - - /** - * Get user - * @return user - **/ - public String getUser() { - return user; - } } diff --git a/config/clients/java/template/client-OpenFgaClient.java.mustache b/config/clients/java/template/client-OpenFgaClient.java.mustache index a375753f..218d52fd 100644 --- a/config/clients/java/template/client-OpenFgaClient.java.mustache +++ b/config/clients/java/template/client-OpenFgaClient.java.mustache @@ -227,18 +227,17 @@ public class OpenFgaClient { String storeId = configuration.getStoreIdChecked(); ReadRequest body = new ReadRequest(); - TupleKey tupleKey = new TupleKey(); - if (request != null) { + if (request != null && (request.getUser() != null || request.getRelation() != null || request.getObject() != null)) { + TupleKey tupleKey = new TupleKey(); tupleKey.user(request.getUser()).relation(request.getRelation())._object(request.getObject()); + body.tupleKey(tupleKey); } if (options != null) { body.pageSize(options.getPageSize()).continuationToken(options.getContinuationToken()); } - body.tupleKey(tupleKey); - return call(() -> api.read(storeId, body)).thenApply(ClientReadResponse::new); } @@ -398,7 +397,6 @@ public class OpenFgaClient { if (request != null) { body.tupleKey(new TupleKey() - .user(request.getUser()) .relation(request.getRelation()) ._object(request.getObject())); } diff --git a/config/clients/java/template/client-OpenFgaClientTest.java.mustache b/config/clients/java/template/client-OpenFgaClientTest.java.mustache index 6546e0ab..785dd37b 100644 --- a/config/clients/java/template/client-OpenFgaClientTest.java.mustache +++ b/config/clients/java/template/client-OpenFgaClientTest.java.mustache @@ -935,6 +935,21 @@ public class OpenFgaClientTest { assertEquals(DEFAULT_OBJECT, key.getObject()); } + @Test + public void read_emptyRequestSendsNoTupleKey() throws Exception { + // Given + String postUrl = String.format("https://localhost/stores/%s/read", DEFAULT_STORE_ID); + String expectedBody = "{\"tuple_key\":null,\"page_size\":null,\"continuation_token\":null}"; + mockHttpClient.onPost(postUrl).withBody(is(expectedBody)).doReturn(200, EMPTY_RESPONSE_BODY); + ClientReadRequest request = new ClientReadRequest(); + + // When + ClientReadResponse response = fga.read(request).get(); + + // Then + mockHttpClient.verify().post(postUrl).withBody(is(expectedBody)).called(1); + } + @Test public void read_storeIdRequired() { // Given @@ -1294,14 +1309,13 @@ public class OpenFgaClientTest { // Given String postPath = "https://localhost/stores/01YCP46JKYM8FJCQ37NMBYHE5X/expand"; String expectedBody = String.format( - "{\"tuple_key\":{\"object\":\"%s\",\"relation\":\"%s\",\"user\":\"%s\"},\"authorization_model_id\":\"%s\"}", - DEFAULT_OBJECT, DEFAULT_RELATION, DEFAULT_USER, DEFAULT_AUTH_MODEL_ID); + "{\"tuple_key\":{\"object\":\"%s\",\"relation\":\"%s\",\"user\":null},\"authorization_model_id\":\"%s\"}", + DEFAULT_OBJECT, DEFAULT_RELATION, DEFAULT_AUTH_MODEL_ID); String responseBody = String.format( "{\"tree\":{\"root\":{\"union\":{\"nodes\":[{\"leaf\":{\"users\":{\"users\":[\"%s\"]}}}]}}}}", DEFAULT_USER); mockHttpClient.onPost(postPath).withBody(is(expectedBody)).doReturn(200, responseBody); ClientExpandRequest request = new ClientExpandRequest() - .user(DEFAULT_USER) .relation(DEFAULT_RELATION) ._object(DEFAULT_OBJECT); ClientExpandOptions options = new ClientExpandOptions().authorizationModelId(DEFAULT_AUTH_MODEL_ID);