From 626fb357a945a16fa9e6011c853a84ba8e008eab Mon Sep 17 00:00:00 2001 From: "Sebastien Rosset (serosset)" Date: Tue, 31 Mar 2020 14:27:24 -0700 Subject: [PATCH] make name cache configurabl --- .../openapitools/codegen/DefaultCodegen.java | 6 ++++-- .../codegen/utils/StringUtils.java | 20 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 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 bade86348d6d..780ae01de945 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 @@ -132,9 +132,11 @@ public class DefaultCodegen implements CodegenConfig { ) .build(); + int cacheSize = Integer.parseInt(GlobalSettings.getProperty(NAME_CACHE_SIZE_PROPERTY, "500")); + int cacheExpiry = Integer.parseInt(GlobalSettings.getProperty(NAME_CACHE_EXPIRY_PROPERTY, "10")); sanitizedNameCache = Caffeine.newBuilder() - .maximumSize(500) - .expireAfterAccess(10, TimeUnit.SECONDS) + .maximumSize(cacheSize) + .expireAfterAccess(cacheExpiry, TimeUnit.SECONDS) .ticker(Ticker.systemTicker()) .build(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/StringUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/StringUtils.java index a0a4acd7ebaa..c34bcb09aef4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/StringUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/StringUtils.java @@ -5,6 +5,7 @@ import com.github.benmanes.caffeine.cache.Ticker; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; +import org.openapitools.codegen.config.GlobalSettings; import java.util.List; import java.util.Locale; @@ -16,6 +17,15 @@ public class StringUtils { + /** + * Modify the cache size of the sanitizedNameCache, camelizedWordsCache and underscoreWords. + */ + public static final String NAME_CACHE_SIZE_PROPERTY = "org.openapitools.codegen.utils.namecache.cachesize"; + /** + * Modify the cache expiry of the sanitizedNameCache, camelizedWordsCache and underscoreWords. + */ + public static final String NAME_CACHE_EXPIRY_PROPERTY = "org.openapitools.codegen.utils.namecache.expireafter"; + // A cache of camelized words. The camelize() method is invoked many times with the same // arguments, this cache is used to optimized performance. private static Cache, String> camelizedWordsCache; @@ -23,15 +33,17 @@ public class StringUtils { // A cache of underscored words, used to optimize the performance of the underscore() method. private static Cache underscoreWords; static { + int cacheSize = Integer.parseInt(GlobalSettings.getProperty(NAME_CACHE_SIZE_PROPERTY, "200")); + int cacheExpiry = Integer.parseInt(GlobalSettings.getProperty(NAME_CACHE_EXPIRY_PROPERTY, "5")); camelizedWordsCache = Caffeine.newBuilder() - .maximumSize(200) - .expireAfterAccess(5, TimeUnit.SECONDS) + .maximumSize(cacheSize) + .expireAfterAccess(cacheExpiry, TimeUnit.SECONDS) .ticker(Ticker.systemTicker()) .build(); underscoreWords = Caffeine.newBuilder() - .maximumSize(200) - .expireAfterAccess(5, TimeUnit.SECONDS) + .maximumSize(cacheSize) + .expireAfterAccess(cacheExpiry, TimeUnit.SECONDS) .ticker(Ticker.systemTicker()) .build(); }