From 0ceb3675f09dd34dc9bff12d6cff7a402e0f5008 Mon Sep 17 00:00:00 2001 From: Jason Del Ponte Date: Thu, 7 Jan 2021 13:39:19 -0800 Subject: [PATCH] codegen: Fix enum value generated name to not be lower cased (#252) Fixes the generated enum value names to not be lower cased when capitalized. Related to https://github.com/aws/aws-sdk-go-v2/issues/1013 --- .../software/amazon/smithy/go/codegen/EnumGenerator.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/EnumGenerator.java b/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/EnumGenerator.java index db85e046d..e689d0aac 100644 --- a/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/EnumGenerator.java +++ b/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/EnumGenerator.java @@ -59,8 +59,15 @@ public void run() { for (EnumDefinition definition : enumTrait.getValues()) { StringBuilder labelBuilder = new StringBuilder(symbol.getName()); String name = definition.getName().get(); + for (String part : name.split("(?U)[\\W_]")) { - labelBuilder.append(StringUtils.capitalize(part.toLowerCase(Locale.US))); + if (part.matches(".*[a-z].*") && part.matches(".*[A-Z].*")) { + // Mixed case names should not be changed other than first letter capitalized. + labelBuilder.append(StringUtils.capitalize(part)); + } else { + // For all non-mixed case parts title case first letter, followed by all other lower cased. + labelBuilder.append(StringUtils.capitalize(part.toLowerCase(Locale.US))); + } } String label = labelBuilder.toString();