Skip to content

Commit 61275df

Browse files
committed
Add nullable property support
Requires: #8809 When I wrote this, I missed the changes on CodegenParameter and I had some unnecessary changes on CodegenModel. I realized my mistake when I went to add a similar change to openapi-generator and saw it was already there, and they knew more about what to do than I did. So, this is based in part on work by wing328 and jmini - OpenAPITools/openapi-generator#873 - OpenAPITools/openapi-generator#889 - OpenAPITools/openapi-generator#930
1 parent 6425283 commit 61275df

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,6 +1455,9 @@ public CodegenProperty fromProperty(String name, Schema propertySchema) {
14551455
codegenProperty.defaultValue = toDefaultValue(propertySchema);
14561456
codegenProperty.defaultValueWithParam = toDefaultValueWithParam(name, propertySchema);
14571457
codegenProperty.jsonSchema = Json.pretty(propertySchema);
1458+
if (propertySchema.getNullable() != null) {
1459+
codegenProperty.nullable = propertySchema.getNullable();
1460+
}
14581461
if (propertySchema.getReadOnly() != null) {
14591462
codegenProperty.getVendorExtensions().put(CodegenConstants.IS_READ_ONLY_EXT_NAME, propertySchema.getReadOnly());
14601463
}
@@ -2270,6 +2273,9 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
22702273
if (parameter.getRequired() != null) {
22712274
codegenParameter.required = parameter.getRequired();
22722275
}
2276+
if (parameter.getRequired() != null) {
2277+
codegenParameter.required = parameter.getRequired();
2278+
}
22732279
codegenParameter.jsonSchema = Json.pretty(parameter);
22742280

22752281
if (System.getProperty("debugParser") != null) {
@@ -2326,10 +2332,14 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
23262332
LOGGER.warn("warning! Schema not found for parameter \"" + parameter.getName() + "\", using String");
23272333
parameterSchema = new StringSchema().description("//TODO automatically added by swagger-codegen.");
23282334
}
2335+
if (Boolean.TRUE.equals(parameterSchema.getNullable())) {
2336+
codegenParameter.nullable = true;
2337+
}
23292338
CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema);
23302339

23312340
// set boolean flag (e.g. isString)
23322341
setParameterBooleanFlagWithCodegenProperty(codegenParameter, codegenProperty);
2342+
setParameterNullable(codegenParameter, codegenProperty);
23332343

23342344
codegenParameter.dataType = codegenProperty.datatype;
23352345
codegenParameter.dataFormat = codegenProperty.dataFormat;
@@ -2501,6 +2511,7 @@ public CodegenParameter fromRequestBody(RequestBody body, String name, Schema sc
25012511
}
25022512
}
25032513
setParameterBooleanFlagWithCodegenProperty(codegenParameter, codegenProperty);
2514+
setParameterNullable(codegenParameter, codegenProperty);
25042515
}
25052516
}
25062517
else if (schema instanceof ArraySchema) {
@@ -2534,6 +2545,7 @@ else if (schema instanceof ArraySchema) {
25342545
codegenParameter.getVendorExtensions().put(CodegenConstants.IS_LIST_CONTAINER_EXT_NAME, Boolean.TRUE);
25352546

25362547
setParameterBooleanFlagWithCodegenProperty(codegenParameter, codegenProperty);
2548+
setParameterNullable(codegenParameter, codegenProperty);
25372549

25382550
while (codegenProperty != null) {
25392551
imports.add(codegenProperty.baseType);
@@ -3994,4 +4006,8 @@ private void addParemeters(CodegenContent codegenContent, List<CodegenParameter>
39944006
codegenContent.getParameters().add(codegenParameter.copy());
39954007
}
39964008
}
4009+
4010+
protected void setParameterNullable(CodegenParameter parameter, CodegenProperty property) {
4011+
parameter.nullable = property.nullable;
4012+
}
39974013
}

0 commit comments

Comments
 (0)