diff --git a/gxcloudstorage-awss3-v1/src/main/java/com/genexus/db/driver/ExternalProviderS3V1.java b/gxcloudstorage-awss3-v1/src/main/java/com/genexus/db/driver/ExternalProviderS3V1.java index 6666a8888..1417edbb4 100644 --- a/gxcloudstorage-awss3-v1/src/main/java/com/genexus/db/driver/ExternalProviderS3V1.java +++ b/gxcloudstorage-awss3-v1/src/main/java/com/genexus/db/driver/ExternalProviderS3V1.java @@ -337,12 +337,20 @@ public String getDirectory(String directoryName) { } public boolean existsDirectory(String directoryName) { - ListObjectsV2Request listObjectsRequest = new ListObjectsV2Request() + if (directoryName == null || directoryName.isEmpty() || directoryName.equals(".") || directoryName.equals("/")) + directoryName = ""; + else + directoryName = StorageUtils.normalizeDirectoryName(directoryName); + + ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request() .withBucketName(bucket) - .withDelimiter(StorageUtils.DELIMITER) - .withPrefix(StorageUtils.normalizeDirectoryName(directoryName)) + .withPrefix(directoryName) .withMaxKeys(1); - return client.listObjectsV2(listObjectsRequest).getKeyCount() > 0; + + if (!directoryName.isEmpty()) + listObjectsV2Request = listObjectsV2Request.withDelimiter(StorageUtils.DELIMITER); + + return client.listObjectsV2(listObjectsV2Request).getKeyCount() > 0; } public void createDirectory(String directoryName) { diff --git a/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java b/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java index 310be4501..a250db53b 100644 --- a/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java +++ b/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java @@ -515,12 +515,27 @@ public String getDirectory(String directoryName) { } public boolean existsDirectory(String directoryName) { - ListObjectsV2Request listObjectsRequest = ListObjectsV2Request.builder() - .bucket(bucket) - .delimiter(StorageUtils.DELIMITER) - .prefix(StorageUtils.normalizeDirectoryName(directoryName)) - .maxKeys(1) - .build(); + if (directoryName == null || directoryName.isEmpty() || directoryName.equals(".") || directoryName.equals("/")) + directoryName = ""; + else + directoryName = StorageUtils.normalizeDirectoryName(directoryName); + + + ListObjectsV2Request listObjectsRequest; + if (!directoryName.isEmpty()) + listObjectsRequest = ListObjectsV2Request.builder() + .bucket(bucket) + .prefix(directoryName) + .maxKeys(1) + .delimiter(StorageUtils.DELIMITER) + .build(); + else + listObjectsRequest = ListObjectsV2Request.builder() + .bucket(bucket) + .prefix(directoryName) + .maxKeys(1) + .build(); + return client.listObjectsV2(listObjectsRequest).keyCount() > 0; }