Skip to content

Migration tool TransferManager type transforms #5903

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions buildspecs/update-master-from-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ phases:
sed -i -E "s/(<awsjavasdk.previous.version>).+(<\/awsjavasdk.previous.version>)/\1$RELEASE_VERSION\2/" pom.xml
sed -i -E "s/(newVersion: ).+/\1$RELEASE_VERSION/" v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml
sed -i -E "s/(version: ).+/\1$RELEASE_VERSION/" v2-migration/src/main/resources/META-INF/rewrite/upgrade-sdk-dependencies.yml
sed -i -E "s/(version: ).+/\1$RELEASE_VERSION/" v2-migration/src/main/resources/META-INF/rewrite/upgrade-transfer-manager.yml

git commit -am "Update to next snapshot version: $NEW_VERSION_SNAPSHOT"
fi
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License").
# You may not use this file except in compliance with the License.
# A copy of the License is located at
#
# http://aws.amazon.com/apache2.0
#
# or in the "license" file accompanying this file. This file is distributed
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.
#
---
type: specs.openrewrite.org/v1beta/recipe
name: software.amazon.awssdk.v2migration.ChangeTransferManagerTypes
displayName: Change SDK TransferManager types from v1 to v2
description: Change SDK TransferManager types from v1 to v2.
recipeList:
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferManager
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.S3TransferManager
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferManagerBuilder
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.S3TransferManager
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Transfer
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Transfer
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.AbortableTransfer
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Transfer
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Copy
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Copy
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Download
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Download
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.Upload
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.Upload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.MultipleFileDownload
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.DirectoryDownload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.MultipleFileUpload
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.DirectoryUpload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PersistableDownload
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableFileDownload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PersistableTransfer
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableTransfer
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PersistableUpload
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableFileUpload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.PauseResult
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.ResumableFileUpload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.model.CopyResult
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.CompletedCopy
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.model.UploadResult
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.model.CompletedUpload
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.KeyFilter
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.config.DownloadFilter
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferProgress
newFullyQualifiedTypeName: software.amazon.awssdk.transfer.s3.progress.TransferProgress
- org.openrewrite.java.ChangeType:
oldFullyQualifiedTypeName: com.amazonaws.services.s3.transfer.TransferManagerConfiguration
newFullyQualifiedTypeName: software.amazon.awssdk.services.s3.multipart.MultipartConfiguration
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License").
# You may not use this file except in compliance with the License.
# A copy of the License is located at
#
# http://aws.amazon.com/apache2.0
#
# or in the "license" file accompanying this file. This file is distributed
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.
#
---
type: specs.openrewrite.org/v1beta/recipe
name: software.amazon.awssdk.v2migration.TransferManagerUpgrade
displayName: Upgrade the S3 Transfer Manager from the AWS SDK for Java v1 to the AWS SDK for Java v2
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.
tags:
- aws
- sdk
recipeList:
- org.openrewrite.java.dependencies.AddDependency:
groupId: software.amazon.awssdk
artifactId: s3-transfer-manager
version: 2.30.28
onlyIfUsing: com.amazonaws.services.s3.transfer.TransferManager
- software.amazon.awssdk.v2migration.ChangeTransferManagerTypes
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

package software.amazon.awssdk.v2migration;

import static org.openrewrite.java.Assertions.java;

import java.io.IOException;
import java.io.InputStream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnJre;
import org.junit.jupiter.api.condition.JRE;
import org.openrewrite.test.RecipeSpec;
import org.openrewrite.test.RewriteTest;

public class ChangeTransferManagerTypesTest implements RewriteTest {

@Override
public void defaults(RecipeSpec spec) {
try (InputStream stream = getClass().getResourceAsStream("/META-INF/rewrite/change-transfer-manager-types.yml")) {
spec.recipe(stream, "software.amazon.awssdk.v2migration.ChangeTransferManagerTypes");
} catch (IOException e) {
throw new RuntimeException(e);
}
}

@Test
@EnabledOnJre({JRE.JAVA_8})
void shouldTransformImports() {
rewriteRun(
java(
"import com.amazonaws.services.s3.transfer.Download;\n" +
"import com.amazonaws.services.s3.transfer.MultipleFileDownload;\n" +
"import com.amazonaws.services.s3.transfer.MultipleFileUpload;\n" +
"import com.amazonaws.services.s3.transfer.PersistableDownload;\n" +
"import com.amazonaws.services.s3.transfer.TransferManager;\n" +
"import com.amazonaws.services.s3.transfer.TransferManagerBuilder;\n" +
"import java.io.File;\n" +
"\n" +
"class Test {\n" +
" static void tm() {\n" +
" TransferManager tm = TransferManagerBuilder.defaultTransferManager();\n" +
" Download download = tm.download(\"bucket\", \"key\", new File(\"path/to/file.txt\"));\n" +
" PersistableDownload persistableDownload = download.pause();\n" +
" MultipleFileDownload multipleFileDownload = tm.downloadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"));\n" +
" MultipleFileUpload multipleFileUpload = tm.uploadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"), true);\n" +
" }\n" +
"}\n",
"import software.amazon.awssdk.transfer.s3.S3TransferManager;\n" +
"import software.amazon.awssdk.transfer.s3.model.DirectoryDownload;\n" +
"import software.amazon.awssdk.transfer.s3.model.DirectoryUpload;\n" +
"import software.amazon.awssdk.transfer.s3.model.Download;\n" +
"import software.amazon.awssdk.transfer.s3.model.ResumableFileDownload;\n" +
"\n" +
"import java.io.File;\n" +
"\n" +
"class Test {\n" +
" static void tm() {\n" +
" S3TransferManager tm = S3TransferManager.defaultTransferManager();\n" +
" Download download = tm.download(\"bucket\", \"key\", new File(\"path/to/file.txt\"));\n" +
" ResumableFileDownload persistableDownload = download.pause();\n" +
" DirectoryDownload multipleFileDownload = tm.downloadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"));\n" +
" DirectoryUpload multipleFileUpload = tm.uploadDirectory(\"bucket\", \"prefix\", new File(\"path/to/dir\"), true);\n" +
" }\n" +
"}\n"
)
);
}
}
Loading