Skip to content

Commit 49ce75a

Browse files
authored
Fix NPE thrown when creating a default transfer manager (#2726)
* Fix NPE thrown when creating a default transfer manager * rename builder
1 parent cfa6008 commit 49ce75a

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"category": "S3 Transfer Manager",
3+
"contributor": "",
4+
"type": "bugfix",
5+
"description": "Fix the NPE thrown when calling `S3TransferManager.create()`"
6+
}

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,16 @@
3737
public final class DefaultS3TransferManager implements S3TransferManager {
3838
private final S3CrtAsyncClient s3CrtAsyncClient;
3939

40-
public DefaultS3TransferManager(DefaultBuilder builder) {
40+
public DefaultS3TransferManager(DefaultBuilder tmBuilder) {
4141
S3CrtAsyncClient.S3CrtAsyncClientBuilder clientBuilder = S3CrtAsyncClient.builder();
42-
builder.s3ClientConfiguration.credentialsProvider().ifPresent(clientBuilder::credentialsProvider);
43-
builder.s3ClientConfiguration.maxConcurrency().ifPresent(clientBuilder::maxConcurrency);
44-
builder.s3ClientConfiguration.minimumPartSizeInBytes().ifPresent(clientBuilder::minimumPartSizeInBytes);
45-
builder.s3ClientConfiguration.region().ifPresent(clientBuilder::region);
46-
builder.s3ClientConfiguration.targetThroughputInGbps().ifPresent(clientBuilder::targetThroughputInGbps);
47-
builder.s3ClientConfiguration.asyncConfiguration().ifPresent(clientBuilder::asyncConfiguration);
42+
if (tmBuilder.s3ClientConfiguration != null) {
43+
tmBuilder.s3ClientConfiguration.credentialsProvider().ifPresent(clientBuilder::credentialsProvider);
44+
tmBuilder.s3ClientConfiguration.maxConcurrency().ifPresent(clientBuilder::maxConcurrency);
45+
tmBuilder.s3ClientConfiguration.minimumPartSizeInBytes().ifPresent(clientBuilder::minimumPartSizeInBytes);
46+
tmBuilder.s3ClientConfiguration.region().ifPresent(clientBuilder::region);
47+
tmBuilder.s3ClientConfiguration.targetThroughputInGbps().ifPresent(clientBuilder::targetThroughputInGbps);
48+
tmBuilder.s3ClientConfiguration.asyncConfiguration().ifPresent(clientBuilder::asyncConfiguration);
49+
}
4850

4951
s3CrtAsyncClient = clientBuilder.build();
5052
}

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ public class S3TransferManagerTest {
4242
private S3CrtAsyncClient mockS3Crt;
4343
private S3TransferManager tm;
4444

45-
@Rule
46-
public ExpectedException thrown = ExpectedException.none();
47-
4845
@Before
4946
public void methodSetup() {
5047
mockS3Crt = mock(S3CrtAsyncClient.class);
@@ -56,6 +53,12 @@ public void methodTeardown() {
5653
tm.close();
5754
}
5855

56+
@Test
57+
public void defaultTransferManager_shouldNotThrowException() {
58+
S3TransferManager transferManager = S3TransferManager.create();
59+
transferManager.close();
60+
}
61+
5962
@Test
6063
public void upload_returnsResponse() {
6164
PutObjectResponse response = PutObjectResponse.builder().build();

0 commit comments

Comments
 (0)