From ed44e213002af9b3f11815f1b93ac31fe4fb9b40 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 11 Feb 2025 11:31:42 +0100 Subject: [PATCH] fix(box-connector): Avoid refetching data of deleted items (#3981) * fix(box-connector): Avoid refetching data of deleted items * fix(box-connector): Add constraints to search request properties (cherry picked from commit 9fc2d9934cd793fb9db62b0bcbc3e08ba4d160b5) --- .../box/element-templates/box-outbound-connector.json | 6 ++++++ .../hybrid/box-outbound-connector-hybrid.json | 6 ++++++ .../main/java/io/camunda/connector/box/BoxOperations.java | 8 ++++---- .../src/main/java/io/camunda/connector/box/BoxUtil.java | 7 +++---- .../java/io/camunda/connector/box/model/BoxRequest.java | 3 ++- .../java/io/camunda/connector/box/model/BoxResult.java | 2 +- 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/connectors/box/element-templates/box-outbound-connector.json b/connectors/box/element-templates/box-outbound-connector.json index 8ff08fa21e..0e53c1c9c4 100644 --- a/connectors/box/element-templates/box-outbound-connector.json +++ b/connectors/box/element-templates/box-outbound-connector.json @@ -468,6 +468,9 @@ "id" : "operation.searchQuery", "label" : "Search query", "optional" : false, + "constraints" : { + "notEmpty" : true + }, "feel" : "optional", "group" : "operation", "binding" : { @@ -486,6 +489,9 @@ "description" : "Column for sorting search results", "optional" : false, "value" : "modified_at", + "constraints" : { + "notEmpty" : true + }, "feel" : "optional", "group" : "operation", "binding" : { diff --git a/connectors/box/element-templates/hybrid/box-outbound-connector-hybrid.json b/connectors/box/element-templates/hybrid/box-outbound-connector-hybrid.json index db12543a9c..04c25da19b 100644 --- a/connectors/box/element-templates/hybrid/box-outbound-connector-hybrid.json +++ b/connectors/box/element-templates/hybrid/box-outbound-connector-hybrid.json @@ -473,6 +473,9 @@ "id" : "operation.searchQuery", "label" : "Search query", "optional" : false, + "constraints" : { + "notEmpty" : true + }, "feel" : "optional", "group" : "operation", "binding" : { @@ -491,6 +494,9 @@ "description" : "Column for sorting search results", "optional" : false, "value" : "modified_at", + "constraints" : { + "notEmpty" : true + }, "feel" : "optional", "group" : "operation", "binding" : { diff --git a/connectors/box/src/main/java/io/camunda/connector/box/BoxOperations.java b/connectors/box/src/main/java/io/camunda/connector/box/BoxOperations.java index 32f30a4884..43c4be5b23 100644 --- a/connectors/box/src/main/java/io/camunda/connector/box/BoxOperations.java +++ b/connectors/box/src/main/java/io/camunda/connector/box/BoxOperations.java @@ -20,8 +20,6 @@ import com.box.sdk.BoxItem; import com.box.sdk.BoxSearch; import com.box.sdk.BoxSearchParameters; -import com.box.sdk.IAccessTokenCache; -import com.box.sdk.InMemoryLRUAccessTokenCache; import io.camunda.connector.api.outbound.OutboundConnectorContext; import io.camunda.connector.box.model.BoxRequest; import io.camunda.connector.box.model.BoxRequest.Operation.Search.SortDirection; @@ -51,15 +49,17 @@ private static BoxAPIConnection connectToApi(BoxRequest.Authentication authentic return switch (authentication) { case BoxRequest.Authentication.DeveloperToken developerToken -> new BoxAPIConnection(developerToken.accessToken()); + case BoxRequest.Authentication.ClientCredentialsUser user -> BoxCCGAPIConnection.userConnection(user.clientId(), user.clientSecret(), user.userId()); + case BoxRequest.Authentication.ClientCredentialsEnterprise enterprise -> BoxCCGAPIConnection.applicationServiceAccountConnection( enterprise.clientId(), enterprise.clientSecret(), enterprise.enterpriseId()); + case BoxRequest.Authentication.JWTJsonConfig jwtJsonConfig -> { BoxConfig boxConfig = BoxConfig.readFrom(jwtJsonConfig.jsonConfig()); - IAccessTokenCache tokenCache = new InMemoryLRUAccessTokenCache(100); - yield BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig, tokenCache); + yield BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); } }; } diff --git a/connectors/box/src/main/java/io/camunda/connector/box/BoxUtil.java b/connectors/box/src/main/java/io/camunda/connector/box/BoxUtil.java index 7c9b606b15..c432a37eef 100644 --- a/connectors/box/src/main/java/io/camunda/connector/box/BoxUtil.java +++ b/connectors/box/src/main/java/io/camunda/connector/box/BoxUtil.java @@ -74,15 +74,14 @@ public static byte[] download(BoxFile file) { } public static BoxResult.Item item(BoxFile file) { - return new BoxResult.Item(file.getID(), file.getInfo().getName(), file.getInfo().getType()); + return new BoxResult.Item(file.getID(), "file"); } public static BoxResult.Item item(BoxFolder folder) { - return new BoxResult.Item( - folder.getID(), folder.getInfo().getName(), folder.getInfo().getType()); + return new BoxResult.Item(folder.getID(), "folder"); } public static BoxResult.Item item(BoxItem.Info info) { - return new BoxResult.Item(info.getID(), info.getName(), info.getType()); + return new BoxResult.Item(info.getID(), info.getType()); } } diff --git a/connectors/box/src/main/java/io/camunda/connector/box/model/BoxRequest.java b/connectors/box/src/main/java/io/camunda/connector/box/model/BoxRequest.java index 24f45e6986..f3fa5ebc7e 100644 --- a/connectors/box/src/main/java/io/camunda/connector/box/model/BoxRequest.java +++ b/connectors/box/src/main/java/io/camunda/connector/box/model/BoxRequest.java @@ -220,12 +220,13 @@ record DeleteFile( @TemplateSubType(id = "search", label = "Search") record Search( - @TemplateProperty(id = "searchQuery", group = "operation") String query, + @TemplateProperty(id = "searchQuery", group = "operation") @NotBlank String query, @TemplateProperty( id = "searchSortColumn", defaultValue = "modified_at", description = "Column for sorting search results", group = "operation") + @NotBlank String sortColumn, @TemplateProperty( id = "searchSortDirection", diff --git a/connectors/box/src/main/java/io/camunda/connector/box/model/BoxResult.java b/connectors/box/src/main/java/io/camunda/connector/box/model/BoxResult.java index a72762ab95..a660ba3619 100644 --- a/connectors/box/src/main/java/io/camunda/connector/box/model/BoxResult.java +++ b/connectors/box/src/main/java/io/camunda/connector/box/model/BoxResult.java @@ -11,7 +11,7 @@ public sealed interface BoxResult permits BoxResult.Download, BoxResult.Generic, BoxResult.Search, BoxResult.Upload { - record Item(String id, String name, String type) {} + record Item(String id, String type) {} record Download(Item item, Document document) implements BoxResult {}