Skip to content

Commit 7b946c1

Browse files
authored
special cases for Enum Recipe added (#5934)
* special cases for Enum Recipe added * minor change * checkstyle fixed * comments addressed
1 parent 16f47db commit 7b946c1

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
*/
1515

1616
package foo.bar;
17-
17+
import software.amazon.awssdk.services.s3.model.Event;
18+
import software.amazon.awssdk.services.s3.model.StorageClass;
1819
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;
1920
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
2021
import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest;
@@ -27,6 +28,9 @@ public class Enums {
2728
public static void main(String... args) {
2829
QueueAttributeName qan = QueueAttributeName.DELAY_SECONDS;
2930
QueueAttributeName qan2 = QueueAttributeName.ALL;
31+
StorageClass sc1 = StorageClass.STANDARD_IA;
32+
StorageClass sc2 = StorageClass.ONEZONE_IA;
33+
Event se = Event.S3_OBJECT_CREATED;
3034
System.out.println(qan);
3135
System.out.println(qan2);
3236

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
package foo.bar;
1717

18+
import com.amazonaws.services.s3.model.S3Event;
19+
import com.amazonaws.services.s3.model.StorageClass;
1820
import com.amazonaws.services.sqs.model.QueueAttributeName;
1921
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
2022
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;
@@ -27,6 +29,9 @@ public class Enums {
2729
public static void main(String... args) {
2830
QueueAttributeName qan = QueueAttributeName.DelaySeconds;
2931
QueueAttributeName qan2 = QueueAttributeName.All;
32+
StorageClass sc1 = StorageClass.StandardInfrequentAccess;
33+
StorageClass sc2 = StorageClass.OneZoneInfrequentAccess;
34+
S3Event se = S3Event.ObjectCreated;
3035
System.out.println(qan);
3136
System.out.println(qan2);
3237

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

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717

1818
import static software.amazon.awssdk.utils.internal.CodegenNamingUtils.splitOnWordBoundaries;
1919

20+
import java.util.HashMap;
2021
import java.util.HashSet;
22+
import java.util.Map;
2123
import java.util.Set;
2224
import org.openrewrite.ExecutionContext;
2325
import org.openrewrite.Recipe;
@@ -35,6 +37,15 @@ public class EnumCasingToV2 extends Recipe {
3537

3638
private static Set<String> ENUMS = new HashSet<>();
3739

40+
private static final Map<String, String> SPECIAL_CASES = new HashMap<>();
41+
42+
static {
43+
SPECIAL_CASES.put("StandardInfrequentAccess", "STANDARD_IA");
44+
SPECIAL_CASES.put("OneZoneInfrequentAccess", "ONEZONE_IA");
45+
SPECIAL_CASES.put("GlacierInstantRetrieval", "GLACIER_IR");
46+
SPECIAL_CASES.put("textORcsv", "TEXT_OR_CSV");
47+
}
48+
3849
@Override
3950
public String getDisplayName() {
4051
return "V1 Enum Casing to V2";
@@ -51,8 +62,11 @@ public TreeVisitor<?, ExecutionContext> getVisitor() {
5162
}
5263

5364
private static String v2Casing(String enumValue) {
65+
if (SPECIAL_CASES.containsKey(enumValue)) {
66+
return SPECIAL_CASES.get(enumValue);
67+
}
68+
5469
String result = enumValue;
55-
result = result.replaceAll("textORcsv", "TEXT_OR_CSV");
5670
result = String.join("_", splitOnWordBoundaries(result));
5771
return StringUtils.upperCase(result);
5872
}
@@ -64,6 +78,9 @@ public J.FieldAccess visitFieldAccess(J.FieldAccess fieldAccess, ExecutionContex
6478

6579
if (isV2EnumValue(fa)) {
6680
String v2Casing = v2Casing(fa.getSimpleName());
81+
if (isS3EventsEnum(fa)) {
82+
v2Casing = "S3_" + v2Casing;
83+
}
6784
ENUMS.add(v2Casing);
6885
return fa.withName(fa.getName().withSimpleName(v2Casing));
6986
}
@@ -96,5 +113,14 @@ public boolean isV2EnumValue(J.FieldAccess fa) {
96113
}
97114
return false;
98115
}
116+
117+
private boolean isS3EventsEnum(J.FieldAccess fa) {
118+
JavaType javaType = fa.getTarget().getType();
119+
JavaType.FullyQualified fullyQualified = TypeUtils.asFullyQualified(javaType);
120+
return fullyQualified != null && fullyQualified.getClassName().equals("Event")
121+
&& fullyQualified.getPackageName().equals("software.amazon.awssdk.services.s3.model")
122+
&& !fa.getSimpleName().startsWith("S3_");
123+
}
124+
99125
}
100126
}

v2-migration/src/main/java/software/amazon/awssdk/v2migration/internal/utils/NamingConversionUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ public final class NamingConversionUtils {
182182
S3_POJO_MAPPING.put("ReplicationFilter", "ReplicationRuleFilter");
183183
S3_POJO_MAPPING.put("ReplicationAndOperator", "ReplicationRuleAndOperator");
184184
S3_POJO_MAPPING.put("PartETag", "CompletedPart");
185+
186+
//Special Enum mapping
187+
S3_POJO_MAPPING.put("S3Event", "Event");
185188
}
186189

187190
static {

0 commit comments

Comments
 (0)