diff --git a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/PlatformAndKeywordSanitizer.java b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/PlatformAndKeywordSanitizer.java index 0035c50d12b..a4df6df5b8d 100644 --- a/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/PlatformAndKeywordSanitizer.java +++ b/tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/cpp/PlatformAndKeywordSanitizer.java @@ -166,6 +166,17 @@ public class PlatformAndKeywordSanitizer { public static String fixEnumValue (String enumValue) { String enumMemberName = enumValue; + // NOT_SET is a special value in C++ SDK enums used in two scenarios: + // 1. When an enum cannot be deserialized from a string value + // 2. When accessing an enum created from an invalid string value + // Note: Services may still use NOT_SET as a valid key in maps + // + // TODO: model this as a crt or std optional to represent "absent of value" + // instead of using a common-ish predetermined value. + if (enumValue.equals("NOT_SET")) { + return "NOT_SET_VALUE"; + } + for (String invalid : ENUM_CHARS_MAPPING.keySet()) { enumMemberName = enumMemberName.replace(invalid, ENUM_CHARS_MAPPING.get(invalid)); }