From 34c491b11554fafca37e9208798e4df42ff1c68f Mon Sep 17 00:00:00 2001 From: devhl-labs Date: Sat, 1 Jul 2023 22:08:44 -0400 Subject: [PATCH] enabled overriding parameter patching (#15971) --- .../codegen/languages/AbstractCSharpCodegen.java | 15 +++++++++++++-- .../codegen/languages/AspNetServerCodegen.java | 5 +++++ .../codegen/languages/CSharpClientCodegen.java | 9 +++++++++ .../languages/CSharpFunctionsServerCodegen.java | 5 +++++ .../languages/CSharpReducedClientCodegen.java | 5 +++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index a19abf7a9e7..4d3cd1fc6cb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -843,12 +843,23 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co return objs; } - private void patchParameter(CodegenParameter parameter, List allModels) { - parameter.paramName = escapeReservedWord(parameter.paramName); + protected void patchVendorExtensionNullableValueType(CodegenParameter parameter) { + if (parameter.isNullable && !parameter.isContainer && (this.getValueTypes().contains(parameter.dataType) || parameter.isEnum)) { + parameter.vendorExtensions.put("x-nullable-value-type", true); + } + } + /** This is the same as patchVendorExtensionNullableValueType except it uses the deprecated getNullableTypes property */ + protected void patchVendorExtensionNullableValueTypeLegacy(CodegenParameter parameter) { if (parameter.isNullable && !parameter.isContainer && (this.getNullableTypes().contains(parameter.dataType) || parameter.isEnum)) { parameter.vendorExtensions.put("x-nullable-value-type", true); } + } + + private void patchParameter(CodegenParameter parameter, List allModels) { + parameter.paramName = escapeReservedWord(parameter.paramName); + + patchVendorExtensionNullableValueType(parameter); if (this.getNullableReferencesTypes() || (parameter.vendorExtensions.get("x-nullable-value-type") != null)) { parameter.vendorExtensions.put("x-nullable-type", true); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetServerCodegen.java index 6f438fac25e..209bbaeb544 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetServerCodegen.java @@ -613,6 +613,11 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen { } } + @Override + protected void patchVendorExtensionNullableValueType(CodegenParameter parameter) { + super.patchVendorExtensionNullableValueTypeLegacy(parameter); + } + private void setCliOption(CliOption cliOption) throws IllegalArgumentException { if (additionalProperties.containsKey(cliOption.getOpt())) { // TODO Hack - not sure why the empty strings become boolean. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index 087ae20319b..1cc82928e08 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -1524,6 +1524,15 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { } } + @Override + protected void patchVendorExtensionNullableValueType(CodegenParameter parameter) { + if (getLibrary().equals(GENERICHOST)) { + super.patchVendorExtensionNullableValueType(parameter); + } else { + super.patchVendorExtensionNullableValueTypeLegacy(parameter); + } + } + @Override public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpFunctionsServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpFunctionsServerCodegen.java index 6835f02f960..0052dbb0470 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpFunctionsServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpFunctionsServerCodegen.java @@ -519,6 +519,11 @@ public class CSharpFunctionsServerCodegen extends AbstractCSharpCodegen { } } + @Override + protected void patchVendorExtensionNullableValueType(CodegenParameter parameter) { + super.patchVendorExtensionNullableValueTypeLegacy(parameter); + } + private void setCliOption(CliOption cliOption) throws IllegalArgumentException { if (additionalProperties.containsKey(cliOption.getOpt())) { // TODO Hack - not sure why the empty strings become boolean. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java index d25ce1a50e8..7255c2d9cb1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java @@ -951,6 +951,11 @@ public class CSharpReducedClientCodegen extends AbstractCSharpCodegen { return name; } + @Override + protected void patchVendorExtensionNullableValueType(CodegenParameter parameter) { + super.patchVendorExtensionNullableValueTypeLegacy(parameter); + } + private CodegenModel reconcileInlineEnums(CodegenModel codegenModel, CodegenModel parentCodegenModel) { // This generator uses inline classes to define enums, which breaks when // dealing with models that have subTypes. To clean this up, we will analyze