Skip to content

Commit 3c9795a

Browse files
authored
Migration tool CompleteMPU Request multipartUpload setter (#5910)
1 parent 19e8cb6 commit 3c9795a

File tree

5 files changed

+74
-5
lines changed

5 files changed

+74
-5
lines changed

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package foo.bar;
1717

18+
import java.util.ArrayList;
1819
import java.util.List;
1920
import software.amazon.awssdk.services.s3.S3Client;
2021
import software.amazon.awssdk.services.s3.model.AbortMultipartUploadRequest;
@@ -25,6 +26,8 @@
2526
import software.amazon.awssdk.services.s3.model.BucketLifecycleConfiguration;
2627
import software.amazon.awssdk.services.s3.model.CORSConfiguration;
2728
import software.amazon.awssdk.services.s3.model.CORSRule;
29+
import software.amazon.awssdk.services.s3.model.CompleteMultipartUploadRequest;
30+
import software.amazon.awssdk.services.s3.model.CompletedMultipartUpload;
2831
import software.amazon.awssdk.services.s3.model.CompletedPart;
2932
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
3033
import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration;
@@ -143,6 +146,21 @@ private void initiateMpu_to_createMpu(S3Client s3, String bucket, String key) {
143146
System.out.println(initiateMultipartUploadResult);
144147
}
145148

149+
private void completeMpu(S3Client s3, String bucket, String key) {
150+
CompletedPart partETag = CompletedPart.builder().partNumber(7).eTag("etag")
151+
.build();
152+
List<CompletedPart> partETags = new ArrayList<>();
153+
partETags.add(partETag);
154+
155+
CompleteMultipartUploadRequest completeMpuRequest1 =
156+
CompleteMultipartUploadRequest.builder().bucket(bucket).key(key).multipartUpload(CompletedMultipartUpload.builder().parts(partETags).build())
157+
.build();
158+
159+
CompleteMultipartUploadRequest completeMpuRequest2 =
160+
CompleteMultipartUploadRequest.builder().bucket(bucket).key(key).uploadId("uploadId").multipartUpload(CompletedMultipartUpload.builder().parts(partETags).build())
161+
.build();
162+
}
163+
146164
private void listObjects(S3Client s3, String bucket) {
147165
ListObjectsRequest listObjectsRequest = ListObjectsRequest.builder().bucket(bucket)
148166
.build();
@@ -323,8 +341,6 @@ private void pojosWithConstructorArgs(String bucket) {
323341
PutBucketWebsiteRequest websiteRequest = PutBucketWebsiteRequest.builder().bucket(bucket).websiteConfiguration(WebsiteConfiguration.builder()
324342
.build())
325343
.build();
326-
CompletedPart partETag = CompletedPart.builder().partNumber(7).eTag("etag")
327-
.build();
328344
}
329345

330346
private void setBucketConfigs(S3Client s3, String bucket) {

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.amazonaws.services.s3.model.BucketTaggingConfiguration;
2828
import com.amazonaws.services.s3.model.BucketWebsiteConfiguration;
2929
import com.amazonaws.services.s3.model.CORSRule;
30+
import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
3031
import com.amazonaws.services.s3.model.CopyPartRequest;
3132
import com.amazonaws.services.s3.model.CopyPartResult;
3233
import com.amazonaws.services.s3.model.CreateBucketRequest;
@@ -55,6 +56,7 @@
5556
import com.amazonaws.services.s3.model.inventory.InventoryConfiguration;
5657
import com.amazonaws.services.s3.model.metrics.MetricsConfiguration;
5758
import com.amazonaws.services.s3.model.ownership.OwnershipControls;
59+
import java.util.ArrayList;
5860
import java.util.List;
5961

6062
public class S3 {
@@ -91,6 +93,18 @@ private void initiateMpu_to_createMpu(AmazonS3 s3, String bucket, String key) {
9193
System.out.println(initiateMultipartUploadResult);
9294
}
9395

96+
private void completeMpu(AmazonS3 s3, String bucket, String key) {
97+
PartETag partETag = new PartETag(7, "etag");
98+
List<PartETag> partETags = new ArrayList<>();
99+
partETags.add(partETag);
100+
101+
CompleteMultipartUploadRequest completeMpuRequest1 =
102+
new CompleteMultipartUploadRequest().withBucketName(bucket).withKey(key).withPartETags(partETags);
103+
104+
CompleteMultipartUploadRequest completeMpuRequest2 =
105+
new CompleteMultipartUploadRequest(bucket, key, "uploadId", partETags);
106+
}
107+
94108
private void listObjects(AmazonS3 s3, String bucket) {
95109
ListObjectsRequest listObjectsRequest = new ListObjectsRequest().withBucketName(bucket);
96110
ObjectListing objectListing = s3.listObjects(listObjectsRequest);
@@ -207,7 +221,6 @@ private void pojosWithConstructorArgs(String bucket) {
207221
SetBucketNotificationConfigurationRequest notificationRequest = new SetBucketNotificationConfigurationRequest(bucket, new BucketNotificationConfiguration());
208222
SetBucketTaggingConfigurationRequest tagRequest = new SetBucketTaggingConfigurationRequest(bucket, new BucketTaggingConfiguration());
209223
SetBucketWebsiteConfigurationRequest websiteRequest = new SetBucketWebsiteConfigurationRequest(bucket, new BucketWebsiteConfiguration());
210-
PartETag partETag = new PartETag(7, "etag");
211224
}
212225

213226
private void setBucketConfigs(AmazonS3 s3, String bucket) {

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.openrewrite.java.JavaTemplate;
2424
import org.openrewrite.java.MethodMatcher;
2525
import org.openrewrite.java.tree.J;
26+
import org.openrewrite.java.tree.JavaType;
27+
import org.openrewrite.java.tree.TypeUtils;
2628
import software.amazon.awssdk.annotations.SdkInternalApi;
2729

2830
/**
@@ -69,8 +71,15 @@ public TreeVisitor<?, ExecutionContext> getVisitor() {
6971
}
7072

7173
private static final class Visitor extends JavaIsoVisitor<ExecutionContext> {
74+
7275
@Override
7376
public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext executionContext) {
77+
78+
if (isCompleteMpuRequestMultipartUploadSetter(method)) {
79+
method = transformCompleteMpuRequestCompletedPartsArg(method);
80+
return super.visitMethodInvocation(method, executionContext);
81+
}
82+
7483
if (DISABLE_REQUESTER_PAYS.matches(method, false)) {
7584
method = transformSetRequesterPays(method, false);
7685
return super.visitMethodInvocation(method, executionContext);
@@ -114,6 +123,22 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
114123
return super.visitMethodInvocation(method, executionContext);
115124
}
116125

126+
private boolean isCompleteMpuRequestMultipartUploadSetter(J.MethodInvocation method) {
127+
JavaType.FullyQualified completeMpuRequest = TypeUtils.asFullyQualified(JavaType.buildType(
128+
"software.amazon.awssdk.services.s3.model.CompleteMultipartUploadRequest.Builder"));
129+
return "multipartUpload".equals(method.getSimpleName()) &&
130+
TypeUtils.isAssignableTo(completeMpuRequest, method.getSelect().getType());
131+
}
132+
133+
private J.MethodInvocation transformCompleteMpuRequestCompletedPartsArg(J.MethodInvocation method) {
134+
addImport("CompletedMultipartUpload");
135+
String v2Method = "CompletedMultipartUpload.builder().parts(#{any()}).build()";
136+
137+
return JavaTemplate.builder(v2Method).build()
138+
.apply(getCursor(), method.getCoordinates().replaceArguments(),
139+
method.getArguments().get(0));
140+
}
141+
117142
private J.MethodInvocation transformCreateBucket(J.MethodInvocation method) {
118143
String v2Method = "#{any()}.createBucket(CreateBucketRequest.builder().bucket(#{any()})"
119144
+ ".createBucketConfiguration(CreateBucketConfiguration.builder().locationConstraint(#{any()})"

v2-migration/src/main/resources/META-INF/rewrite/change-s3-methods.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,7 @@ recipeList:
213213
newMethodName: withBucket
214214
- org.openrewrite.java.ChangeMethodName:
215215
methodPattern: com.amazonaws.services.s3.model.CompleteMultipartUploadRequest withBucketName(String)
216-
newMethodName: withBucket
216+
newMethodName: withBucket
217+
- org.openrewrite.java.ChangeMethodName:
218+
methodPattern: com.amazonaws.services.s3.model.CompleteMultipartUploadRequest withPartETags(java.util.List)
219+
newMethodName: withMultipartUpload

v2-migration/src/main/resources/META-INF/rewrite/s3-methods-constructor-to-fluent.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,4 +515,16 @@ recipeList:
515515
- java.lang.String
516516
fluentNames:
517517
- withPartNumber
518-
- withETag
518+
- withETag
519+
- software.amazon.awssdk.v2migration.ConstructorToFluent:
520+
clzzFqcn: com.amazonaws.services.s3.model.CompleteMultipartUploadRequest
521+
parameterTypes:
522+
- java.lang.String
523+
- java.lang.String
524+
- java.lang.String
525+
- java.util.List<com.amazonaws.services.s3.model.PartETag>
526+
fluentNames:
527+
- withBucket
528+
- withKey
529+
- withUploadId
530+
- withMultipartUpload

0 commit comments

Comments
 (0)