From b0f288f47956abd9139e10d2d21602f11103475b Mon Sep 17 00:00:00 2001 From: Manuel Jenny Date: Tue, 20 Apr 2021 17:19:19 +0200 Subject: [PATCH] fix(S3): use listObjectsV2() --- .../org/cryptomator/data/cloud/s3/S3Impl.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/data/src/main/java/org/cryptomator/data/cloud/s3/S3Impl.java b/data/src/main/java/org/cryptomator/data/cloud/s3/S3Impl.java index 85490dd2..e31afaa7 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/s3/S3Impl.java +++ b/data/src/main/java/org/cryptomator/data/cloud/s3/S3Impl.java @@ -9,7 +9,6 @@ import com.amazonaws.services.s3.model.DeleteObjectsRequest; import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion; import com.amazonaws.services.s3.model.GetObjectRequest; import com.amazonaws.services.s3.model.ListObjectsV2Result; -import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.Owner; import com.amazonaws.services.s3.model.PutObjectRequest; @@ -108,7 +107,7 @@ class S3Impl { public boolean exists(S3Node node) { String path = node.getPath(); - ObjectListing result = client().listObjects(cloud.s3Bucket(), path); + ListObjectsV2Result result = client().listObjectsV2(cloud.s3Bucket(), path); if (result.getObjectSummaries().size() > 0) { return true; @@ -120,8 +119,8 @@ class S3Impl { public List list(S3Folder folder) throws IOException, BackendException { List result = new ArrayList<>(); - ListObjectsV2Result objectListing = client().listObjectsV2(cloud.s3Bucket(), folder.getPath()); - for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) { + ListObjectsV2Result listObjects = client().listObjectsV2(cloud.s3Bucket(), folder.getPath()); + for (S3ObjectSummary objectSummary : listObjects.getObjectSummaries()) { result.add(S3CloudNodeFactory.from(folder, objectSummary)); } return result; @@ -152,13 +151,13 @@ class S3Impl { } if (source instanceof S3Folder) { - ObjectListing listing = client().listObjects(cloud.s3Bucket(), source.getPath()); + ListObjectsV2Result listObjects = client().listObjectsV2(cloud.s3Bucket(), source.getPath()); - if (listing.getObjectSummaries().size() > 0) { + if (listObjects.getObjectSummaries().size() > 0) { List objectsToDelete = new ArrayList<>(); - for (S3ObjectSummary summary : listing.getObjectSummaries()) { + for (S3ObjectSummary summary : listObjects.getObjectSummaries()) { objectsToDelete.add(new DeleteObjectsRequest.KeyVersion(summary.getKey())); String destinationKey = summary.getKey().replace(source.getPath(), target.getPath()); @@ -214,14 +213,14 @@ class S3Impl { Optional cacheKey = Optional.empty(); Optional cacheFile = Optional.empty(); - ObjectListing objectListing; + ListObjectsV2Result listObjects; if (sharedPreferencesHandler.useLruCache() && createLruCache(sharedPreferencesHandler.lruCacheSize())) { - objectListing = client().listObjects(cloud.s3Bucket(), file.getPath()); - if (objectListing.getObjectSummaries().size() != 1) { + listObjects = client().listObjectsV2(cloud.s3Bucket(), file.getPath()); + if (listObjects.getObjectSummaries().size() != 1) { throw new NoSuchCloudFileException(file.getPath()); } - S3ObjectSummary summary = objectListing.getObjectSummaries().get(0); + S3ObjectSummary summary = listObjects.getObjectSummaries().get(0); cacheKey = Optional.of(summary.getKey() + summary.getETag()); File cachedFile = diskLruCache.get(cacheKey.get()); @@ -273,9 +272,9 @@ class S3Impl { public void delete(S3Node node) throws IOException, BackendException { if (node instanceof S3Folder) { - ObjectListing listing = client().listObjects(cloud.s3Bucket(), node.getPath()); + ListObjectsV2Result listObjects = client().listObjectsV2(cloud.s3Bucket(), node.getPath()); List keys = new ArrayList<>(); - for (S3ObjectSummary summary : listing.getObjectSummaries()) { + for (S3ObjectSummary summary : listObjects.getObjectSummaries()) { keys.add(new KeyVersion(summary.getKey())); }