Skip to content

Commit 94a5bca

Browse files
committed
Address comments
1 parent 35cdd26 commit 94a5bca

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Streaming.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void putObject_bucketKeyStreamMetadata(String bucket, String key, InputStream st
6060

6161
HeadObjectResponse metadataWithoutLength = HeadObjectResponse.builder()
6262
.build();
63-
/*AWS SDK for Java v2 migration: When using InputStream to upload with S3Client, Content-Length should be specified and used with RequestBody.fromInputStream(). Otherwise, the entire stream will be buffered in memory.*/s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key).build(), RequestBody.fromContentProvider(() -> stream, "application/octet-stream"));
63+
/*AWS SDK for Java v2 migration: When using InputStream to upload with S3Client, Content-Length should be specified and used with RequestBody.fromInputStream(). Otherwise, the entire stream will be buffered in memory. If content length must be unknown, we recommend using the CRT-based S3 client - https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/crt-based-s3-client.html*/s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key).build(), RequestBody.fromContentProvider(() -> stream, "application/octet-stream"));
6464
}
6565

6666
/**
@@ -92,7 +92,7 @@ void putObject_requestPojoWithInputStream(String bucket, String key) {
9292

9393
PutObjectRequest request1 = PutObjectRequest.builder().bucket(bucket).key(key).websiteRedirectLocation("location")
9494
.build();
95-
/*AWS SDK for Java v2 migration: When using InputStream to upload with S3Client, Content-Length should be specified and used with RequestBody.fromInputStream(). Otherwise, the entire stream will be buffered in memory.*/s3.putObject(request1, RequestBody.fromContentProvider(() -> inputStream1, "application/octet-stream"));
95+
/*AWS SDK for Java v2 migration: When using InputStream to upload with S3Client, Content-Length should be specified and used with RequestBody.fromInputStream(). Otherwise, the entire stream will be buffered in memory. If content length must be unknown, we recommend using the CRT-based S3 client - https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/crt-based-s3-client.html*/s3.putObject(request1, RequestBody.fromContentProvider(() -> inputStream1, "application/octet-stream"));
9696

9797
HeadObjectResponse metadata = HeadObjectResponse.builder()
9898
.build();
@@ -159,4 +159,16 @@ void putObjectRequest_withMetadata() {
159159
.expires(expiry.toInstant())
160160
.build();
161161
}
162+
163+
void putObjectRequester_emptyMetadata() {
164+
HeadObjectResponse emptyMetadata1 = HeadObjectResponse.builder()
165+
.build();
166+
PutObjectRequest request1 =PutObjectRequest.builder().bucket("bucket").key("key").websiteRedirectLocation("location")
167+
.build();
168+
169+
HeadObjectResponse emptyMetadata2 = HeadObjectResponse.builder()
170+
.build();
171+
PutObjectRequest request2 = PutObjectRequest.builder().bucket("bucket").key("key").websiteRedirectLocation("location")
172+
.build();
173+
}
162174
}

test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3Streaming.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,13 @@ void putObjectRequest_withMetadata() {
140140

141141
PutObjectRequest request = new PutObjectRequest("bucket", "key", "location").withMetadata(metadata);
142142
}
143+
144+
void putObjectRequester_emptyMetadata() {
145+
ObjectMetadata emptyMetadata1 = new ObjectMetadata();
146+
PutObjectRequest request1 = new PutObjectRequest("bucket", "key", "location").withMetadata(emptyMetadata1);
147+
148+
ObjectMetadata emptyMetadata2 = new ObjectMetadata();
149+
PutObjectRequest request2 = new PutObjectRequest("bucket", "key", "location");
150+
request2.setMetadata(emptyMetadata2);
151+
}
143152
}

v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3PutObjectRequestToV2.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ private J convertSetMetadataToBuilder(J.MethodInvocation method) {
381381
Map<String, Expression> map = metadataMap.get(metadataName);
382382
if (map == null) {
383383
// should never happen unless user passes in empty ObjectMetadata
384-
// remove metadata setter
384+
// remove entire line
385385
return null;
386386
}
387387

@@ -444,6 +444,7 @@ private J.MethodInvocation saveMetadataValueAndRemoveStatement(J.MethodInvocatio
444444
map.put(methodName, value);
445445
metadataMap.put(variableName, map);
446446

447+
// remove entire line
447448
return null;
448449
}
449450

@@ -507,7 +508,9 @@ private void addTmImport(String pojoName) {
507508

508509
private List<Comment> inputStreamBufferingWarningComment() {
509510
String warning = "When using InputStream to upload with S3Client, Content-Length should be specified and used "
510-
+ "with RequestBody.fromInputStream(). Otherwise, the entire stream will be buffered in memory.";
511+
+ "with RequestBody.fromInputStream(). Otherwise, the entire stream will be buffered in memory. If"
512+
+ " content length must be unknown, we recommend using the CRT-based S3 client - "
513+
+ "https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/crt-based-s3-client.html";
511514
return createComments(warning);
512515
}
513516
}

0 commit comments

Comments
 (0)