Skip to content

Commit 3155a70

Browse files
authored
[Refactor] create a static function to build map of codegen model (#18138)
* refactor to build map of codegen model * update
1 parent b59957a commit 3155a70

9 files changed

Lines changed: 44 additions & 57 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -791,6 +791,8 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
791791

792792
additionalProperties.put("x-http-statuses-with-return", httpStatusesWithReturn);
793793

794+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
795+
794796
if (objs != null) {
795797
OperationMap operations = objs.getOperations();
796798
if (operations != null) {
@@ -1041,57 +1043,57 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
10411043
}
10421044

10431045
for (CodegenParameter parameter : operation.allParams) {
1044-
CodegenModel model = getModelFromParameter(allModels, parameter);
1046+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10451047
patchParameter(model, parameter);
10461048
}
10471049

10481050
for (CodegenParameter parameter : operation.bodyParams) {
1049-
CodegenModel model = getModelFromParameter(allModels, parameter);
1051+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10501052
patchParameter(model, parameter);
10511053
}
10521054

10531055
for (CodegenParameter parameter : operation.cookieParams) {
1054-
CodegenModel model = getModelFromParameter(allModels, parameter);
1056+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10551057
patchParameter(model, parameter);
10561058
}
10571059

10581060
for (CodegenParameter parameter : operation.formParams) {
1059-
CodegenModel model = getModelFromParameter(allModels, parameter);
1061+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10601062
patchParameter(model, parameter);
10611063
}
10621064

10631065
for (CodegenParameter parameter : operation.headerParams) {
1064-
CodegenModel model = getModelFromParameter(allModels, parameter);
1066+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10651067
patchParameter(model, parameter);
10661068
}
10671069

10681070
for (CodegenParameter parameter : operation.implicitHeadersParams) {
1069-
CodegenModel model = getModelFromParameter(allModels, parameter);
1071+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10701072
patchParameter(model, parameter);
10711073
}
10721074

10731075
for (CodegenParameter parameter : operation.optionalParams) {
1074-
CodegenModel model = getModelFromParameter(allModels, parameter);
1076+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10751077
patchParameter(model, parameter);
10761078
}
10771079

10781080
for (CodegenParameter parameter : operation.pathParams) {
1079-
CodegenModel model = getModelFromParameter(allModels, parameter);
1081+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10801082
patchParameter(model, parameter);
10811083
}
10821084

10831085
for (CodegenParameter parameter : operation.queryParams) {
1084-
CodegenModel model = getModelFromParameter(allModels, parameter);
1086+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10851087
patchParameter(model, parameter);
10861088
}
10871089

10881090
for (CodegenParameter parameter : operation.notNullableParams) {
1089-
CodegenModel model = getModelFromParameter(allModels, parameter);
1091+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10901092
patchParameter(model, parameter);
10911093
}
10921094

10931095
for (CodegenParameter parameter : operation.requiredParams) {
1094-
CodegenModel model = getModelFromParameter(allModels, parameter);
1096+
CodegenModel model = getModelFromParameter(modelMaps, parameter);
10951097
patchParameter(model, parameter);
10961098
}
10971099

@@ -1118,10 +1120,12 @@ protected void patchVendorExtensionNullableValueType(CodegenParameter parameter)
11181120
/**
11191121
* Returns the model related to the given parameter
11201122
*/
1121-
private CodegenModel getModelFromParameter(List<ModelMap> allModels, CodegenParameter parameter) {
1122-
return parameter.isModel || parameter.getIsEnumOrRef()
1123-
? allModels.stream().map(m -> m.getModel()).filter(m -> m.getClassname().equals(parameter.dataType)).findFirst().orElse(null)
1124-
: null;
1123+
private CodegenModel getModelFromParameter(HashMap<String, CodegenModel> allModels, CodegenParameter parameter) {
1124+
if (parameter.isModel || parameter.getIsEnumOrRef()) {
1125+
return allModels.getOrDefault(parameter.dataType, null);
1126+
} else {
1127+
return null;
1128+
}
11251129
}
11261130

11271131
/**

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -599,14 +599,9 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
599599
return objs;
600600
}
601601
OperationMap operations = objs.getOperations();
602-
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
602+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
603603
HashMap<String, Integer> processedModelMaps = new HashMap<>();
604604

605-
for (ModelMap modelMap : allModels) {
606-
CodegenModel m = modelMap.getModel();
607-
modelMaps.put(m.classname, m);
608-
}
609-
610605
List<CodegenOperation> operationList = operations.getOperation();
611606
for (CodegenOperation op : operationList) {
612607
for (CodegenParameter p : op.allParams) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -533,14 +533,9 @@ public ModelsMap postProcessModels(ModelsMap objs) {
533533
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
534534
objs = super.postProcessOperationsWithModels(objs, allModels);
535535
OperationMap operations = objs.getOperations();
536-
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
536+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
537537
HashMap<String, ArrayList<Integer>> processedModelMaps = new HashMap<>();
538538

539-
for (ModelMap modelMap : allModels) {
540-
CodegenModel m = modelMap.getModel();
541-
modelMaps.put(m.classname, m);
542-
}
543-
544539
List<CodegenOperation> operationList = operations.getOperation();
545540
for (CodegenOperation op : operationList) {
546541
for (CodegenParameter p : op.allParams) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,14 +1043,9 @@ public String toParamName(String name) {
10431043
@Override
10441044
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
10451045
OperationMap operations = objs.getOperations();
1046-
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
1046+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
10471047
HashMap<String, Integer> processedModelMaps = new HashMap<>();
10481048

1049-
for (ModelMap modelMap : allModels) {
1050-
CodegenModel m = modelMap.getModel();
1051-
modelMaps.put(m.classname, m);
1052-
}
1053-
10541049
List<CodegenOperation> operationList = operations.getOperation();
10551050
for (CodegenOperation op : operationList) {
10561051
int index = 0;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -911,13 +911,7 @@ public String toModelTestFilename(String name) {
911911
@Override
912912
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
913913
OperationMap objectMap = objs.getOperations();
914-
915-
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
916-
for (ModelMap modelMap : allModels) {
917-
CodegenModel m = modelMap.getModel();
918-
modelMaps.put(m.classname, m);
919-
}
920-
914+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
921915
List<CodegenOperation> operations = objectMap.getOperation();
922916
for (CodegenOperation operation : operations) {
923917
for (CodegenParameter cp : operation.allParams) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -651,14 +651,9 @@ protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Sc
651651
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
652652
objs = super.postProcessOperationsWithModels(objs, allModels);
653653
OperationMap operations = objs.getOperations();
654-
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
654+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
655655
HashMap<String, Integer> processedModelMaps = new HashMap<>();
656656

657-
for (ModelMap modelMap : allModels) {
658-
CodegenModel m = modelMap.getModel();
659-
modelMaps.put(m.classname, m);
660-
}
661-
662657
List<CodegenOperation> operationList = operations.getOperation();
663658
for (CodegenOperation op : operationList) {
664659
for (CodegenParameter p : op.allParams) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,11 +1256,7 @@ public void postProcessFile(File file, String fileType) {
12561256
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
12571257
OperationMap objectMap = objs.getOperations();
12581258

1259-
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
1260-
for (ModelMap modelMap : allModels) {
1261-
CodegenModel m = modelMap.getModel();
1262-
modelMaps.put(m.classname, m);
1263-
}
1259+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
12641260

12651261
List<CodegenOperation> operations = objectMap.getOperation();
12661262
for (CodegenOperation operation : operations) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftCombineClientCodegen.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -729,12 +729,7 @@ public void postProcessFile(File file, String fileType) {
729729
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
730730
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
731731

732-
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
733-
for (Object o : allModels) {
734-
HashMap<String, Object> h = (HashMap<String, Object>) o;
735-
CodegenModel m = (CodegenModel) h.get("model");
736-
modelMaps.put(m.classname, m);
737-
}
732+
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
738733

739734
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
740735
for (CodegenOperation operation : operations) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelMap.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.openapitools.codegen.model;
22

33
import java.util.HashMap;
4+
import java.util.List;
45
import java.util.Map;
56

67
import org.openapitools.codegen.CodegenModel;
@@ -22,4 +23,21 @@ public void setModel(CodegenModel model) {
2223
public CodegenModel getModel() {
2324
return (CodegenModel) get("model");
2425
}
26+
27+
/**
28+
* Convert a list of ModelMap to map of CodegenModel.
29+
*
30+
* @param allModels list of model map
31+
* @return map of Codegen Model
32+
*/
33+
static public HashMap<String, CodegenModel> toCodegenModelMap(List<ModelMap> allModels) {
34+
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
35+
36+
for (ModelMap modelMap : allModels) {
37+
CodegenModel m = modelMap.getModel();
38+
modelMaps.put(m.classname, m);
39+
}
40+
41+
return modelMaps;
42+
}
2543
}

0 commit comments

Comments
 (0)