From 1be0eb7c384ef9915e763fcd02dcee4c1c7cda29 Mon Sep 17 00:00:00 2001 From: themooks Date: Fri, 23 May 2025 19:29:59 +0200 Subject: [PATCH 1/2] Fix management of enum constants starting with a digit for Java SDK --- .../templating/mustache/PrefixNumberWithValue.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java index 03f1d5bf7a61..ed2798a4ae59 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java @@ -35,7 +35,15 @@ public void execute(Template.Fragment fragment, Writer writer) throws IOExceptio line = value + line; } } catch (Exception e) { - // NOOP + try { + // Starts with a digit + String first = line.substring(0, 1); + Integer.parseInt(first); + line = value + line; + } catch (Exception ex) { + // NOOP + + } } } line = line From 828a21444a5c79e55cb3976e7dfad804690edda9 Mon Sep 17 00:00:00 2001 From: themooks Date: Mon, 26 May 2025 10:59:21 +0200 Subject: [PATCH 2/2] Fix enum arrays --- .../languages/PureCloudJavaClientCodegen.java | 27 +++++++++++++++++++ .../mustache/PrefixNumberWithValue.java | 11 +++----- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PureCloudJavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PureCloudJavaClientCodegen.java index a659b381ab1a..2e119d570d5d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PureCloudJavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PureCloudJavaClientCodegen.java @@ -203,6 +203,33 @@ public Map postProcessModelsEnum(Map objs) { } } } + } else if (cp.isArray && cp.items != null && cp.items.isEnum && cp.items.allowableValues != null) { + Object valuesObject = cp.items.allowableValues.get("values"); + if (valuesObject != null) { + ArrayList valuesArray = (ArrayList) valuesObject; + if (valuesArray.get(0) instanceof Integer) { + // Integer enum type + valuesArray.add(0, -1); + Object enumVarsObject = cp.items.allowableValues.get("enumVars"); + ArrayList enumVarsArray = (ArrayList) enumVarsObject; + HashMap newItem = new HashMap<>(); + newItem.put("name", "OUTDATEDSDKVERSION"); + newItem.put("value", toEnumValue("-1", "Integer")); + enumVarsArray.add(0, newItem); + } else { + // String enum type + if (!valuesArray.get(0).equals("OutdatedSdkVersion")) { + valuesArray.add(0, "OutdatedSdkVersion"); + Object enumVarsObject = cp.items.allowableValues.get("enumVars"); + ArrayList enumVarsArray = (ArrayList) enumVarsObject; + HashMap newItem = new HashMap<>(); + newItem.put("name", "OUTDATEDSDKVERSION"); + newItem.put("isString", "true"); + newItem.put("value", toEnumValue("OutdatedSdkVersion", "String")); + enumVarsArray.add(0, newItem); + } + } + } } vars.add(cp); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java index ed2798a4ae59..a08706a766ee 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/PrefixNumberWithValue.java @@ -35,15 +35,12 @@ public void execute(Template.Fragment fragment, Writer writer) throws IOExceptio line = value + line; } } catch (Exception e) { - try { - // Starts with a digit - String first = line.substring(0, 1); - Integer.parseInt(first); + // Check if string starts with a digit + if (Character.isDigit(line.charAt(0))) { + // Add prefix line = value + line; - } catch (Exception ex) { - // NOOP - } + // NOOP } } line = line