cache the model name for faster lookup in r client gen (#12918)

This commit is contained in:
William Cheng 2022-07-19 14:12:55 +08:00 committed by GitHub
parent d2be711669
commit b722fd9063
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -68,6 +68,8 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
protected boolean useRlangExceptionHandling = false; protected boolean useRlangExceptionHandling = false;
protected String errorObjectType; protected String errorObjectType;
private Map<String, String> schemaKeyToModelNameCache = new HashMap<>();
public CodegenType getTag() { public CodegenType getTag() {
return CodegenType.CLIENT; return CodegenType.CLIENT;
} }
@ -341,6 +343,12 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
@Override @Override
public String toModelName(String name) { public String toModelName(String name) {
// memoization
String origName = name;
if (schemaKeyToModelNameCache.containsKey(origName)) {
return schemaKeyToModelNameCache.get(origName);
}
if (!StringUtils.isEmpty(modelNamePrefix)) { if (!StringUtils.isEmpty(modelNamePrefix)) {
name = modelNamePrefix + "_" + name; name = modelNamePrefix + "_" + name;
} }
@ -364,6 +372,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) name = "model_" + name; // e.g. 200Response => Model200Response (after camelize)
} }
schemaKeyToModelNameCache.put(origName, camelize(name));
return camelize(name); return camelize(name);
} }