From c510ea4b3d6ca63794c4d6813e44e837c946539b Mon Sep 17 00:00:00 2001 From: devhl-labs Date: Mon, 4 Sep 2023 11:28:32 -0400 Subject: [PATCH] Ensured enum entry name is unique (#16484) * ensured enum entry name is unique * ensured enum entry name is unique --- .../openapitools/codegen/DefaultCodegen.java | 17 ++++++++++++-- .../languages/AbstractCSharpCodegen.java | 22 ------------------- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index d7d1fc34ef3..c9ceb316baa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -6615,11 +6615,24 @@ public class DefaultCodegen implements CodegenConfig { } protected void postProcessEnumVars(List> enumVars) { + Collections.reverse(enumVars); enumVars.forEach(v -> { - if (enumVars.stream().filter(v1 -> v1.get("name").equals(v.get("name"))).count() > 1) { - LOGGER.debug("Enumeration contains duplicate name " + v.get("name")); + String name = (String) v.get("name"); + long count = enumVars.stream().filter(v1 -> v1.get("name").equals(name)).count(); + if (count > 1) { + String uniqueEnumName = getUniqueEnumName(name, enumVars); + LOGGER.debug("Changing duplicate enumeration name from " + v.get("name") + " to " + uniqueEnumName); + v.put("name", uniqueEnumName); } }); + Collections.reverse(enumVars); + } + + private String getUniqueEnumName(String name, List> enumVars) { + long count = enumVars.stream().filter(v -> v.get("name").equals(name)).count(); + return count > 1 + ? getUniqueEnumName(name + count, enumVars) + : name; } protected void updateEnumVarsWithExtensions(List> enumVars, Map vendorExtensions, String dataType) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index def830f927f..3bbae5244ce 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -409,28 +409,6 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co this.setTypeMapping(); } - @Override - protected void postProcessEnumVars(List> enumVars) { - Collections.reverse(enumVars); - enumVars.forEach(v -> { - String name = (String) v.get("name"); - long count = enumVars.stream().filter(v1 -> v1.get("name").equals(name)).count(); - if (count > 1) { - String uniqueEnumName = getUniqueEnumName(name, enumVars); - LOGGER.debug("Changing duplicate enumeration name from " + v.get("name") + " to " + uniqueEnumName); - v.put("name", uniqueEnumName); - } - }); - Collections.reverse(enumVars); - } - - private String getUniqueEnumName(String name, List> enumVars) { - long count = enumVars.stream().filter(v -> v.get("name").equals(name)).count(); - return count > 1 - ? getUniqueEnumName(name + count, enumVars) - : name; - } - @Override protected ImmutableMap.Builder addMustacheLambdas() { return super.addMustacheLambdas()