From f898b072ba6cc570f61b6525413dfac588bebe4e Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 21 Jul 2022 11:22:41 +0800 Subject: [PATCH] add model caching to ruby client generator (#12961) --- .../codegen/languages/RubyClientCodegen.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index 4d1bbeb16cfb..d21ecb6eb1f8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -63,6 +63,8 @@ public class RubyClientCodegen extends AbstractRubyCodegen { protected String apiDocPath = "docs/"; protected String modelDocPath = "docs/"; + private Map schemaKeyToModelNameCache = new HashMap<>(); + public RubyClientCodegen() { super(); @@ -367,6 +369,12 @@ public class RubyClientCodegen extends AbstractRubyCodegen { @Override public String toModelName(final String name) { + // memoization + String origName = name; + if (schemaKeyToModelNameCache.containsKey(origName)) { + return schemaKeyToModelNameCache.get(origName); + } + String modelName; modelName = sanitizeName(name); @@ -382,6 +390,7 @@ public class RubyClientCodegen extends AbstractRubyCodegen { if (isReservedWord(modelName)) { modelName = camelize("Model" + modelName); LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); + schemaKeyToModelNameCache.put(origName, modelName); return modelName; } @@ -394,7 +403,9 @@ public class RubyClientCodegen extends AbstractRubyCodegen { // camelize the model name // phone_number => PhoneNumber - return camelize(modelName); + String camelizedName = camelize(modelName); + schemaKeyToModelNameCache.put(origName, camelizedName); + return camelizedName; } @Override