rewriteArgs = new ArrayList<>();
// pin version since updates have broken tests
- String rewriteMavenPluginVersion = "5.46.0";
+ String rewriteMavenPluginVersion = "6.6.0";
addAll(rewriteArgs, "mvn", "org.openrewrite.maven:rewrite-maven-plugin:" + rewriteMavenPluginVersion + ":run",
"-Drewrite.recipeArtifactCoordinates=software.amazon.awssdk:v2-migration:"+ getMigrationToolVersion() + "-PREVIEW",
recipeCmd);
diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/gradle/before/init.gradle b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/gradle/before/init.gradle
index 25eb4abdc9c1..90a0fd911ebb 100644
--- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/gradle/before/init.gradle
+++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/gradle/before/init.gradle
@@ -3,7 +3,7 @@ initscript {
maven { url "https://plugins.gradle.org/m2" }
}
dependencies {
- classpath("org.openrewrite:plugin:6.28.0")
+ classpath("org.openrewrite:plugin:7.4.1")
}
}
diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Streaming.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Streaming.java
index bccb2eae944b..cc882dc887e6 100644
--- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Streaming.java
+++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Streaming.java
@@ -61,7 +61,7 @@ void putObject_bucketKeyStreamMetadata(String bucket, String key, InputStream st
HeadObjectResponse metadataWithLength = HeadObjectResponse.builder()
.build();
s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key).contentLength(22L)
- .build(), RequestBody.fromInputStream(stream, 22L));
+ .build(), RequestBody.fromInputStream(stream, 22));
HeadObjectResponse metadataWithoutLength = HeadObjectResponse.builder()
@@ -105,7 +105,7 @@ void putObject_requestPojoWithInputStream(String bucket, String key) {
HeadObjectResponse metadata = HeadObjectResponse.builder()
.build();
s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key).websiteRedirectLocation("location").contentLength(11L)
- .build(), RequestBody.fromInputStream(inputStream2, 11L));
+ .build(), RequestBody.fromInputStream(inputStream2, 11));
}
void putObject_requestPojoWithoutPayload(String bucket, String key) {
diff --git a/v2-migration/pom.xml b/v2-migration/pom.xml
index 99540ad636f8..797b0020ea9e 100644
--- a/v2-migration/pom.xml
+++ b/v2-migration/pom.xml
@@ -34,7 +34,7 @@
${project.parent.version}
- 2.23.0
+ 3.6.1
5.10.3
1.12.472
diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3PutObjectRequestToV2.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3PutObjectRequestToV2.java
index 151d24a95c24..db9601b045e5 100644
--- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3PutObjectRequestToV2.java
+++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3PutObjectRequestToV2.java
@@ -305,13 +305,8 @@ private J.MethodInvocation addInputStreamToPutObject(J.MethodInvocation method,
.withComments(inputStreamBufferingWarningComment());
}
- StringBuilder sb = new StringBuilder("#{any()}, RequestBody.fromInputStream(#{any()}, #{any()}");
- if (contentLen instanceof J.Literal) {
- sb.append("L");
- }
- sb.append(")");
-
- return JavaTemplate.builder(sb.toString()).build()
+ v2Method = "#{any()}, RequestBody.fromInputStream(#{any()}, #{any()})";
+ return JavaTemplate.builder(v2Method).build()
.apply(getCursor(), method.getCoordinates().replaceArguments(),
method.getArguments().get(0), inputStream, contentLen);
}
@@ -346,12 +341,7 @@ private J.MethodInvocation transformPutObjectWithStreamAndMetadata(J.MethodInvoc
.withComments(inputStreamBufferingWarningComment());
}
- sb.append(".build(), RequestBody.fromInputStream(#{any()}, #{any()}");
-
- if (contentLen instanceof J.Literal) {
- sb.append("L");
- }
- sb.append(")");
+ sb.append(".build(), RequestBody.fromInputStream(#{any()}, #{any()})");
params = Arrays.copyOf(params, 4);
params[3] = contentLen;
diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/openrewrite/ChangeMethodInvocationReturnType.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/openrewrite/ChangeMethodInvocationReturnType.java
deleted file mode 100644
index 40b3706d96f5..000000000000
--- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/openrewrite/ChangeMethodInvocationReturnType.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.openrewrite;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.Collections;
-import org.openrewrite.ExecutionContext;
-import org.openrewrite.Option;
-import org.openrewrite.Recipe;
-import org.openrewrite.TreeVisitor;
-import org.openrewrite.internal.ListUtils;
-import org.openrewrite.java.JavaIsoVisitor;
-import org.openrewrite.java.MethodMatcher;
-import org.openrewrite.java.tree.J;
-import org.openrewrite.java.tree.JavaType;
-import org.openrewrite.java.tree.TypeUtils;
-import org.openrewrite.marker.Markers;
-import software.amazon.awssdk.annotations.SdkInternalApi;
-
-/**
- * This class contains source imported from https://github
- * .com/openrewrite/rewrite/blob/main/rewrite-java/src/main/java/org/openrewrite/java/ChangeMethodInvocationReturnType.java,
- * licensed under the Apache License 2.0, available at the time of the fork (4/11/2025) here:
- * https://github.com/openrewrite/rewrite/blob/main/LICENSE
- *
- * All original source licensed under the Apache License 2.0. All modifications are licensed under the Apache
- * License 2.0 by Amazon Web Services.
- */
-@SdkInternalApi
-public class ChangeMethodInvocationReturnType extends Recipe {
-
- @Option(displayName = "Method pattern",
- description = "A method pattern is used to find matching method invocations.",
- example = "org.mockito.Matchers anyVararg()")
- private final String methodPattern;
-
- @Option(displayName = "New method invocation return type",
- description = "The fully qualified new return type of method invocation.",
- example = "long")
- private final String newReturnType;
-
- @JsonCreator
- public ChangeMethodInvocationReturnType(@JsonProperty("methodPattern") String methodPattern,
- @JsonProperty("newReturnType") String newReturnType) {
- this.methodPattern = methodPattern;
- this.newReturnType = newReturnType;
- }
-
- @Override
- public String getDisplayName() {
- return "Change method invocation return type";
- }
-
- @Override
- public String getDescription() {
- return "Changes the return type of a method invocation.";
- }
-
- @Override
- public TreeVisitor, ExecutionContext> getVisitor() {
- return new JavaIsoVisitor() {
- private final MethodMatcher methodMatcher = new MethodMatcher(methodPattern, false);
-
- private boolean methodUpdated;
-
- @Override
- public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) {
- J.MethodInvocation m = super.visitMethodInvocation(method, ctx);
- JavaType.Method type = m.getMethodType();
- if (methodMatcher.matches(method) && type != null && !newReturnType.equals(type.getReturnType().toString())) {
- type = type.withReturnType(JavaType.buildType(newReturnType));
- m = m.withMethodType(type);
- if (m.getName().getType() != null) {
- m = m.withName(m.getName().withType(type));
- }
- methodUpdated = true;
- }
- return m;
- }
-
- @Override
- public J.VariableDeclarations visitVariableDeclarations(J.VariableDeclarations multiVariable, ExecutionContext ctx) {
- methodUpdated = false;
- JavaType.FullyQualified originalType = multiVariable.getTypeAsFullyQualified();
- J.VariableDeclarations mv = super.visitVariableDeclarations(multiVariable, ctx);
-
- if (methodUpdated) {
- JavaType newType = JavaType.buildType(newReturnType);
- JavaType.FullyQualified newFieldType = TypeUtils.asFullyQualified(newType);
-
- maybeAddImport(newFieldType);
- maybeRemoveImport(originalType);
-
- mv = mv.withTypeExpression(mv.getTypeExpression() == null ?
- null :
- new J.Identifier(mv.getTypeExpression().getId(),
- mv.getTypeExpression().getPrefix(),
- Markers.EMPTY,
- Collections.emptyList(),
- newReturnType.substring(newReturnType.lastIndexOf('.') + 1),
- newType,
- null
- )
- );
-
- mv = mv.withVariables(ListUtils.map(mv.getVariables(), var -> {
- JavaType.FullyQualified varType = TypeUtils.asFullyQualified(var.getType());
- if (varType != null && !varType.equals(newType)) {
- return var.withType(newType).withName(var.getName().withType(newType));
- }
- return var;
- }));
- }
-
- return mv;
- }
- };
- }
-}
\ No newline at end of file
diff --git a/v2-migration/src/main/resources/META-INF/rewrite/change-s3-types.yml b/v2-migration/src/main/resources/META-INF/rewrite/change-s3-types.yml
index 0c8096334214..0d0e3391c8e1 100644
--- a/v2-migration/src/main/resources/META-INF/rewrite/change-s3-types.yml
+++ b/v2-migration/src/main/resources/META-INF/rewrite/change-s3-types.yml
@@ -17,82 +17,82 @@ name: software.amazon.awssdk.v2migration.S3TypesToV2
displayName: Change S3 types to v2.
description: Change S3 types to v2.
recipeList:
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getObject(com.amazonaws.services.s3.model.GetObjectRequest, java.io.File)
newReturnType: software.amazon.awssdk.services.s3.model.GetObjectResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketAcl(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketAclResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getObjectAcl(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetObjectAclResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketAccelerateConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketAccelerateConfigurationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketLifecycleConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketLifecycleConfigurationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketCrossOriginConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketCorsResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketLoggingConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketLoggingResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketNotificationConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketNotificationConfigurationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketPolicy(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketPolicyResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketReplicationConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketReplicationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketTaggingConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketTaggingResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketVersioningConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketVersioningResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3 getBucketWebsiteConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketWebsiteResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getObject(com.amazonaws.services.s3.model.GetObjectRequest, java.io.File)
newReturnType: software.amazon.awssdk.services.s3.model.GetObjectResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketAcl(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketAclResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getObjectAcl(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetObjectAclResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketAccelerateConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketAccelerateConfigurationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketLifecycleConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketLifecycleConfigurationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketCrossOriginConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketCorsResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketLoggingConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketLoggingResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketNotificationConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketNotificationConfigurationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketPolicy(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketPolicyResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketReplicationConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketReplicationResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketTaggingConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketTaggingResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketVersioningConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketVersioningResponse
- - software.amazon.awssdk.v2migration.openrewrite.ChangeMethodInvocationReturnType:
+ - org.openrewrite.java.ChangeMethodInvocationReturnType:
methodPattern: com.amazonaws.services.s3.AmazonS3Client getBucketWebsiteConfiguration(..)
newReturnType: software.amazon.awssdk.services.s3.model.GetBucketWebsiteResponse
\ No newline at end of file
diff --git a/v2-migration/src/test/java/software/amazon/awssdk/v2migration/ChangeConfigTypesTest.java b/v2-migration/src/test/java/software/amazon/awssdk/v2migration/ChangeConfigTypesTest.java
index 3ea66b1e7ebd..11ef971526d2 100644
--- a/v2-migration/src/test/java/software/amazon/awssdk/v2migration/ChangeConfigTypesTest.java
+++ b/v2-migration/src/test/java/software/amazon/awssdk/v2migration/ChangeConfigTypesTest.java
@@ -29,6 +29,7 @@
import org.openrewrite.java.Java8Parser;
import org.openrewrite.test.RecipeSpec;
import org.openrewrite.test.RewriteTest;
+import org.openrewrite.test.TypeValidation;
public class ChangeConfigTypesTest implements RewriteTest {
@@ -46,7 +47,8 @@ public void defaults(RecipeSpec spec) {
throw new RuntimeException(e);
}
- spec.parser(Java8Parser.builder().classpath("aws-java-sdk-sqs", "sdk-core"));
+ spec.parser(Java8Parser.builder().classpath("aws-java-sdk-sqs", "sdk-core"))
+ .typeValidationOptions(TypeValidation.all().immutableExecutionContext(false));
}
@Test