Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Commit ec314ef

Browse files
committed
Removes JsonSchema from CodegenParameter and fixes usages
1 parent 094dafe commit ec314ef

File tree

12 files changed

+252
-540
lines changed

12 files changed

+252
-540
lines changed

modules/openapi-json-schema-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,6 +1944,15 @@ public void setParameterExampleValue(CodegenParameter codegenParameter, RequestB
19441944
setParameterExampleValue(codegenParameter);
19451945
}
19461946

1947+
protected CodegenProperty getParameterSchema(CodegenParameter param) {
1948+
CodegenProperty p = param.getSchema();
1949+
if (p == null) {
1950+
String firstContentType = (String) param.getContent().keySet().toArray()[0];
1951+
p = param.getContent().get(firstContentType).getSchema();
1952+
}
1953+
return p;
1954+
}
1955+
19471956
/**
19481957
* Sets the content type, style, and explode of the parameter based on the encoding specified
19491958
* in the request body.
@@ -1968,7 +1977,12 @@ public void setParameterEncodingValues(CodegenParameter codegenParameter, MediaT
19681977

19691978
codegenParameter.style = style.toString();
19701979
codegenParameter.isDeepObject = Encoding.StyleEnum.DEEP_OBJECT == style;
1971-
codegenParameter.isExplode = explode;
1980+
1981+
if(getParameterSchema(codegenParameter).isContainer) {
1982+
codegenParameter.isExplode = explode;
1983+
} else {
1984+
codegenParameter.isExplode = false;
1985+
}
19721986

19731987
} else {
19741988
LOGGER.debug("encoding not specified for {}", codegenParameter.baseName);
@@ -4303,7 +4317,8 @@ public CodegenOperation fromOperation(String path,
43034317

43044318
// add example
43054319
if (schemas != null && !isSkipOperationExample()) {
4306-
op.requestBodyExamples = new ExampleGenerator(schemas, this.openAPI).generate(null, new ArrayList<>(getConsumesInfo(this.openAPI, operation)), bodyParam.baseType);
4320+
String firstContentType = (String) requestBody.getContent().keySet().toArray()[0];
4321+
op.requestBodyExamples = new ExampleGenerator(schemas, this.openAPI).generate(null, new ArrayList<>(getConsumesInfo(this.openAPI, operation)), requestBody.getContent().get(firstContentType).getSchema());
43074322
}
43084323
}
43094324
}
@@ -6310,7 +6325,7 @@ public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set
63106325
LOGGER.debug("Debugging fromFormProperty {}: {}", name, propertySchema);
63116326
CodegenProperty codegenProperty = fromProperty(name, propertySchema, false, false, sourceJsonPath);
63126327

6313-
Schema ps = unaliasSchema(propertySchema);
6328+
codegenParameter.setSchema(codegenProperty);
63146329

63156330
codegenParameter.baseName = codegenProperty.baseName;
63166331
codegenParameter.paramName = toParamName(codegenParameter.baseName);
@@ -6488,7 +6503,6 @@ protected void updateRequestBodyForObject(CodegenParameter codegenParameter, Sch
64886503
// object type schema or composed schema with properties defined
64896504
this.addBodyModelSchema(codegenParameter, name, schema, imports, bodyParameterName, false, sourceJsonPath);
64906505
}
6491-
addVarsRequiredVarsAdditionalProps(schema, codegenParameter, sourceJsonPath);
64926506
}
64936507

64946508
protected void updateRequestBodyForArray(CodegenParameter codegenParameter, Schema schema, String name, Set<String> imports, String bodyParameterName, String sourceJsonPath) {
@@ -6704,7 +6718,6 @@ public CodegenParameter fromRequestBody(RequestBody body, Set<String> imports, S
67046718
} else {
67056719
updateRequestBodyForPrimitiveType(codegenParameter, schema, bodyParameterName, imports, usedSourceJsonPath);
67066720
}
6707-
addVarsRequiredVarsAdditionalProps(schema, codegenParameter, sourceJsonPath);
67086721
} else {
67096722
// referenced schemas
67106723
updateRequestBodyForPrimitiveType(codegenParameter, schema, bodyParameterName, imports, usedSourceJsonPath);

modules/openapi-json-schema-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,7 +1085,11 @@ public void setParameterExampleValue(CodegenParameter codegenParameter, Paramete
10851085
*/
10861086
@Override
10871087
public void setParameterExampleValue(CodegenParameter codegenParameter, RequestBody requestBody) {
1088-
boolean isModel = (codegenParameter.isModel || (codegenParameter.isContainer && codegenParameter.getItems().isModel));
1088+
boolean isModel = false;
1089+
CodegenProperty cp = codegenParameter.getSchema();
1090+
if (cp != null && (cp.isModel || (cp.isContainer && cp.getItems().isModel))) {
1091+
isModel = true;
1092+
}
10891093

10901094
Content content = requestBody.getContent();
10911095

@@ -1120,8 +1124,9 @@ public void setParameterExampleValue(CodegenParameter codegenParameter, RequestB
11201124
}
11211125

11221126
@Override
1123-
public void setParameterExampleValue(CodegenParameter p) {
1127+
public void setParameterExampleValue(CodegenParameter param) {
11241128
String example;
1129+
CodegenProperty p = getParameterSchema(param);
11251130

11261131
boolean hasAllowableValues = p.allowableValues != null && !p.allowableValues.isEmpty();
11271132
if (hasAllowableValues) {
@@ -1141,7 +1146,7 @@ public void setParameterExampleValue(CodegenParameter p) {
11411146

11421147
if ("String".equals(type)) {
11431148
if (example == null) {
1144-
example = p.paramName + "_example";
1149+
example = param.paramName + "_example";
11451150
}
11461151
example = "\"" + escapeText(example) + "\"";
11471152
} else if ("Integer".equals(type) || "Short".equals(type)) {
@@ -1225,7 +1230,7 @@ public void setParameterExampleValue(CodegenParameter p) {
12251230
example = "new HashMap()";
12261231
}
12271232

1228-
p.example = example;
1233+
param.example = example;
12291234
}
12301235

12311236
@Override
@@ -1404,8 +1409,9 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
14041409
for (CodegenOperation op : operationList) {
14051410
Collection<String> operationImports = new ConcurrentSkipListSet<>();
14061411
for (CodegenParameter p : op.allParams) {
1407-
if (importMapping.containsKey(p.dataType)) {
1408-
operationImports.add(importMapping.get(p.dataType));
1412+
CodegenProperty cp = getParameterSchema(p);
1413+
if (importMapping.containsKey(cp.dataType)) {
1414+
operationImports.add(importMapping.get(cp.dataType));
14091415
}
14101416
}
14111417
op.vendorExtensions.put("x-java-import", operationImports);

modules/openapi-json-schema-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -504,72 +504,6 @@ private String toExampleValueRecursive(Schema schema, List<Schema> includedSchem
504504
return example;
505505
}
506506

507-
@Override
508-
public void setParameterExampleValue(CodegenParameter p) {
509-
String example;
510-
511-
if (p.defaultValue == null) {
512-
example = p.example;
513-
} else {
514-
p.example = p.defaultValue;
515-
return;
516-
}
517-
518-
String type = p.baseType;
519-
if (type == null) {
520-
type = p.dataType;
521-
}
522-
523-
if ("String".equalsIgnoreCase(type) || "str".equalsIgnoreCase(type)) {
524-
if (example == null) {
525-
example = p.paramName + "_example";
526-
}
527-
example = "'" + escapeText(example) + "'";
528-
} else if ("Integer".equals(type) || "int".equals(type)) {
529-
if (example == null) {
530-
example = "56";
531-
}
532-
} else if ("Float".equalsIgnoreCase(type) || "Double".equalsIgnoreCase(type)) {
533-
if (example == null) {
534-
example = "3.4";
535-
}
536-
} else if ("BOOLEAN".equalsIgnoreCase(type) || "bool".equalsIgnoreCase(type)) {
537-
if (example == null) {
538-
example = "True";
539-
}
540-
} else if ("file".equalsIgnoreCase(type)) {
541-
if (example == null) {
542-
example = "/path/to/file";
543-
}
544-
example = "'" + escapeText(example) + "'";
545-
} else if ("Date".equalsIgnoreCase(type)) {
546-
if (example == null) {
547-
example = "2013-10-20";
548-
}
549-
example = "'" + escapeText(example) + "'";
550-
} else if ("DateTime".equalsIgnoreCase(type)) {
551-
if (example == null) {
552-
example = "2013-10-20T19:20:30+01:00";
553-
}
554-
example = "'" + escapeText(example) + "'";
555-
} else if (!languageSpecificPrimitives.contains(type)) {
556-
// type is a model class, e.g. User
557-
example = this.packageName + "." + type + "()";
558-
} else {
559-
LOGGER.warn("Type {} not handled properly in setParameterExampleValue", type);
560-
}
561-
562-
if (example == null) {
563-
example = "None";
564-
} else if (Boolean.TRUE.equals(p.isArray)) {
565-
example = "[" + example + "]";
566-
} else if (Boolean.TRUE.equals(p.isMap)) {
567-
example = "{'key': " + example + "}";
568-
}
569-
570-
p.example = example;
571-
}
572-
573507
@Override
574508
public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) {
575509
Schema schema = parameter.getSchema();

modules/openapi-json-schema-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
855855

856856
// import okhttp3.MultipartBody if any parameter is a file
857857
for (CodegenParameter param : operation.allParams) {
858-
if (Boolean.TRUE.equals(param.isFile)) {
858+
if (Boolean.TRUE.equals(param.getSchema() != null && Boolean.TRUE.equals(param.getSchema().isFile))) {
859859
operations.put("x-kotlin-multipart-import", true);
860860
}
861861
}
@@ -881,8 +881,9 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
881881
// modify the data type of binary form parameters to a more friendly type for ktor builds
882882
if ((JVM_KTOR.equals(getLibrary()) || MULTIPLATFORM.equals(getLibrary())) && operation.allParams != null) {
883883
for (CodegenParameter param : operation.allParams) {
884-
if (param.dataFormat != null && param.dataFormat.equals("binary")) {
885-
param.baseType = param.dataType = "io.ktor.client.request.forms.InputProvider";
884+
CodegenProperty cp = param.getSchema();
885+
if (cp != null && cp.dataFormat != null && cp.dataFormat.equals("binary")) {
886+
cp.baseType = cp.dataType = "io.ktor.client.request.forms.InputProvider";
886887
}
887888
}
888889
}

0 commit comments

Comments
 (0)