From 4bd039dd4e563ba6e1c1c944c1bf58baa0300f3a Mon Sep 17 00:00:00 2001 From: William Cheng <wing328hk@gmail.com> Date: Sat, 23 Jul 2022 18:48:41 +0800 Subject: [PATCH] add model caching to kotlin generators --- .../codegen/languages/AbstractKotlinCodegen.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 20517280da1..40ed03ac6a7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -75,6 +75,8 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co // ref: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-hash-map/ protected Set<String> propertyAdditionalKeywords = new HashSet<>(Arrays.asList("entries", "keys", "size", "values")); + private Map<String, String> schemaKeyToModelNameCache = new HashMap<>(); + public AbstractKotlinCodegen() { super(); @@ -668,6 +670,11 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co */ @Override public String toModelName(final String name) { + // memoization + String origName = name; + if (schemaKeyToModelNameCache.containsKey(origName)) { + return schemaKeyToModelNameCache.get(origName); + } // Allow for explicitly configured kotlin.* and java.* types if (name.startsWith("kotlin.") || name.startsWith("java.")) { @@ -717,7 +724,8 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co return modelName; } - return titleCase(modifiedName); + schemaKeyToModelNameCache.put(origName, titleCase(modifiedName)); + return schemaKeyToModelNameCache.get(origName); } /** -- GitLab