From 659dc6328ceabfd0d5900377e4ff2c62493d4297 Mon Sep 17 00:00:00 2001 From: jgolda Date: Tue, 26 Aug 2025 18:51:16 +0200 Subject: [PATCH] Extracted common overrideable method for creating a CompletableFuture --- api/src/main/java/io/minio/MinioAsyncClient.java | 11 +++++------ api/src/main/java/io/minio/S3Base.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/io/minio/MinioAsyncClient.java b/api/src/main/java/io/minio/MinioAsyncClient.java index f72e52622..9016ec34c 100644 --- a/api/src/main/java/io/minio/MinioAsyncClient.java +++ b/api/src/main/java/io/minio/MinioAsyncClient.java @@ -461,8 +461,7 @@ public CompletableFuture copyObject(CopyObjectArgs args) checkArgs(args); args.validateSse(this.baseUrl); - return CompletableFuture.supplyAsync( - () -> args.source().offset() != null && args.source().length() != null) + return supplyAsync(() -> args.source().offset() != null && args.source().length() != null) .thenCompose( condition -> { if (condition) { @@ -672,7 +671,7 @@ public CompletableFuture composeObject(ComposeObjectArgs ar } CompletableFuture completableFuture = - CompletableFuture.supplyAsync( + supplyAsync( () -> { Multimap headers = newMultimap(args.extraHeaders()); headers.putAll(args.genHeaders()); @@ -712,7 +711,7 @@ public CompletableFuture composeObject(ComposeObjectArgs ar int partNumber = 0; CompletableFuture future = - CompletableFuture.supplyAsync( + supplyAsync( () -> { return new Part[partCount[0]]; }); @@ -3430,7 +3429,7 @@ public CompletableFuture uploadSnowballObjects( NoSuchAlgorithmException, XmlParserException { checkArgs(args); - return CompletableFuture.supplyAsync( + return supplyAsync( () -> { FileOutputStream fos = null; BufferedOutputStream bos = null; @@ -3580,7 +3579,7 @@ public CompletableFuture putObjectFanOut(PutObjectFanOu checkArgs(args); args.validateSse(this.baseUrl); - return CompletableFuture.supplyAsync( + return supplyAsync( () -> { // Build POST object data String objectName = diff --git a/api/src/main/java/io/minio/S3Base.java b/api/src/main/java/io/minio/S3Base.java index 324637ccb..0e61c17b7 100644 --- a/api/src/main/java/io/minio/S3Base.java +++ b/api/src/main/java/io/minio/S3Base.java @@ -88,6 +88,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; import java.util.logging.Logger; import java.util.stream.Collectors; import javax.annotation.Nonnull; @@ -1204,7 +1205,7 @@ protected CompletableFuture calculatePartCountAsync(List long[] objectSize = {0}; int index = 0; - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> 0); + CompletableFuture completableFuture = supplyAsync(() -> 0); for (ComposeSource src : sources) { index++; final int i = index; @@ -1282,6 +1283,10 @@ protected CompletableFuture calculatePartCountAsync(List return completableFuture; } + protected CompletableFuture supplyAsync(Supplier supplier) { + return CompletableFuture.supplyAsync(supplier); + } + /** Calculate part count of given compose sources. */ @Deprecated protected int calculatePartCount(List sources) @@ -2887,7 +2892,7 @@ private CompletableFuture putMultipartObjectAsync( PartSource firstPartSource) throws InsufficientDataException, InternalException, InvalidKeyException, IOException, NoSuchAlgorithmException, XmlParserException { - return CompletableFuture.supplyAsync( + return supplyAsync( () -> { String uploadId = null; ObjectWriteResponse response = null; @@ -2986,7 +2991,7 @@ protected CompletableFuture putObjectAsync( headers.putAll(args.genHeaders()); if (!headers.containsKey("Content-Type")) headers.put("Content-Type", contentType); - return CompletableFuture.supplyAsync( + return supplyAsync( () -> { try { return partReader.getPart();