Move all vendor extension definitions within AbstractCSharpCodegen to CodegenConstants. Then adjust other usages of those same vendor extension definitions to the created constants. (#22112)

This commit is contained in:
Mattias Sehlstedt 2025-10-12 17:21:17 +02:00 committed by GitHub
parent 81a3488556
commit 42af4f9529
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 92 additions and 56 deletions

View File

@ -457,6 +457,30 @@ public class CodegenConstants {
public static final String DEFAULT_TO_EMPTY_CONTAINER = "defaultToEmptyContainer";
// Vendor extensions
public static final String X_INTERNAL = "x-internal";
public static final String X_PARENT = "x-parent";
public static final String X_COMPOSED_DATA_TYPE = "x-composed-data-type";
public static final String X_BASE_NAME = "x-base-name";
public static final String X_IS_VALUE_TYPE = "x-is-value-type";
public static final String X_IS_REFERENCE_TYPE = "x-is-reference-type";
public static final String X_IS_NULLABLE_TYPE = "x-is-nullable-type";
public static final String X_IS_BASE_OR_NEW_DISCRIMINATOR = "x-is-base-or-new-discriminator";
public static final String X_ENUM_BYTE = "x-enum-byte";
public static final String X_HTTP_STATUS = "x-http-status";
public static final String X_HTTP_STATUSES_WITH_RETURN = "x-http-statuses-with-return";
public static final String X_SET_COOKIE = "x-set-cookie";
public static final String X_DUPLICATES = "x-duplicates";
public static final String X_HTTP_STATUS_IS_DEFAULT = "x-http-status-is-default";
public static final String X_ONLY_DEFAULT = "x-only-default";
public static final String X_HTTP_STATUS_RANGE = "x-http-status-range";
public static final String X_NOT_NULLABLE_REFERENCE_TYPES = "x-not-nullable-reference-types";
public static final String X_HAS_NOT_NULLABLE_REFERENCE_TYPES = "x-has-not-nullable-reference-types";
public static final String X_NULLABLE_VALUE_TYPE = "x-nullable-value-type";
public static final String X_NULLABLE_TYPE = "x-nullable-type";
public static final String X_CSHARP_VALUE_TYPE = "x-csharp-value-type";
public static final String X_REGEX = "x-regex";
public static final String X_MODIFIERS = "x-modifiers";
public static final String X_MODIFIER_PREFIX = "x-modifier-";
public static final String X_MODEL_IS_MUTABLE = "x-model-is-mutable";
}

View File

@ -46,6 +46,7 @@ import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static org.openapitools.codegen.CodegenConstants.*;
import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER;
import static org.openapitools.codegen.utils.ModelUtils.getSchemaItems;
import static org.openapitools.codegen.utils.StringUtils.camelize;
@ -543,7 +544,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
if (dataTypeSet.contains(oneOfProperty.dataType)) {
// add "x-duplicated-data-type" to indicate if the dataType already occurs before
// in other sub-schemas of allOf/anyOf/oneOf
oneOfProperty.vendorExtensions.putIfAbsent("x-composed-data-type", true);
oneOfProperty.vendorExtensions.putIfAbsent(X_COMPOSED_DATA_TYPE, true);
} else {
dataTypeSet.add(oneOfProperty.dataType);
}
@ -557,7 +558,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
if (dataTypeSet.contains(anyOfProperty.dataType)) {
// add "x-duplicated-data-type" to indicate if the dataType already occurs before
// in other sub-schemas of allOf/anyOf/oneOf
anyOfProperty.vendorExtensions.putIfAbsent("x-composed-data-type", true);
anyOfProperty.vendorExtensions.putIfAbsent(X_COMPOSED_DATA_TYPE, true);
} else {
dataTypeSet.add(anyOfProperty.dataType);
}
@ -619,7 +620,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
continue;
}
model.vendorExtensions.put("x-model-is-mutable", modelIsMutable(model, null));
model.vendorExtensions.put(X_MODEL_IS_MUTABLE, modelIsMutable(model, null));
CodegenComposedSchemas composedSchemas = model.getComposedSchemas();
if (composedSchemas != null) {
@ -639,7 +640,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
patchProperty(enumRefs, model, property);
property.name = patchPropertyName(model, property, camelize(property.baseType), composedPropertyNames);
property.isNullable = true;
property.vendorExtensions.put("x-base-name", model.name.substring(model.name.lastIndexOf('_') + 1));
property.vendorExtensions.put(X_BASE_NAME, model.name.substring(model.name.lastIndexOf('_') + 1));
}
}
@ -650,7 +651,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
patchProperty(enumRefs, model, property);
property.name = patchPropertyName(model, property, camelize(property.baseType), composedPropertyNames);
property.isNullable = true;
property.vendorExtensions.put("x-base-name", model.name.substring(model.name.lastIndexOf('_') + 1));
property.vendorExtensions.put(X_BASE_NAME, model.name.substring(model.name.lastIndexOf('_') + 1));
}
}
}
@ -784,10 +785,10 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
private void patchPropertyVendorExtensions(CodegenProperty property) {
boolean isValueType = isValueType(property);
property.vendorExtensions.put("x-is-value-type", isValueType);
property.vendorExtensions.put("x-is-reference-type", !isValueType);
property.vendorExtensions.put("x-is-nullable-type", this.getNullableReferencesTypes() || isValueType);
property.vendorExtensions.put("x-is-base-or-new-discriminator", (property.isDiscriminator && !property.isInherited) || (property.isDiscriminator && property.isNew));
property.vendorExtensions.put(X_IS_VALUE_TYPE, isValueType);
property.vendorExtensions.put(X_IS_REFERENCE_TYPE, !isValueType);
property.vendorExtensions.put(X_IS_NULLABLE_TYPE, this.getNullableReferencesTypes() || isValueType);
property.vendorExtensions.put(X_IS_BASE_OR_NEW_DISCRIMINATOR, (property.isDiscriminator && !property.isInherited) || (property.isDiscriminator && property.isNew));
}
protected void patchPropertyIsInherited(CodegenModel model, CodegenProperty property) {
@ -888,7 +889,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
// Because C# uses nullable primitives for datatype, and datatype is used in DefaultCodegen for determining enum-ness, guard against weirdness here.
if (var.isEnum) {
if ("byte".equals(var.dataFormat)) {// C# Actually supports byte and short enums.
var.vendorExtensions.put("x-enum-byte", true);
var.vendorExtensions.put(X_ENUM_BYTE, true);
var.isString = false;
var.isLong = false;
var.isInteger = false;
@ -909,7 +910,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
}
private void postProcessResponseCode(CodegenResponse response, String status, Set<String> httpStatusesWithReturn) {
response.vendorExtensions.put("x-http-status", status);
response.vendorExtensions.put(X_HTTP_STATUS, status);
if (response.dataType != null) {
httpStatusesWithReturn.add(status);
}
@ -942,11 +943,11 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
}
private void postProcessOperations(OperationMap operations, List<ModelMap> allModels) {
Set<String> httpStatusesWithReturn = additionalProperties.get("x-http-statuses-with-return") instanceof Set<?>
? (Set<String>) additionalProperties.get("x-http-statuses-with-return")
Set<String> httpStatusesWithReturn = additionalProperties.get(X_HTTP_STATUSES_WITH_RETURN) instanceof Set<?>
? (Set<String>) additionalProperties.get(X_HTTP_STATUSES_WITH_RETURN)
: new HashSet<String>();
additionalProperties.put("x-http-statuses-with-return", httpStatusesWithReturn);
additionalProperties.put(X_HTTP_STATUSES_WITH_RETURN, httpStatusesWithReturn);
HashMap<String, CodegenModel> modelMaps = ModelMap.toCodegenModelMap(allModels);
@ -955,7 +956,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
for (CodegenOperation operation : ops) {
String duplicates = duplicateOf.get(operation.operationId);
if (duplicates != null) {
operation.vendorExtensions.put("x-duplicates", duplicates);
operation.vendorExtensions.put(X_DUPLICATES, duplicates);
} else {
duplicateOf.put(operation.operationId, operations.getClassname());
}
@ -964,13 +965,13 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
if (response.returnProperty != null) {
Boolean isValueType = isValueType(response.returnProperty);
response.vendorExtensions.put("x-is-value-type", isValueType);
response.vendorExtensions.put("x-is-reference-type", !isValueType);
response.vendorExtensions.put(X_IS_VALUE_TYPE, isValueType);
response.vendorExtensions.put(X_IS_REFERENCE_TYPE, !isValueType);
}
if (response.headers != null && response.headers.stream().anyMatch(h -> h.baseName.equals("Set-Cookie"))) {
response.vendorExtensions.put("x-set-cookie", true);
operation.vendorExtensions.put("x-set-cookie", true);
response.vendorExtensions.put(X_SET_COOKIE, true);
operation.vendorExtensions.put(X_SET_COOKIE, true);
}
String code = response.code.toLowerCase(Locale.ROOT);
@ -978,9 +979,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
case "default":
case "0":
postProcessResponseCode(response, "Default", httpStatusesWithReturn);
response.vendorExtensions.put("x-http-status-is-default", true);
response.vendorExtensions.put(X_HTTP_STATUS_IS_DEFAULT, true);
if ((long) operation.responses.size() == 1) {
response.vendorExtensions.put("x-only-default", true);
response.vendorExtensions.put(X_ONLY_DEFAULT, true);
}
break;
case "100":
@ -1161,23 +1162,23 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
postProcessResponseCode(response, "NetworkAuthenticationRequired", httpStatusesWithReturn);
break;
case "1xx":
response.vendorExtensions.put("x-http-status-range", 1);
response.vendorExtensions.put(X_HTTP_STATUS_RANGE, 1);
postProcessResponseCode(response, "HttpStatusCode1XX", httpStatusesWithReturn);
break;
case "2xx":
response.vendorExtensions.put("x-http-status-range", 2);
response.vendorExtensions.put(X_HTTP_STATUS_RANGE, 2);
postProcessResponseCode(response, "HttpStatusCode2XX", httpStatusesWithReturn);
break;
case "3xx":
response.vendorExtensions.put("x-http-status-range", 3);
response.vendorExtensions.put(X_HTTP_STATUS_RANGE, 3);
postProcessResponseCode(response, "HttpStatusCode3XX", httpStatusesWithReturn);
break;
case "4xx":
response.vendorExtensions.put("x-http-status-range", 4);
response.vendorExtensions.put(X_HTTP_STATUS_RANGE, 4);
postProcessResponseCode(response, "HttpStatusCode4XX", httpStatusesWithReturn);
break;
case "5xx":
response.vendorExtensions.put("x-http-status-range", 5);
response.vendorExtensions.put(X_HTTP_STATUS_RANGE, 5);
postProcessResponseCode(response, "HttpStatusCode5XX", httpStatusesWithReturn);
break;
default:
@ -1278,9 +1279,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
patchParameter(model, parameter);
}
List<CodegenParameter> referenceTypes = operation.allParams.stream().filter(p -> p.vendorExtensions.get("x-is-value-type") == null && !p.isNullable).collect(Collectors.toList());
operation.vendorExtensions.put("x-not-nullable-reference-types", referenceTypes);
operation.vendorExtensions.put("x-has-not-nullable-reference-types", referenceTypes.size() > 0);
List<CodegenParameter> referenceTypes = operation.allParams.stream().filter(p -> p.vendorExtensions.get(X_IS_VALUE_TYPE) == null && !p.isNullable).collect(Collectors.toList());
operation.vendorExtensions.put(X_NOT_NULLABLE_REFERENCE_TYPES, referenceTypes);
operation.vendorExtensions.put(X_HAS_NOT_NULLABLE_REFERENCE_TYPES, referenceTypes.size() > 0);
processOperation(operation);
// Remove constant params from allParams list and add to constantParams
@ -1291,7 +1292,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
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);
parameter.vendorExtensions.put(X_NULLABLE_VALUE_TYPE, true);
}
}
@ -1307,15 +1308,15 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
*/
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);
parameter.vendorExtensions.put(X_NULLABLE_VALUE_TYPE, true);
}
}
private void patchParameter(CodegenModel model, CodegenParameter parameter) {
patchVendorExtensionNullableValueType(parameter);
if (this.getNullableReferencesTypes() || (parameter.vendorExtensions.get("x-nullable-value-type") != null)) {
parameter.vendorExtensions.put("x-nullable-type", true);
if (this.getNullableReferencesTypes() || (parameter.vendorExtensions.get(X_NULLABLE_VALUE_TYPE) != null)) {
parameter.vendorExtensions.put(X_NULLABLE_TYPE, true);
}
if (!isSupportNullable()) {
@ -1362,12 +1363,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
parameter.isEnum = true;
parameter.allowableValues = model.allowableValues;
parameter.isPrimitiveType = true;
parameter.vendorExtensions.put("x-csharp-value-type", true);
parameter.vendorExtensions.put(X_CSHARP_VALUE_TYPE, true);
}
}
if (!parameter.isContainer && this.getNullableTypes().contains(parameter.dataType)) {
parameter.vendorExtensions.put("x-csharp-value-type", true);
parameter.vendorExtensions.put(X_CSHARP_VALUE_TYPE, true);
}
}
@ -1377,12 +1378,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
parameter.isEnum = true;
parameter.allowableValues = model.allowableValues;
parameter.isPrimitiveType = true;
parameter.vendorExtensions.put("x-is-value-type", true);
parameter.vendorExtensions.put(X_IS_VALUE_TYPE, true);
}
}
if (!parameter.isContainer && this.getValueTypes().contains(parameter.dataType)) {
parameter.vendorExtensions.put("x-is-value-type", true);
parameter.vendorExtensions.put(X_IS_VALUE_TYPE, true);
}
}
@ -2050,13 +2051,13 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
} else if (c == 'l') {
modifiers.remove("CultureInvariant");
} else {
vendorExtensions.put("x-modifier-" + c, c);
vendorExtensions.put(X_MODIFIER_PREFIX + c, c);
}
}
String regex = pattern.substring(start, end).replace("\"", "\"\"");
vendorExtensions.put("x-regex", regex);
vendorExtensions.put("x-modifiers", modifiers);
vendorExtensions.put(X_REGEX, regex);
vendorExtensions.put(X_MODIFIERS, modifiers);
}
}

View File

@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.*;
import static org.openapitools.codegen.CodegenConstants.X_ENUM_BYTE;
import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER;
import static org.openapitools.codegen.utils.StringUtils.camelize;
import static org.openapitools.codegen.utils.StringUtils.underscore;
@ -433,7 +434,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
if (model.dataType.startsWith("byte")) {
// F# Actually supports byte and short enums, swagger spec only supports byte.
isByte = true;
model.vendorExtensions.put("x-enum-byte", true);
model.vendorExtensions.put(X_ENUM_BYTE, true);
} else if (model.dataType.startsWith("int32")) {
isInteger = true;
model.vendorExtensions.put("x-enum-integer", true);
@ -487,7 +488,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
// Because C# uses nullable primitives for datatype, and datatype is used in DefaultCodegen for determining enum-ness, guard against weirdness here.
if (var.isEnum) {
if ("byte".equals(var.dataFormat)) {// C# Actually supports byte and short enums.
var.vendorExtensions.put("x-enum-byte", true);
var.vendorExtensions.put(X_ENUM_BYTE, true);
var.isString = false;
var.isLong = false;
var.isInteger = false;

View File

@ -40,6 +40,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static org.openapitools.codegen.CodegenConstants.X_MODIFIERS;
import static org.openapitools.codegen.CodegenConstants.X_REGEX;
import static org.openapitools.codegen.utils.StringUtils.*;
@ -1353,9 +1355,9 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
}
}
vendorExtensions.put("x-regex", regex.replace("\"", "\\\""));
vendorExtensions.put(X_REGEX, regex.replace("\"", "\\\""));
vendorExtensions.put("x-pattern", pattern.replace("\"", "\\\""));
vendorExtensions.put("x-modifiers", modifiers);
vendorExtensions.put(X_MODIFIERS, modifiers);
}
}

View File

@ -46,6 +46,8 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
import static org.openapitools.codegen.CodegenConstants.X_MODIFIERS;
import static org.openapitools.codegen.CodegenConstants.X_REGEX;
import static org.openapitools.codegen.utils.StringUtils.camelize;
public abstract class AbstractPythonConnexionServerCodegen extends AbstractPythonCodegen implements CodegenConfig {
@ -743,8 +745,8 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
}
}
vendorExtensions.put("x-regex", regex);
vendorExtensions.put("x-modifiers", modifiers);
vendorExtensions.put(X_REGEX, regex);
vendorExtensions.put(X_MODIFIERS, modifiers);
}
}
}

View File

@ -39,6 +39,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static org.openapitools.codegen.CodegenConstants.X_MODIFIERS;
import static org.openapitools.codegen.CodegenConstants.X_REGEX;
import static org.openapitools.codegen.utils.StringUtils.*;
public abstract class AbstractPythonPydanticV1Codegen extends DefaultCodegen implements CodegenConfig {
@ -1915,9 +1917,9 @@ public abstract class AbstractPythonPydanticV1Codegen extends DefaultCodegen imp
}
}
vendorExtensions.put("x-regex", regex.replace("\"", "\\\""));
vendorExtensions.put(X_REGEX, regex.replace("\"", "\\\""));
vendorExtensions.put("x-pattern", pattern.replace("\"", "\\\""));
vendorExtensions.put("x-modifiers", modifiers);
vendorExtensions.put(X_MODIFIERS, modifiers);
}
}

View File

@ -37,6 +37,7 @@ import java.net.URL;
import java.util.*;
import static java.util.UUID.randomUUID;
import static org.openapitools.codegen.CodegenConstants.X_CSHARP_VALUE_TYPE;
public class AspNetServerCodegen extends AbstractCSharpCodegen {
@ -347,7 +348,7 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen {
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
super.updateCodegenParameterEnumLegacy(parameter, model);
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
if (!parameter.required && parameter.vendorExtensions.get(X_CSHARP_VALUE_TYPE) != null) { //optional
parameter.dataType = parameter.dataType + "?";
}
}
@ -627,7 +628,7 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen {
super.patchProperty(enumRefs, model, property);
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
property.vendorExtensions.put("x-csharp-value-type", true);
property.vendorExtensions.put(X_CSHARP_VALUE_TYPE, true);
}
}

View File

@ -39,6 +39,7 @@ import java.util.function.Consumer;
import java.util.stream.Collectors;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.openapitools.codegen.CodegenConstants.X_CSHARP_VALUE_TYPE;
import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER;
import static org.openapitools.codegen.utils.StringUtils.camelize;
import static org.openapitools.codegen.utils.StringUtils.underscore;
@ -409,7 +410,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
super.updateCodegenParameterEnumLegacy(parameter, model);
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
if (!parameter.required && parameter.vendorExtensions.get(X_CSHARP_VALUE_TYPE) != null) { //optional
parameter.dataType = parameter.dataType + "?";
}
}
@ -1626,7 +1627,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
if (!GENERICHOST.equals(getLibrary())) {
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
property.vendorExtensions.put("x-csharp-value-type", true);
property.vendorExtensions.put(X_CSHARP_VALUE_TYPE, true);
}
}
}

View File

@ -36,6 +36,7 @@ import java.net.URL;
import java.util.*;
import static java.util.UUID.randomUUID;
import static org.openapitools.codegen.CodegenConstants.X_CSHARP_VALUE_TYPE;
public class CSharpFunctionsServerCodegen extends AbstractCSharpCodegen {
@ -287,7 +288,7 @@ public class CSharpFunctionsServerCodegen extends AbstractCSharpCodegen {
super.patchProperty(enumRefs, model, property);
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
property.vendorExtensions.put("x-csharp-value-type", true);
property.vendorExtensions.put(X_CSHARP_VALUE_TYPE, true);
}
}
@ -295,7 +296,7 @@ public class CSharpFunctionsServerCodegen extends AbstractCSharpCodegen {
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
super.updateCodegenParameterEnumLegacy(parameter, model);
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
if (!parameter.required && parameter.vendorExtensions.get(X_CSHARP_VALUE_TYPE) != null) { //optional
parameter.dataType = parameter.dataType + "?";
}
}

View File

@ -37,6 +37,7 @@ import java.util.function.Consumer;
import java.util.stream.Collectors;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.openapitools.codegen.CodegenConstants.X_CSHARP_VALUE_TYPE;
import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER;
import static org.openapitools.codegen.utils.StringUtils.camelize;
import static org.openapitools.codegen.utils.StringUtils.underscore;
@ -350,7 +351,7 @@ public class CSharpReducedClientCodegen extends AbstractCSharpCodegen {
super.patchProperty(enumRefs, model, property);
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
property.vendorExtensions.put("x-csharp-value-type", true);
property.vendorExtensions.put(X_CSHARP_VALUE_TYPE, true);
}
}
@ -358,7 +359,7 @@ public class CSharpReducedClientCodegen extends AbstractCSharpCodegen {
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
super.updateCodegenParameterEnumLegacy(parameter, model);
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
if (!parameter.required && parameter.vendorExtensions.get(X_CSHARP_VALUE_TYPE) != null) { //optional
parameter.dataType = parameter.dataType + "?";
}
}