Skip to content

Commit 0e0bd12

Browse files
committed
Add type check for ObjectMetadata arg
1 parent eabd446 commit 0e0bd12

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ void putObject_bucketKeyStreamMetadata(String bucket, String key, InputStream st
6565
HeadObjectResponse metadataWithoutLength = HeadObjectResponse.builder()
6666
.build();
6767
/*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"));
68+
69+
/*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"));
6870
}
6971

7072
/**

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ void putObject_bucketKeyStreamMetadata(String bucket, String key, InputStream st
5757

5858
ObjectMetadata metadataWithoutLength = new ObjectMetadata();
5959
s3.putObject(bucket, key, stream, metadataWithoutLength);
60+
61+
s3.putObject("bucket", "key", stream, new ObjectMetadata());
6062
}
6163

6264
/**

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,11 +321,18 @@ private J.MethodInvocation transformPutObjectWithStreamAndMetadata(J.MethodInvoc
321321
addS3Import("PutObjectRequest");
322322

323323
Expression metadata = method.getArguments().get(3);
324-
String metadataName = ((J.Identifier) metadata).getSimpleName();
324+
String metadataName = null;
325+
if (metadata instanceof J.Identifier) {
326+
metadataName = ((J.Identifier) metadata).getSimpleName();
327+
}
325328

326329
StringBuilder sb = new StringBuilder("PutObjectRequest.builder().bucket(#{any()}).key(#{any()})");
327-
addMetadataFields(sb, metadataName, metadataMap);
328-
Expression contentLen = retrieveContentLengthForMetadataIfSet(metadataName);
330+
331+
Expression contentLen = null;
332+
if (metadataName != null) {
333+
addMetadataFields(sb, metadataName, metadataMap);
334+
contentLen = retrieveContentLengthForMetadataIfSet(metadataName);
335+
}
329336

330337
Expression[] params = {method.getArguments().get(0), method.getArguments().get(1),
331338
method.getArguments().get(2)};

0 commit comments

Comments
 (0)