Ensured enum entry name is unique (#16484)

* ensured enum entry name is unique

* ensured enum entry name is unique
This commit is contained in:
devhl-labs 2023-09-04 11:28:32 -04:00 committed by GitHub
parent 09704951f0
commit c510ea4b3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 24 deletions

View File

@ -6615,11 +6615,24 @@ public class DefaultCodegen implements CodegenConfig {
}
protected void postProcessEnumVars(List<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> enumVars, Map<String, Object> vendorExtensions, String dataType) {

View File

@ -409,28 +409,6 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
this.setTypeMapping();
}
@Override
protected void postProcessEnumVars(List<Map<String, Object>> 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<Map<String, Object>> 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<String, Lambda> addMustacheLambdas() {
return super.addMustacheLambdas()