From 51ff3a342c4b149e356fd9aa4477eae2839d06ba Mon Sep 17 00:00:00 2001 From: Maxim-Gadalov Date: Tue, 18 Jun 2024 14:19:54 +0200 Subject: [PATCH] fix: patch jclouds 2.5.0 with important fix for google-cloud-storage; forbid double quotes in resource name --- build.gradle | 9 +++++++-- ...allblobstore-2.5.0-SNAPSHOT-jar-with-dependencies.jar | 3 +++ .../epam/aidial/core/storage/ResourceDescription.java | 2 +- .../aidial/core/storage/ResourceDescriptionTest.java | 2 ++ 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 libs/jclouds-allblobstore-2.5.0-SNAPSHOT-jar-with-dependencies.jar diff --git a/build.gradle b/build.gradle index c17f2d71b..97f02e02f 100644 --- a/build.gradle +++ b/build.gradle @@ -45,8 +45,13 @@ dependencies { implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2' implementation 'com.auth0:java-jwt:4.4.0' implementation 'com.auth0:jwks-rsa:0.22.1' - implementation 'org.apache.jclouds:jclouds-allblobstore:2.5.0' - implementation 'org.apache.jclouds.api:filesystem:2.5.0' + // fat jar of https://github.com/Maxim-Gadalov/jclouds/tree/2.5.0-gcp-fix + // this version includes important google-cloud-storage fix that is not released yet + implementation files("libs/jclouds-allblobstore-2.5.0-SNAPSHOT-jar-with-dependencies.jar") + implementation ('org.apache.jclouds.api:filesystem:2.5.0') { + exclude group: 'org.apache.jclouds', module: 'jclouds-blobstore' + exclude group: 'org.apache.jclouds', module: 'jclouds-core' + } implementation 'org.redisson:redisson:3.27.0' implementation group: 'com.amazonaws', name: 'aws-java-sdk-core', version: '1.12.663' implementation group: 'com.amazonaws', name: 'aws-java-sdk-sts', version: '1.12.663' diff --git a/libs/jclouds-allblobstore-2.5.0-SNAPSHOT-jar-with-dependencies.jar b/libs/jclouds-allblobstore-2.5.0-SNAPSHOT-jar-with-dependencies.jar new file mode 100644 index 000000000..718249f97 --- /dev/null +++ b/libs/jclouds-allblobstore-2.5.0-SNAPSHOT-jar-with-dependencies.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a8d12531808583308d37ecb6e75d1c625cda6e1c7a147d2fb21de47d3dfb4ef +size 8042222 diff --git a/src/main/java/com/epam/aidial/core/storage/ResourceDescription.java b/src/main/java/com/epam/aidial/core/storage/ResourceDescription.java index 0c3d0a8b3..c274a32e9 100644 --- a/src/main/java/com/epam/aidial/core/storage/ResourceDescription.java +++ b/src/main/java/com/epam/aidial/core/storage/ResourceDescription.java @@ -19,7 +19,7 @@ @AllArgsConstructor(access = AccessLevel.PRIVATE) public class ResourceDescription { - private static final Set INVALID_FILE_NAME_CHARS = Set.of('/', '{', '}'); + private static final Set INVALID_FILE_NAME_CHARS = Set.of('/', '{', '}', '"'); private static final int MAX_PATH_SIZE = 900; ResourceType type; diff --git a/src/test/java/com/epam/aidial/core/storage/ResourceDescriptionTest.java b/src/test/java/com/epam/aidial/core/storage/ResourceDescriptionTest.java index 08a232188..64239c3b2 100644 --- a/src/test/java/com/epam/aidial/core/storage/ResourceDescriptionTest.java +++ b/src/test/java/com/epam/aidial/core/storage/ResourceDescriptionTest.java @@ -161,6 +161,8 @@ public void testResourceWithInvalidFilename() { () -> ResourceDescription.fromEncoded(ResourceType.FILE, "bucket", "location/", "%1Ffolder1/file")); assertThrows(IllegalArgumentException.class, () -> ResourceDescription.fromEncoded(ResourceType.FILE, "bucket", "location/", "fol%0Fder1")); + assertThrows(IllegalArgumentException.class, + () -> ResourceDescription.fromEncoded(ResourceType.FILE, "bucket", "location/", "folder1%22")); } @Test