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..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,14 +37,16 @@ public final class DefaultS3TransferManager implements S3TransferManager { private final S3CrtAsyncClient s3CrtAsyncClient; - public DefaultS3TransferManager(DefaultBuilder builder) { + public DefaultS3TransferManager(DefaultBuilder tmBuilder) { 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 (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(); } 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();