diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/Enums.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/Enums.java index 4964fb9bc07b..cc5bdefe7d93 100644 --- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/Enums.java +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/Enums.java @@ -15,6 +15,7 @@ package foo.bar; import software.amazon.awssdk.services.s3.model.Event; +import software.amazon.awssdk.services.s3.model.JSONType; import software.amazon.awssdk.services.s3.model.StorageClass; import software.amazon.awssdk.services.sqs.model.MessageAttributeValue; import software.amazon.awssdk.services.sqs.model.QueueAttributeName; @@ -28,19 +29,19 @@ public class Enums { public static void main(String... args) { QueueAttributeName qan = QueueAttributeName.DELAY_SECONDS; QueueAttributeName qan2 = QueueAttributeName.ALL; - StorageClass sc1 = StorageClass.STANDARD_IA; - StorageClass sc2 = StorageClass.ONEZONE_IA; - Event se = Event.S3_OBJECT_CREATED; - System.out.println(qan); - System.out.println(qan2); ReceiveMessageRequest v1Request = ReceiveMessageRequest.builder() .build(); List attributes = v1Request.attributeNamesAsStrings(); - System.out.println(attributes); SendMessageRequest v2Request = SendMessageRequest.builder().build(); Map messageAttributes = v2Request.messageAttributes(); - System.out.println(messageAttributes); + } + + public void s3Enums() { + StorageClass sc1 = StorageClass.STANDARD_IA; + StorageClass sc2 = StorageClass.ONEZONE_IA; + Event se = Event.S3_OBJECT_CREATED; + JSONType jsonType = JSONType.DOCUMENT; } } \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3.java index ff3bd49cbcc2..53c70da71c4b 100644 --- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3.java +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3.java @@ -82,6 +82,7 @@ import software.amazon.awssdk.services.s3.model.HeadObjectResponse; import software.amazon.awssdk.services.s3.model.IntelligentTieringConfiguration; import software.amazon.awssdk.services.s3.model.InventoryConfiguration; +import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListObjectVersionsRequest; import software.amazon.awssdk.services.s3.model.ListObjectsRequest; import software.amazon.awssdk.services.s3.model.ListObjectsResponse; @@ -89,6 +90,7 @@ import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; import software.amazon.awssdk.services.s3.model.MetricsConfiguration; import software.amazon.awssdk.services.s3.model.NotificationConfiguration; +import software.amazon.awssdk.services.s3.model.Owner; import software.amazon.awssdk.services.s3.model.OwnershipControls; import software.amazon.awssdk.services.s3.model.Payer; import software.amazon.awssdk.services.s3.model.PutBucketAccelerateConfigurationRequest; @@ -433,4 +435,15 @@ private void generatePresignedUrl(S3Client s3, String bucket, String key, Date e .signatureDuration(Duration.between(Instant.now(), expiration.toInstant()))) .url(); } + + private void getS3AccountOwner(S3Client s3) { + Owner owner = s3.listBuckets().owner(); + + Owner owner2 = s3.listBuckets(ListBucketsRequest.builder() + .build()).owner(); + + ListBucketsRequest getS3AccountOwnerRequest = ListBucketsRequest.builder() + .build(); + Owner owner3 = s3.listBuckets(getS3AccountOwnerRequest).owner(); + } } \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Pojos.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Pojos.java new file mode 100644 index 000000000000..f3b135961727 --- /dev/null +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3Pojos.java @@ -0,0 +1,77 @@ +/* + * 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 foo.bar; + +import java.util.Arrays; +import software.amazon.awssdk.services.s3.model.AccelerateConfiguration; +import software.amazon.awssdk.services.s3.model.Bucket; +import software.amazon.awssdk.services.s3.model.CSVInput; +import software.amazon.awssdk.services.s3.model.CSVOutput; +import software.amazon.awssdk.services.s3.model.Condition; +import software.amazon.awssdk.services.s3.model.Destination; +import software.amazon.awssdk.services.s3.model.GetBucketVersioningResponse; +import software.amazon.awssdk.services.s3.model.Grantee; +import software.amazon.awssdk.services.s3.model.JSONInput; +import software.amazon.awssdk.services.s3.model.JSONOutput; +import software.amazon.awssdk.services.s3.model.ListMultipartUploadsResponse; +import software.amazon.awssdk.services.s3.model.ListPartsResponse; +import software.amazon.awssdk.services.s3.model.MetadataEntry; +import software.amazon.awssdk.services.s3.model.Part; +import software.amazon.awssdk.services.s3.model.RedirectAllRequestsTo; +import software.amazon.awssdk.services.s3.model.S3Object; +import software.amazon.awssdk.services.s3.model.Tag; + +public class S3Pojos { + + public void s3Pojos(String bucket, String key, String id, String value) { + AccelerateConfiguration bucketAccelerateConfiguration = AccelerateConfiguration.builder().status("Enabled") + .build(); + MetadataEntry metadataEntry = MetadataEntry.builder().name("name").value(value) + .build(); + Tag tag = Tag.builder().key(key).value(value) + .build(); + Grantee canonicalGrantee = Grantee.builder().id(id) + .build(); + Grantee emailAddressGrantee = Grantee.builder().emailAddress(id) + .build(); + CSVInput csvInput = CSVInput.builder() + .build(); + CSVOutput csvOutput = CSVOutput.builder() + .build(); + JSONInput jsonInput = JSONInput.builder() + .build(); + JSONOutput jsonOutput = JSONOutput.builder() + .build(); + ListMultipartUploadsResponse multipartUploadListing = ListMultipartUploadsResponse.builder() + .build(); + ListPartsResponse partListing = ListPartsResponse.builder() + .build(); + Part partSummary = Part.builder() + .build(); + RedirectAllRequestsTo redirectRule = RedirectAllRequestsTo.builder() + .build(); + Destination replicationDestinationConfig = Destination.builder() + .build(); + Condition routingRuleCondition = Condition.builder() + .build(); + S3Object s3ObjectSummary = S3Object.builder() + .build(); + GetBucketVersioningResponse bucketVersioningConfiguration = GetBucketVersioningResponse.builder() + .build(); + Bucket bucketPojo = Bucket.builder().name("name") + .build(); + } +} \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3RequestConstructor.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3RequestConstructor.java index b4f1ca6b9d68..7e1fd8e4464a 100644 --- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3RequestConstructor.java +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/after/src/main/java/foo/bar/S3RequestConstructor.java @@ -67,6 +67,7 @@ import software.amazon.awssdk.services.s3.model.GetBucketPolicyStatusRequest; import software.amazon.awssdk.services.s3.model.GetBucketPolicyStatusResponse; import software.amazon.awssdk.services.s3.model.GetBucketReplicationRequest; +import software.amazon.awssdk.services.s3.model.GetBucketRequestPaymentRequest; import software.amazon.awssdk.services.s3.model.GetBucketTaggingRequest; import software.amazon.awssdk.services.s3.model.GetBucketVersioningRequest; import software.amazon.awssdk.services.s3.model.GetBucketWebsiteRequest; @@ -97,6 +98,7 @@ import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListObjectsRequest; import software.amazon.awssdk.services.s3.model.ListObjectsResponse; +import software.amazon.awssdk.services.s3.model.ListPartsRequest; import software.amazon.awssdk.services.s3.model.MetricsConfiguration; import software.amazon.awssdk.services.s3.model.NotificationConfiguration; import software.amazon.awssdk.services.s3.model.OwnershipControls; @@ -108,6 +110,7 @@ import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest; import software.amazon.awssdk.services.s3.model.PutBucketTaggingRequest; import software.amazon.awssdk.services.s3.model.ReplicationConfiguration; +import software.amazon.awssdk.services.s3.model.RestoreObjectRequest; import software.amazon.awssdk.services.s3.model.Tagging; import software.amazon.awssdk.services.s3.model.UploadPartCopyRequest; @@ -416,5 +419,17 @@ public void requestconstructor() { .build()) .build()); + DeleteObjectRequest deleteVersionRequest = DeleteObjectRequest.builder().bucket(bucketName).key(objectKey).versionId("id") + .build(); + + ListPartsRequest listPartsRequest = ListPartsRequest.builder().bucket(bucketName).key(objectKey).uploadId("id") + .build(); + + RestoreObjectRequest restoreObjectRequest = RestoreObjectRequest.builder().bucket(bucketName).key(objectKey) + .build(); + + GetBucketRequestPaymentRequest getRequestPaymentConfigurationRequest = + GetBucketRequestPaymentRequest.builder().bucket(bucketName) + .build(); } } \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/Enums.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/Enums.java index e81bb087510c..53a3b362a704 100644 --- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/Enums.java +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/Enums.java @@ -15,6 +15,7 @@ package foo.bar; +import com.amazonaws.services.s3.model.JSONType; import com.amazonaws.services.s3.model.S3Event; import com.amazonaws.services.s3.model.StorageClass; import com.amazonaws.services.sqs.model.QueueAttributeName; @@ -29,18 +30,18 @@ public class Enums { public static void main(String... args) { QueueAttributeName qan = QueueAttributeName.DelaySeconds; QueueAttributeName qan2 = QueueAttributeName.All; - StorageClass sc1 = StorageClass.StandardInfrequentAccess; - StorageClass sc2 = StorageClass.OneZoneInfrequentAccess; - S3Event se = S3Event.ObjectCreated; - System.out.println(qan); - System.out.println(qan2); ReceiveMessageRequest v1Request = new ReceiveMessageRequest(); List attributes = v1Request.getAttributeNames(); - System.out.println(attributes); SendMessageRequest v2Request = SendMessageRequest.builder().build(); Map messageAttributes = v2Request.messageAttributes(); - System.out.println(messageAttributes); + } + + public void s3Enums() { + StorageClass sc1 = StorageClass.StandardInfrequentAccess; + StorageClass sc2 = StorageClass.OneZoneInfrequentAccess; + S3Event se = S3Event.ObjectCreated; + JSONType jsonType = JSONType.DOCUMENT; } } \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3.java index 9a0ceaf83a38..c6241fe30514 100644 --- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3.java +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3.java @@ -38,6 +38,7 @@ import com.amazonaws.services.s3.model.GetBucketCrossOriginConfigurationRequest; import com.amazonaws.services.s3.model.GetObjectMetadataRequest; import com.amazonaws.services.s3.model.GetObjectRequest; +import com.amazonaws.services.s3.model.GetS3AccountOwnerRequest; import com.amazonaws.services.s3.model.HeadBucketRequest; import com.amazonaws.services.s3.model.HeadBucketResult; import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest; @@ -47,6 +48,7 @@ import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.ObjectMetadata; +import com.amazonaws.services.s3.model.Owner; import com.amazonaws.services.s3.model.PartETag; import com.amazonaws.services.s3.model.SetBucketCrossOriginConfigurationRequest; import com.amazonaws.services.s3.model.SetBucketLifecycleConfigurationRequest; @@ -272,4 +274,13 @@ private void generatePresignedUrl(AmazonS3 s3, String bucket, String key, Date e URL urlDelete = s3.generatePresignedUrl(bucket, key, expiration, HttpMethod.DELETE); } + + private void getS3AccountOwner(AmazonS3 s3) { + Owner owner = s3.getS3AccountOwner(); + + Owner owner2 = s3.getS3AccountOwner(new GetS3AccountOwnerRequest()); + + GetS3AccountOwnerRequest getS3AccountOwnerRequest = new GetS3AccountOwnerRequest(); + Owner owner3 = s3.getS3AccountOwner(getS3AccountOwnerRequest); + } } \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3Pojos.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3Pojos.java new file mode 100644 index 000000000000..88e03318e837 --- /dev/null +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3Pojos.java @@ -0,0 +1,60 @@ +/* + * 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 foo.bar; + +import com.amazonaws.services.s3.model.Bucket; +import com.amazonaws.services.s3.model.BucketAccelerateConfiguration; +import com.amazonaws.services.s3.model.BucketVersioningConfiguration; +import com.amazonaws.services.s3.model.CSVInput; +import com.amazonaws.services.s3.model.CSVOutput; +import com.amazonaws.services.s3.model.CanonicalGrantee; +import com.amazonaws.services.s3.model.EmailAddressGrantee; +import com.amazonaws.services.s3.model.JSONInput; +import com.amazonaws.services.s3.model.JSONOutput; +import com.amazonaws.services.s3.model.MetadataEntry; +import com.amazonaws.services.s3.model.MultipartUploadListing; +import com.amazonaws.services.s3.model.PartListing; +import com.amazonaws.services.s3.model.PartSummary; +import com.amazonaws.services.s3.model.RedirectRule; +import com.amazonaws.services.s3.model.ReplicationDestinationConfig; +import com.amazonaws.services.s3.model.RoutingRuleCondition; +import com.amazonaws.services.s3.model.S3ObjectSummary; +import com.amazonaws.services.s3.model.Tag; +import java.util.Arrays; + +public class S3Pojos { + + public void s3Pojos(String bucket, String key, String id, String value) { + BucketAccelerateConfiguration bucketAccelerateConfiguration = new BucketAccelerateConfiguration("Enabled"); + MetadataEntry metadataEntry = new MetadataEntry("name", value); + Tag tag = new Tag(key, value); + CanonicalGrantee canonicalGrantee = new CanonicalGrantee(id); + EmailAddressGrantee emailAddressGrantee = new EmailAddressGrantee(id); + CSVInput csvInput = new CSVInput(); + CSVOutput csvOutput = new CSVOutput(); + JSONInput jsonInput = new JSONInput(); + JSONOutput jsonOutput = new JSONOutput(); + MultipartUploadListing multipartUploadListing = new MultipartUploadListing(); + PartListing partListing = new PartListing(); + PartSummary partSummary = new PartSummary(); + RedirectRule redirectRule = new RedirectRule(); + ReplicationDestinationConfig replicationDestinationConfig = new ReplicationDestinationConfig(); + RoutingRuleCondition routingRuleCondition = new RoutingRuleCondition(); + S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); + BucketVersioningConfiguration bucketVersioningConfiguration = new BucketVersioningConfiguration(); + Bucket bucketPojo = new Bucket("name"); + } +} \ No newline at end of file diff --git a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3RequestConstructor.java b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3RequestConstructor.java index db7c818a8744..a9a0c290f339 100644 --- a/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3RequestConstructor.java +++ b/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/maven/before/src/main/java/foo/bar/S3RequestConstructor.java @@ -44,6 +44,7 @@ import com.amazonaws.services.s3.model.DeleteObjectTaggingRequest; import com.amazonaws.services.s3.model.DeleteObjectsRequest; import com.amazonaws.services.s3.model.DeletePublicAccessBlockRequest; +import com.amazonaws.services.s3.model.DeleteVersionRequest; import com.amazonaws.services.s3.model.GetBucketAccelerateConfigurationRequest; import com.amazonaws.services.s3.model.GetBucketAclRequest; import com.amazonaws.services.s3.model.GetBucketAnalyticsConfigurationRequest; @@ -83,6 +84,7 @@ import com.amazonaws.services.s3.model.GetObjectTaggingResult; import com.amazonaws.services.s3.model.GetPublicAccessBlockRequest; import com.amazonaws.services.s3.model.GetPublicAccessBlockResult; +import com.amazonaws.services.s3.model.GetRequestPaymentConfigurationRequest; import com.amazonaws.services.s3.model.HeadBucketRequest; import com.amazonaws.services.s3.model.ListBucketAnalyticsConfigurationsRequest; import com.amazonaws.services.s3.model.ListBucketAnalyticsConfigurationsResult; @@ -94,8 +96,10 @@ import com.amazonaws.services.s3.model.ListBucketMetricsConfigurationsResult; import com.amazonaws.services.s3.model.ListBucketsRequest; import com.amazonaws.services.s3.model.ListObjectsRequest; +import com.amazonaws.services.s3.model.ListPartsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.ObjectMetadata; +import com.amazonaws.services.s3.model.RestoreObjectRequest; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.SetBucketAnalyticsConfigurationRequest; import com.amazonaws.services.s3.model.SetBucketLifecycleConfigurationRequest; @@ -332,5 +336,13 @@ public void requestconstructor() { s3.setBucketTaggingConfiguration( new SetBucketTaggingConfigurationRequest(bucketName,new BucketTaggingConfiguration())); + DeleteVersionRequest deleteVersionRequest = new DeleteVersionRequest(bucketName, objectKey, "id"); + + ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, objectKey, "id"); + + RestoreObjectRequest restoreObjectRequest = new RestoreObjectRequest(bucketName, objectKey); + + GetRequestPaymentConfigurationRequest getRequestPaymentConfigurationRequest = + new GetRequestPaymentConfigurationRequest(bucketName); } } \ No newline at end of file diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/ChangeSdkType.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/ChangeSdkType.java index 8210955ae8de..193ef636f9b5 100644 --- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/ChangeSdkType.java +++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/ChangeSdkType.java @@ -20,6 +20,7 @@ import static software.amazon.awssdk.v2migration.internal.utils.SdkTypeUtils.isSupportedV1Class; import static software.amazon.awssdk.v2migration.internal.utils.SdkTypeUtils.isSupportedV1ClientClass; import static software.amazon.awssdk.v2migration.internal.utils.SdkTypeUtils.isV1ClientClass; +import static software.amazon.awssdk.v2migration.internal.utils.SdkTypeUtils.shouldSkip; import java.util.ArrayList; import java.util.HashSet; @@ -120,6 +121,10 @@ public J visitImport(J.Import anImport, ExecutionContext ctx) { return anImport; } + if (shouldSkip(fullyQualified.getFullyQualifiedName())) { + return anImport; + } + String currentFqcn = fullyQualified.getFullyQualifiedName(); if (isSupportedV1Class(fullyQualified)) { @@ -316,7 +321,8 @@ public J visitIdentifier(J.Identifier ident, ExecutionContext ctx) { } private void storeV1ClassMetadata(String currentFqcn) { - if (oldTypeToNewType.containsKey(currentFqcn)) { + if (oldTypeToNewType.containsKey(currentFqcn) + || shouldSkip(currentFqcn)) { return; } diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3NonStreamingRequestToV2Complex.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3NonStreamingRequestToV2Complex.java index f3b86e29c6a2..df1aacf1c1d4 100644 --- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3NonStreamingRequestToV2Complex.java +++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/S3NonStreamingRequestToV2Complex.java @@ -18,9 +18,11 @@ import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.V2_S3_MODEL_PKG; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.V2_S3_PKG; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.assignedVariableHttpMethodNotSupportedComment; +import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.hasArguments; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.httpMethodNotSupportedComment; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.isCompleteMpuRequestMultipartUploadSetter; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.isGeneratePresignedUrl; +import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.isGetS3AccountOwner; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.isUnsupportedHttpMethod; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.presignerSingleInstanceSuggestion; import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.requestPojoTransformNotSupportedComment; @@ -88,6 +90,9 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu if (isGeneratePresignedUrl(method)) { return maybeAutoFormat(method, transformGeneratePresignedUrl(method), executionContext); } + if (isGetS3AccountOwner(method)) { + return transformGetS3AccountOwner(method); + } if (DISABLE_REQUESTER_PAYS.matches(method, false)) { return transformSetRequesterPays(method, false); } @@ -188,6 +193,19 @@ private J.MethodInvocation transformCompleteMpuRequestCompletedPartsArg(J.Method method.getArguments().get(0)); } + private J.MethodInvocation transformGetS3AccountOwner(J.MethodInvocation method) { + if (hasArguments(method)) { + String v2Method = "#{any()}.listBuckets(#{any()}).owner()"; + return JavaTemplate.builder(v2Method).build() + .apply(getCursor(), method.getCoordinates().replace(), method.getSelect(), + method.getArguments().get(0)); + } + + String v2Method = "#{any()}.listBuckets().owner()"; + return JavaTemplate.builder(v2Method).build() + .apply(getCursor(), method.getCoordinates().replace(), method.getSelect()); + } + private J.MethodInvocation transformCreateBucket(J.MethodInvocation method) { String v2Method = "#{any()}.createBucket(CreateBucketRequest.builder().bucket(#{any()})" + ".createBucketConfiguration(CreateBucketConfiguration.builder().locationConstraint(#{any()})" diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/V1SetterToV2.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/V1SetterToV2.java index edc55c401823..9fe68121ee3e 100644 --- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/V1SetterToV2.java +++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/V1SetterToV2.java @@ -102,6 +102,10 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation previousMetho return method; } + if (methodName.contains("BucketName")) { + methodName = methodName.replace("BucketName", "Bucket"); + } + if (NamingUtils.isWither(methodName)) { methodName = NamingUtils.removeWith(methodName); } else if (NamingUtils.isSetter(methodName) && isS3PutObjectOrObjectMetadata(method)) { @@ -109,10 +113,6 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation previousMetho methodName = NamingUtils.removeSet(methodName); } - if ("bucketName".equals(methodName)) { - methodName = "bucket"; - } - if (isClientBuilderClass(methodType)) { methodName = CLIENT_CONFIG_NAMING_MAPPING.getOrDefault(methodName, methodName); } diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/NamingConversionUtils.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/NamingConversionUtils.java index 50edbb9e6716..72ffb12534b4 100644 --- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/NamingConversionUtils.java +++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/NamingConversionUtils.java @@ -146,6 +146,7 @@ public final class NamingConversionUtils { S3_POJO_MAPPING.put("GetBucketReplicationConfigurationRequest", "GetBucketReplicationRequest"); S3_POJO_MAPPING.put("GetBucketTaggingConfigurationRequest", "GetBucketTaggingRequest"); S3_POJO_MAPPING.put("GetBucketWebsiteConfigurationRequest", "GetBucketWebsiteRequest"); + S3_POJO_MAPPING.put("GetRequestPaymentConfigurationRequest", "GetBucketRequestPaymentRequest"); S3_POJO_MAPPING.put("GetObjectMetadataRequest", "HeadObjectRequest"); S3_POJO_MAPPING.put("InitiateMultipartUploadRequest", "CreateMultipartUploadRequest"); S3_POJO_MAPPING.put("InitiateMultipartUploadResponse", "CreateMultipartUploadResponse"); @@ -155,18 +156,10 @@ public final class NamingConversionUtils { S3_POJO_MAPPING.put("CopyPartResponse", "UploadPartCopyResponse"); S3_POJO_MAPPING.put("SetBucketCrossOriginConfigurationRequest", "PutBucketCorsRequest"); - S3_POJO_MAPPING.put("SetBucketPolicyRequest", "PutBucketPolicyRequest"); - S3_POJO_MAPPING.put("SetBucketAccelerateConfigurationRequest", "PutBucketAccelerateConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketAnalyticsConfigurationRequest", "PutBucketAnalyticsConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketIntelligentTieringConfigurationRequest", "PutBucketIntelligentTieringConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketInventoryConfigurationRequest", "PutBucketInventoryConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketLifecycleConfigurationRequest", "PutBucketLifecycleConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketMetricsConfigurationRequest", "PutBucketMetricsConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketNotificationConfigurationRequest", "PutBucketNotificationConfigurationRequest"); - S3_POJO_MAPPING.put("SetBucketOwnershipControlsRequest", "PutBucketOwnershipControlsRequest"); S3_POJO_MAPPING.put("SetBucketReplicationConfigurationRequest", "PutBucketReplicationRequest"); S3_POJO_MAPPING.put("SetBucketTaggingConfigurationRequest", "PutBucketTaggingRequest"); S3_POJO_MAPPING.put("SetBucketWebsiteConfigurationRequest", "PutBucketWebsiteRequest"); + S3_POJO_MAPPING.put("SetRequestPaymentConfigurationRequest", "PutBucketRequestPaymentRequest"); S3_POJO_MAPPING.put("CorsRule", "CORSRule"); S3_POJO_MAPPING.put("BucketCrossOriginConfiguration", "CORSConfiguration"); @@ -182,6 +175,17 @@ public final class NamingConversionUtils { S3_POJO_MAPPING.put("PartETag", "CompletedPart"); S3_POJO_MAPPING.put("ObjectTagging", "Tagging"); S3_POJO_MAPPING.put("AccessControlList", "AccessControlPolicy"); + S3_POJO_MAPPING.put("BucketPolicy", "GetBucketPolicyResponse"); + S3_POJO_MAPPING.put("CanonicalGrantee", "Grantee"); + S3_POJO_MAPPING.put("EmailAddressGrantee", "Grantee"); + S3_POJO_MAPPING.put("GetS3AccountOwnerRequest", "ListBucketsRequest"); + S3_POJO_MAPPING.put("MultipartUploadListing", "ListMultipartUploadsResponse"); + S3_POJO_MAPPING.put("PartListing", "ListPartsResponse"); + S3_POJO_MAPPING.put("PartSummary", "Part"); + S3_POJO_MAPPING.put("RedirectRule", "RedirectAllRequestsTo"); + S3_POJO_MAPPING.put("ReplicationDestinationConfig", "Destination"); + S3_POJO_MAPPING.put("RoutingRuleCondition", "Condition"); + S3_POJO_MAPPING.put("S3ObjectSummary", "S3Object"); //Special Enum mapping S3_POJO_MAPPING.put("S3Event", "Event"); @@ -190,6 +194,7 @@ public final class NamingConversionUtils { // used as input to Request POJOs and returned as Response POJOs S3_POJO_MAPPING.put("ObjectMetadata", "HeadObjectResponse"); S3_POJO_MAPPING.put("ObjectListing", "ListObjectsResponse"); + S3_POJO_MAPPING.put("BucketVersioningConfiguration", "GetBucketVersioningResponse"); // v2 also has BucketCannedACL S3_POJO_MAPPING.put("CannedAccessControlList", "ObjectCannedACL"); } @@ -218,7 +223,7 @@ public static String getV2Equivalent(String currentFqcn) { String v2PackagePrefix = packagePrefix.replace(V1_PACKAGE_PREFIX, V2_PACKAGE_PREFIX); v2PackagePrefix = checkPackageServiceNameForV2Suffix(v2PackagePrefix); - String v2ClassName = CodegenNamingUtils.pascalCase(v1ClassName); + String v2ClassName = pascalCaseIfApplicable(v1ClassName); if (Stream.of("Abstract", "Amazon", "AWS").anyMatch(v1ClassName::startsWith)) { v2ClassName = getV2ClientOrExceptionEquivalent(v1ClassName); } else if (v1ClassName.endsWith("Result")) { @@ -226,8 +231,13 @@ public static String getV2Equivalent(String currentFqcn) { v2ClassName = v1ClassName.substring(0, lastIndex) + "Response"; } - if (isS3ModelClass(v2PackagePrefix) && S3_POJO_MAPPING.containsKey(v2ClassName)) { - v2ClassName = S3_POJO_MAPPING.get(v2ClassName); + if (isS3ModelClass(v2PackagePrefix)) { + if (S3_POJO_MAPPING.containsKey(v2ClassName)) { + v2ClassName = S3_POJO_MAPPING.get(v2ClassName); + } + if (v2ClassName.startsWith("Set")) { + v2ClassName = v2ClassName.replace("Set", "Put"); + } } return v2PackagePrefix + "." + v2ClassName; @@ -288,7 +298,7 @@ private static String getV2ClientOrExceptionEquivalent(String className) { } } - String v2Style = CodegenNamingUtils.pascalCase(className); + String v2Style = pascalCaseIfApplicable(className); if (className.endsWith("Exception")) { return v2Style; @@ -300,4 +310,12 @@ private static String getV2ClientOrExceptionEquivalent(String className) { return v2Style; } + + private static String pascalCaseIfApplicable(String className) { + if (className.startsWith("CSV") || className.startsWith("JSON")) { + return className; + } + + return CodegenNamingUtils.pascalCase(className); + } } diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/S3TransformUtils.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/S3TransformUtils.java index adad6c5d8fc0..c4dc49f276f4 100644 --- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/S3TransformUtils.java +++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/S3TransformUtils.java @@ -244,6 +244,11 @@ public static boolean isGeneratePresignedUrl(J.MethodInvocation method) { && TypeUtils.isAssignableTo(V2_S3_CLIENT, method.getSelect().getType()); } + public static boolean isGetS3AccountOwner(J.MethodInvocation method) { + return "getS3AccountOwner".equals(method.getSimpleName()) + && TypeUtils.isAssignableTo(V2_S3_CLIENT, method.getSelect().getType()); + } + public static boolean isUnsupportedHttpMethod(String httpMethod) { return Arrays.asList("Head", "Post", "Patch").contains(httpMethod); } diff --git a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/SdkTypeUtils.java b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/SdkTypeUtils.java index 667370ef1ed0..722d0b526cd2 100644 --- a/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/SdkTypeUtils.java +++ b/v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/SdkTypeUtils.java @@ -15,10 +15,11 @@ package software.amazon.awssdk.v2migration.internal.utils; -import java.util.Arrays; +import static software.amazon.awssdk.v2migration.internal.utils.S3TransformUtils.V1_S3_MODEL_PKG; + +import java.util.Collection; import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.regex.Pattern; import org.openrewrite.java.tree.JavaType; import org.openrewrite.java.tree.TypeUtils; @@ -111,8 +112,7 @@ public final class SdkTypeUtils { ProcessCredentialsProvider.Builder.class.getCanonicalName()) .build(); - private static final Set V2_CORE_CLASS_BUILDERS = - new HashSet<>(V2_CORE_CLASS_TO_BUILDER.values()); + private static final Collection V2_CORE_CLASS_BUILDERS = new HashSet<>(V2_CORE_CLASS_TO_BUILDER.values()); private static final Pattern V2_CLIENT_BUILDER_PATTERN = Pattern.compile( "software\\.amazon\\.awssdk\\.services\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]+Builder"); @@ -120,39 +120,95 @@ public final class SdkTypeUtils { private static final Pattern V2_TRANSFER_MANAGER_PATTERN = Pattern.compile( "software\\.amazon\\.awssdk\\.transfer\\.s3\\.S3TransferManager"); - private static final Set V1_SERVICES_PACKAGE_NAMES = new HashSet<>(); - - private static final Set PACKAGES_AND_CLASSES_TO_SKIP = new HashSet<>( - Arrays.asList("com.amazonaws.services.s3.transfer", - "com.amazonaws.services.dynamodbv2.datamodeling", - "com.amazonaws.services.lambda.invoke", - "com.amazonaws.services.sns.message", - "com.amazonaws.services.dynamodbv2.xspec", - "com.amazonaws.services.dynamodbv2.document.spec", - "com.amazonaws.services.stepfunctions.builder", - "com.amazonaws.services.elasticmapreduce.util", - "com.amazonaws.services.elasticmapreduce.spi", - "com.amazonaws.services.simpleemail.AWSJavaMailTransport", - "com.amazonaws.services.kinesisvideo.AmazonKinesisVideoPutMedia", - "com.amazonaws.services.s3.model.PresignedUrlDownloadRequest", - "com.amazonaws.services.s3.model.PresignedUrlDownloadResult", - "com.amazonaws.services.s3.model.PresignedUrlDownloadConfig", - "com.amazonaws.services.s3.model.PresignedUrlUploadRequest", - "com.amazonaws.services.s3.model.PresignedUrlUploadResult", - // non-SDK libraries - // Lambda Runtime : aws-lambda-java-core - "com.amazonaws.services.lambda.runtime", - // Kinesis Client Library (KCL) : amazon-kinesis-client - "com.amazonaws.services.kinesis.clientlibrary", - "com.amazonaws.services.kinesis.leases", - "com.amazonaws.services.kinesis.metrics", - "com.amazonaws.services.kinesis.multilang", - // Kinesis Producer Library (KCL) : amazon-kinesis-producer - "com.amazonaws.services.kinesis.producer", - // S3 POJOs with no v2 equivalent - "com.amazonaws.services.s3.model.SSEAwsKeyManagementParams", - "com.amazonaws.services.s3.model.SSECustomerKey" - )); + private static final Collection PACKAGES_TO_SKIP = new HashSet<>(); + private static final Collection CLASSES_TO_SKIP = new HashSet<>(); + private static final Collection V1_SERVICES_PACKAGE_NAMES = new HashSet<>(); + + static { + PACKAGES_TO_SKIP.add("com.amazonaws.services.s3.transfer"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.dynamodbv2.datamodeling"); + + // parity features + PACKAGES_TO_SKIP.add("com.amazonaws.services.lambda.invoke"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.sns.message"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.dynamodbv2.xspec"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.dynamodbv2.document.spec"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.stepfunctions.builder"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.elasticmapreduce.util"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.elasticmapreduce.spi"); + + CLASSES_TO_SKIP.add("com.amazonaws.services.simpleemail.AWSJavaMailTransport"); + CLASSES_TO_SKIP.add("com.amazonaws.services.kinesisvideo.AmazonKinesisVideoPutMedia"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "PresignedUrlDownloadRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "PresignedUrlDownloadResult"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "PresignedUrlDownloadConfig"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "PresignedUrlUploadRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "PresignedUrlUploadResult"); + + // non-SDK library - Lambda Runtime : aws-lambda-java-core + PACKAGES_TO_SKIP.add("com.amazonaws.services.lambda.runtime"); + + // non-SDK library - Kinesis Client Library (KCL) : amazon-kinesis-client + PACKAGES_TO_SKIP.add("com.amazonaws.services.kinesis.clientlibrary"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.kinesis.leases"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.kinesis.metrics"); + PACKAGES_TO_SKIP.add("com.amazonaws.services.kinesis.multilang"); + + // non-SDK library - Kinesis Producer Library (KCL) : amazon-kinesis-producer + PACKAGES_TO_SKIP.add("com.amazonaws.services.kinesis.producer"); + + // S3 POJOs with no v2 equivalent + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "SSEAwsKeyManagementParams"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "SSECustomerKey"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "BucketLoggingConfiguration"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "Filter"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "GenericBucketRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "ListBucketsPaginatedRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "ListBucketsPaginatedResult"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "ListNextBatchOfObjectsRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "ListNextBatchOfVersionsRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "MultiFactorAuthentication"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "ResponseHeaderOverrides"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "S3AccelerateUnsupported"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "S3DataSource"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "S3ObjectId"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "S3ObjectIdBuilder"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "TagSet"); + + // S3 Enums with no v2 equivalent + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "GroupGrantee"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "Region"); + + // No S3-specific exceptions in v2 + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "AmazonS3Exception"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "IllegalBucketNameException"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "MultiObjectDeleteException"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "MultiObjectDeleteSlowdownException"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "SelectObjectContentEventException"); + + // S3 Encryption + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "CryptoConfiguration"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "CryptoConfigurationV2"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "CryptoKeyWrapAlgorithm"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "CryptoMode"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "CryptoRangeGetMode"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "CryptoStorageMode"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "EncryptedGetObjectRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "EncryptedInitiateMultipartUploadRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "EncryptedPutObjectRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "AmazonS3EncryptionClient"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "PutInstructionFileRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "InstructionFileId"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "KMSEncryptionMaterials"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "EncryptionMaterials"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "KMSEncryptionMaterialsProvider"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "StaticEncryptionMaterialsProvider"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "EncryptionMaterialsProvider"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "MaterialsDescriptionProvider"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "UploadObjectRequest"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "SimpleMaterialProvider"); + CLASSES_TO_SKIP.add(V1_S3_MODEL_PKG + "ExtraMaterialsDescription"); + } static { V1_SERVICES_PACKAGE_NAMES.add("com.amazonaws.services.sagemakeredgemanager"); @@ -551,11 +607,16 @@ public static boolean isCustomSdk(String fullyQualifiedName) { return !V1_SERVICES_PACKAGE_NAMES.contains(rootPackage); } + public static boolean shouldSkip(String fullyQualifiedName) { + return !fullyQualifiedName.startsWith("com.amazonaws.") + || PACKAGES_TO_SKIP.stream().anyMatch(fullyQualifiedName::startsWith) + || CLASSES_TO_SKIP.stream().anyMatch(fullyQualifiedName::equals); + } + public static boolean isSupportedV1Class(JavaType.FullyQualified fullyQualified) { String fullyQualifiedName = fullyQualified.getFullyQualifiedName(); - if (!fullyQualifiedName.startsWith("com.amazonaws.") || - PACKAGES_AND_CLASSES_TO_SKIP.stream().anyMatch(fullyQualifiedName::startsWith)) { + if (shouldSkip(fullyQualifiedName)) { return false; } diff --git a/v2-migration/src/main/resources/META-INF/rewrite/s3-methods-constructor-to-fluent.yml b/v2-migration/src/main/resources/META-INF/rewrite/s3-methods-constructor-to-fluent.yml index 0d5593d8e1c1..194234e987cb 100644 --- a/v2-migration/src/main/resources/META-INF/rewrite/s3-methods-constructor-to-fluent.yml +++ b/v2-migration/src/main/resources/META-INF/rewrite/s3-methods-constructor-to-fluent.yml @@ -292,6 +292,16 @@ recipeList: - withBucket - withKey - withVersionId + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.DeleteVersionRequest + parameterTypes: + - java.lang.String + - java.lang.String + - java.lang.String + fluentNames: + - withBucket + - withKey + - withVersionId - software.amazon.awssdk.v2migration.ConstructorToFluent: clzzFqcn: com.amazonaws.services.s3.model.DeleteObjectsRequest parameterTypes: @@ -506,6 +516,12 @@ recipeList: - com.amazonaws.services.s3.model.BucketAccelerateStatus fluentNames: - withStatus + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.BucketAccelerateConfiguration + parameterTypes: + - java.lang.String + fluentNames: + - withStatus - software.amazon.awssdk.v2migration.ConstructorToFluent: clzzFqcn: com.amazonaws.services.s3.model.SetBucketAccelerateConfigurationRequest parameterTypes: @@ -622,6 +638,64 @@ recipeList: - withKey - withUploadId - withMultipartUpload + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.ListPartsRequest + parameterTypes: + - java.lang.String + - java.lang.String + - java.lang.String + fluentNames: + - withBucket + - withKey + - withUploadId + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.MetadataEntry + parameterTypes: + - java.lang.String + - java.lang.String + fluentNames: + - withName + - withValue + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.RestoreObjectRequest + parameterTypes: + - java.lang.String + - java.lang.String + fluentNames: + - withBucket + - withKey + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.Tag + parameterTypes: + - java.lang.String + - java.lang.String + fluentNames: + - withKey + - withValue + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.CanonicalGrantee + parameterTypes: + - java.lang.String + fluentNames: + - withId + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.EmailAddressGrantee + parameterTypes: + - java.lang.String + fluentNames: + - withEmailAddress + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.GetRequestPaymentConfigurationRequest + parameterTypes: + - java.lang.String + fluentNames: + - withBucket + - software.amazon.awssdk.v2migration.ConstructorToFluent: + clzzFqcn: com.amazonaws.services.s3.model.Bucket + parameterTypes: + - java.lang.String + fluentNames: + - withName - software.amazon.awssdk.v2migration.ConstructorToFluent: clzzFqcn: com.amazonaws.services.s3.model.ObjectTagging parameterTypes: