Skip to content

Commit d506c23

Browse files
authored
Migration tool TransferManager import transforms (#5903)
* Migration tool TransferManager import transforms * Use OpenRewrite ChangeType recipe * Update dependency version automatically
1 parent 79338d6 commit d506c23

File tree

4 files changed

+185
-0
lines changed

4 files changed

+185
-0
lines changed

buildspecs/update-master-from-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ phases:
4242
sed -i -E "s/(<awsjavasdk.previous.version>).+(<\/awsjavasdk.previous.version>)/\1$RELEASE_VERSION\2/" pom.xml
4343
sed -i -E "s/(newVersion: ).+/\1$RELEASE_VERSION/" v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml
4444
sed -i -E "s/(version: ).+/\1$RELEASE_VERSION/" v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml
45+
sed -i -E "s/(version: ).+/\1$RELEASE_VERSION/" v2-migration/src/main/resources/META-INF/rewrite/upgrade-transfer-manager.yml
4546
4647
git commit -am "Update to next snapshot version: $NEW_VERSION_SNAPSHOT"
4748
fi
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#
2+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License").
5+
# You may not use this file except in compliance with the License.
6+
# A copy of the License is located at
7+
#
8+
# http://aws.amazon.com/apache2.0
9+
#
10+
# or in the "license" file accompanying this file. This file is distributed
11+
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
# express or implied. See the License for the specific language governing
13+
# permissions and limitations under the License.
14+
#
15+
---
16+
type: specs.openrewrite.org/v1beta/recipe
17+
name: software.amazon.awssdk.v2migration.ChangeTransferManagerTypes
18+
displayName: Change SDK TransferManager types from v1 to v2
19+
description: Change SDK TransferManager types from v1 to v2.
20+
recipeList:
21+
- org.openrewrite.java.ChangeType:
22+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferManager
23+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.S3TransferManager
24+
- org.openrewrite.java.ChangeType:
25+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferManagerBuilder
26+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.S3TransferManager
27+
- org.openrewrite.java.ChangeType:
28+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Transfer
29+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Transfer
30+
- org.openrewrite.java.ChangeType:
31+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.AbortableTransfer
32+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Transfer
33+
- org.openrewrite.java.ChangeType:
34+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Copy
35+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Copy
36+
- org.openrewrite.java.ChangeType:
37+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Download
38+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Download
39+
- org.openrewrite.java.ChangeType:
40+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Upload
41+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Upload
42+
- org.openrewrite.java.ChangeType:
43+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.MultipleFileDownload
44+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.DirectoryDownload
45+
- org.openrewrite.java.ChangeType:
46+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.MultipleFileUpload
47+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.DirectoryUpload
48+
- org.openrewrite.java.ChangeType:
49+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PersistableDownload
50+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableFileDownload
51+
- org.openrewrite.java.ChangeType:
52+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PersistableTransfer
53+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableTransfer
54+
- org.openrewrite.java.ChangeType:
55+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PersistableUpload
56+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableFileUpload
57+
- org.openrewrite.java.ChangeType:
58+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PauseResult
59+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableFileUpload
60+
- org.openrewrite.java.ChangeType:
61+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.model.CopyResult
62+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.CompletedCopy
63+
- org.openrewrite.java.ChangeType:
64+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.model.UploadResult
65+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.CompletedUpload
66+
- org.openrewrite.java.ChangeType:
67+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.KeyFilter
68+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.config.DownloadFilter
69+
- org.openrewrite.java.ChangeType:
70+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferProgress
71+
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.progress.TransferProgress
72+
- org.openrewrite.java.ChangeType:
73+
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferManagerConfiguration
74+
newFullyQualifiedTypeName: software.amazon.awssdk.services.s3.multipart.MultipartConfiguration
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#
2+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License").
5+
# You may not use this file except in compliance with the License.
6+
# A copy of the License is located at
7+
#
8+
# http://aws.amazon.com/apache2.0
9+
#
10+
# or in the "license" file accompanying this file. This file is distributed
11+
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
# express or implied. See the License for the specific language governing
13+
# permissions and limitations under the License.
14+
#
15+
---
16+
type: specs.openrewrite.org/v1beta/recipe
17+
name: software.amazon.awssdk.v2migration.TransferManagerUpgrade
18+
displayName: Upgrade the S3 Transfer Manager from the AWS SDK for Java v1 to the AWS SDK for Java v2
19+
description: This recipe will apply changes required for migrating the S3 Transfer Manager from the AWS SDK for Java v1 to the AWS SDK for Java v2.
20+
tags:
21+
- aws
22+
- sdk
23+
recipeList:
24+
- org.openrewrite.java.dependencies.AddDependency:
25+
groupId: software.amazon.awssdk
26+
artifactId: s3-transfer-manager
27+
version: 2.30.28
28+
onlyIfUsing: com.amazonaws.services.s3.transfer.TransferManager
29+
- software.amazon.awssdk.v2migration.ChangeTransferManagerTypes
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
package software.amazon.awssdk.v2migration;
17+
18+
import static org.openrewrite.java.Assertions.java;
19+
20+
import java.io.IOException;
21+
import java.io.InputStream;
22+
import org.junit.jupiter.api.Test;
23+
import org.junit.jupiter.api.condition.EnabledOnJre;
24+
import org.junit.jupiter.api.condition.JRE;
25+
import org.openrewrite.test.RecipeSpec;
26+
import org.openrewrite.test.RewriteTest;
27+
28+
public class ChangeTransferManagerTypesTest implements RewriteTest {
29+
30+
@Override
31+
public void defaults(RecipeSpec spec) {
32+
try (InputStream stream = getClass().getResourceAsStream("/META-INF/rewrite/change-transfer-manager-types.yml")) {
33+
spec.recipe(stream, "software.amazon.awssdk.v2migration.ChangeTransferManagerTypes");
34+
} catch (IOException e) {
35+
throw new RuntimeException(e);
36+
}
37+
}
38+
39+
@Test
40+
@EnabledOnJre({JRE.JAVA_8})
41+
void shouldTransformImports() {
42+
rewriteRun(
43+
java(
44+
"import com.amazonaws.services.s3.transfer.Download;\n" +
45+
"import com.amazonaws.services.s3.transfer.MultipleFileDownload;\n" +
46+
"import com.amazonaws.services.s3.transfer.MultipleFileUpload;\n" +
47+
"import com.amazonaws.services.s3.transfer.PersistableDownload;\n" +
48+
"import com.amazonaws.services.s3.transfer.TransferManager;\n" +
49+
"import com.amazonaws.services.s3.transfer.TransferManagerBuilder;\n" +
50+
"import java.io.File;\n" +
51+
"\n" +
52+
"class Test {\n" +
53+
" static void tm() {\n" +
54+
" TransferManager tm = TransferManagerBuilder.defaultTransferManager();\n" +
55+
" Download download = tm.download(\"bucket\", \"key\", new File(\"path/to/file.txt\"));\n" +
56+
" PersistableDownload persistableDownload = download.pause();\n" +
57+
" MultipleFileDownload multipleFileDownload = tm.downloadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"));\n" +
58+
" MultipleFileUpload multipleFileUpload = tm.uploadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"), true);\n" +
59+
" }\n" +
60+
"}\n",
61+
"import software.amazon.awssdk.transfer.s3.S3TransferManager;\n" +
62+
"import software.amazon.awssdk.transfer.s3.model.DirectoryDownload;\n" +
63+
"import software.amazon.awssdk.transfer.s3.model.DirectoryUpload;\n" +
64+
"import software.amazon.awssdk.transfer.s3.model.Download;\n" +
65+
"import software.amazon.awssdk.transfer.s3.model.ResumableFileDownload;\n" +
66+
"\n" +
67+
"import java.io.File;\n" +
68+
"\n" +
69+
"class Test {\n" +
70+
" static void tm() {\n" +
71+
" S3TransferManager tm = S3TransferManager.defaultTransferManager();\n" +
72+
" Download download = tm.download(\"bucket\", \"key\", new File(\"path/to/file.txt\"));\n" +
73+
" ResumableFileDownload persistableDownload = download.pause();\n" +
74+
" DirectoryDownload multipleFileDownload = tm.downloadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"));\n" +
75+
" DirectoryUpload multipleFileUpload = tm.uploadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"), true);\n" +
76+
" }\n" +
77+
"}\n"
78+
)
79+
);
80+
}
81+
}

0 commit comments

Comments
 (0)