From fb9dd0765a4c19da077685e0deda5b728aa7d180 Mon Sep 17 00:00:00 2001 From: Zoe Wang <33073555+zoewangg@users.noreply.github.com> Date: Mon, 20 Sep 2021 16:39:21 -0700 Subject: [PATCH 1/2] Fix NPE thrown when creating a default transfer manager --- .../bugfix-S3TransferManager-1dee8e5.json | 6 ++++++ .../s3/internal/DefaultS3TransferManager.java | 14 ++++++++------ .../s3/internal/S3TransferManagerTest.java | 9 ++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 .changes/next-release/bugfix-S3TransferManager-1dee8e5.json diff --git a/.changes/next-release/bugfix-S3TransferManager-1dee8e5.json b/.changes/next-release/bugfix-S3TransferManager-1dee8e5.json new file mode 100644 index 000000000000..99923fa79bad --- /dev/null +++ b/.changes/next-release/bugfix-S3TransferManager-1dee8e5.json @@ -0,0 +1,6 @@ +{ + "category": "S3 Transfer Manager", + "contributor": "", + "type": "bugfix", + "description": "Fix the NPE thrown when calling `S3TransferManager.create()`" +} diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java index 55fcb723685e..da99ce78152b 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java @@ -39,12 +39,14 @@ public final class DefaultS3TransferManager implements S3TransferManager { public DefaultS3TransferManager(DefaultBuilder builder) { S3CrtAsyncClient.S3CrtAsyncClientBuilder clientBuilder = S3CrtAsyncClient.builder(); - builder.s3ClientConfiguration.credentialsProvider().ifPresent(clientBuilder::credentialsProvider); - builder.s3ClientConfiguration.maxConcurrency().ifPresent(clientBuilder::maxConcurrency); - builder.s3ClientConfiguration.minimumPartSizeInBytes().ifPresent(clientBuilder::minimumPartSizeInBytes); - builder.s3ClientConfiguration.region().ifPresent(clientBuilder::region); - builder.s3ClientConfiguration.targetThroughputInGbps().ifPresent(clientBuilder::targetThroughputInGbps); - builder.s3ClientConfiguration.asyncConfiguration().ifPresent(clientBuilder::asyncConfiguration); + if (builder.s3ClientConfiguration != null) { + builder.s3ClientConfiguration.credentialsProvider().ifPresent(clientBuilder::credentialsProvider); + builder.s3ClientConfiguration.maxConcurrency().ifPresent(clientBuilder::maxConcurrency); + builder.s3ClientConfiguration.minimumPartSizeInBytes().ifPresent(clientBuilder::minimumPartSizeInBytes); + builder.s3ClientConfiguration.region().ifPresent(clientBuilder::region); + builder.s3ClientConfiguration.targetThroughputInGbps().ifPresent(clientBuilder::targetThroughputInGbps); + builder.s3ClientConfiguration.asyncConfiguration().ifPresent(clientBuilder::asyncConfiguration); + } s3CrtAsyncClient = clientBuilder.build(); } diff --git a/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java b/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java index 9433edd10a79..b8a8e423dc24 100644 --- a/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java +++ b/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java @@ -42,9 +42,6 @@ public class S3TransferManagerTest { private S3CrtAsyncClient mockS3Crt; private S3TransferManager tm; - @Rule - public ExpectedException thrown = ExpectedException.none(); - @Before public void methodSetup() { mockS3Crt = mock(S3CrtAsyncClient.class); @@ -56,6 +53,12 @@ public void methodTeardown() { tm.close(); } + @Test + public void defaultTransferManager_shouldNotThrowException() { + S3TransferManager transferManager = S3TransferManager.create(); + transferManager.close(); + } + @Test public void upload_returnsResponse() { PutObjectResponse response = PutObjectResponse.builder().build(); From b38153f5e103f9017b967cdaa7b1b6cc9f41eaa6 Mon Sep 17 00:00:00 2001 From: Zoe Wang <33073555+zoewangg@users.noreply.github.com> Date: Mon, 20 Sep 2021 19:04:56 -0700 Subject: [PATCH 2/2] rename builder --- .../s3/internal/DefaultS3TransferManager.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java index da99ce78152b..5e34a995808d 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java @@ -37,15 +37,15 @@ public final class DefaultS3TransferManager implements S3TransferManager { private final S3CrtAsyncClient s3CrtAsyncClient; - public DefaultS3TransferManager(DefaultBuilder builder) { + public DefaultS3TransferManager(DefaultBuilder tmBuilder) { S3CrtAsyncClient.S3CrtAsyncClientBuilder clientBuilder = S3CrtAsyncClient.builder(); - if (builder.s3ClientConfiguration != null) { - builder.s3ClientConfiguration.credentialsProvider().ifPresent(clientBuilder::credentialsProvider); - builder.s3ClientConfiguration.maxConcurrency().ifPresent(clientBuilder::maxConcurrency); - builder.s3ClientConfiguration.minimumPartSizeInBytes().ifPresent(clientBuilder::minimumPartSizeInBytes); - builder.s3ClientConfiguration.region().ifPresent(clientBuilder::region); - builder.s3ClientConfiguration.targetThroughputInGbps().ifPresent(clientBuilder::targetThroughputInGbps); - builder.s3ClientConfiguration.asyncConfiguration().ifPresent(clientBuilder::asyncConfiguration); + if (tmBuilder.s3ClientConfiguration != null) { + tmBuilder.s3ClientConfiguration.credentialsProvider().ifPresent(clientBuilder::credentialsProvider); + tmBuilder.s3ClientConfiguration.maxConcurrency().ifPresent(clientBuilder::maxConcurrency); + tmBuilder.s3ClientConfiguration.minimumPartSizeInBytes().ifPresent(clientBuilder::minimumPartSizeInBytes); + tmBuilder.s3ClientConfiguration.region().ifPresent(clientBuilder::region); + tmBuilder.s3ClientConfiguration.targetThroughputInGbps().ifPresent(clientBuilder::targetThroughputInGbps); + tmBuilder.s3ClientConfiguration.asyncConfiguration().ifPresent(clientBuilder::asyncConfiguration); } s3CrtAsyncClient = clientBuilder.build();