Skip to content

Commit c23560a

Browse files
authored
removed unecessary extension from generichost (#15870)
1 parent 7c67f73 commit c23560a

26 files changed

Lines changed: 253 additions & 197 deletions

File tree

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -580,17 +580,15 @@ protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel mo
580580
property.isPrimitiveType = true;
581581
}
582582

583-
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
584-
property.vendorExtensions.put("x-csharp-value-type", true);
585-
}
583+
Boolean isValueType = isValueType(property);
586584

587-
property.vendorExtensions.put("x-is-value-type", isValueType(property));
585+
property.vendorExtensions.put("x-is-value-type", isValueType);
588586

589-
if (property.isNullable && !property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
587+
if (property.isNullable && !property.isContainer && isValueType) {
590588
property.vendorExtensions.put("x-nullable-value-type", true);
591589
}
592590

593-
if (this.getNullableReferencesTypes() || (property.vendorExtensions.get("x-nullable-value-type") != null)) {
591+
if (this.getNullableReferencesTypes() || isValueType) {
594592
property.vendorExtensions.put("x-nullable-type", true);
595593
}
596594

@@ -826,7 +824,7 @@ protected void processOperation(CodegenOperation operation) {
826824
// default noop
827825
}
828826

829-
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
827+
protected void updateCodegenParameterEnumLegacy(CodegenParameter parameter, CodegenModel model) {
830828
if (model != null) {
831829
if (model.isEnum) {
832830
parameter.isEnum = true;
@@ -841,6 +839,21 @@ protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenMod
841839
}
842840
}
843841

842+
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
843+
if (model != null) {
844+
if (model.isEnum) {
845+
parameter.isEnum = true;
846+
parameter.allowableValues = model.allowableValues;
847+
parameter.isPrimitiveType = true;
848+
parameter.vendorExtensions.put("x-is-value-type", true);
849+
}
850+
}
851+
852+
if (!parameter.isContainer && this.getValueTypes().contains(parameter.dataType)) {
853+
parameter.vendorExtensions.put("x-is-value-type", true);
854+
}
855+
}
856+
844857
@Override
845858
public String apiFileFolder() {
846859
return outputFolder + File.separator + sourceFolder + File.separator + packageName + File.separator + apiPackage();

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ public void postProcessParameter(CodegenParameter parameter) {
338338

339339
@Override
340340
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
341-
super.updateCodegenParameterEnum(parameter, model);
341+
super.updateCodegenParameterEnumLegacy(parameter, model);
342342

343343
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
344344
parameter.dataType = parameter.dataType + "?";
@@ -590,6 +590,15 @@ public String toRegularExpression(String pattern) {
590590
return escapeText(pattern);
591591
}
592592

593+
@Override
594+
protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel model, CodegenProperty property) {
595+
super.patchProperty(enumRefs, model, property);
596+
597+
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
598+
property.vendorExtensions.put("x-csharp-value-type", true);
599+
}
600+
}
601+
593602
@SuppressWarnings("rawtypes")
594603
@Override
595604
public String getNullableType(Schema p, String type) {

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

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -343,13 +343,16 @@ public CSharpClientCodegen() {
343343
@Deprecated
344344
@Override
345345
protected Set<String> getNullableTypes() {
346-
return new HashSet<>(Arrays.asList("decimal", "bool", "int", "uint", "long", "ulong", "float", "double",
347-
"DateTime", "DateTimeOffset", "Guid"));
346+
return GENERICHOST.equals(getLibrary())
347+
? super.getNullableTypes()
348+
: new HashSet<>(Arrays.asList("decimal", "bool", "int", "uint", "long", "ulong", "float", "double", "DateTime", "DateTimeOffset", "Guid"));
348349
}
349350

350351
@Override
351352
protected Set<String> getValueTypes() {
352-
return new HashSet<>(Arrays.asList("decimal", "bool", "int", "uint", "long", "ulong", "float", "double"));
353+
return GENERICHOST.equals(getLibrary())
354+
? super.getValueTypes()
355+
: new HashSet<>(Arrays.asList("decimal", "bool", "int", "uint", "long", "ulong", "float", "double"));
353356
}
354357

355358
@Override
@@ -387,7 +390,12 @@ protected void setTypeMapping() {
387390

388391
@Override
389392
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
390-
super.updateCodegenParameterEnum(parameter, model);
393+
if (GENERICHOST.equals(getLibrary())) {
394+
super.updateCodegenParameterEnum(parameter, model);
395+
return;
396+
}
397+
398+
super.updateCodegenParameterEnumLegacy(parameter, model);
391399

392400
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
393401
parameter.dataType = parameter.dataType + "?";
@@ -587,6 +595,10 @@ public String getNameUsingModelPropertyNaming(String name) {
587595

588596
@Override
589597
public String getNullableType(Schema p, String type) {
598+
if (GENERICHOST.equals(getLibrary())) {
599+
return super.getNullableType(p, type);
600+
}
601+
590602
if (languageSpecificPrimitives.contains(type)) {
591603
if (isSupportNullable() && ModelUtils.isNullable(p) && this.getNullableTypes().contains(type)) {
592604
return type + "?";
@@ -638,7 +650,7 @@ public void postProcessParameter(CodegenParameter parameter) {
638650
postProcessPattern(parameter.pattern, parameter.vendorExtensions);
639651
postProcessEmitDefaultValue(parameter.vendorExtensions);
640652

641-
if (!parameter.dataType.endsWith("?") && !parameter.required && (nullReferenceTypesFlag || this.getNullableTypes().contains(parameter.dataType))) {
653+
if (!GENERICHOST.equals(getLibrary()) && !parameter.dataType.endsWith("?") && !parameter.required && (nullReferenceTypesFlag || this.getNullableTypes().contains(parameter.dataType))) {
642654
parameter.dataType = parameter.dataType + "?";
643655
}
644656

@@ -1525,12 +1537,14 @@ public String toInstantiationType(Schema schema) {
15251537
protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel model, CodegenProperty property) {
15261538
super.patchProperty(enumRefs, model, property);
15271539

1528-
if (!GENERICHOST.equals(getLibrary()) || model.parentModel == null) {
1529-
return;
1530-
}
1531-
1532-
if (model.parentModel.allVars.stream().anyMatch(v -> v.baseName.equals(property.baseName))){
1533-
property.isInherited = true;
1540+
if (!GENERICHOST.equals(getLibrary())) {
1541+
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
1542+
property.vendorExtensions.put("x-csharp-value-type", true);
1543+
}
1544+
} else {
1545+
if (model.parentModel != null && model.parentModel.allVars.stream().anyMatch(v -> v.baseName.equals(property.baseName))) {
1546+
property.isInherited = true;
1547+
}
15341548
}
15351549
}
15361550

@@ -1588,7 +1602,7 @@ public ModelsMap postProcessModels(ModelsMap objs) {
15881602
protected boolean isValueType(CodegenProperty var) {
15891603
// this is temporary until x-csharp-value-type is removed
15901604
return this.getLibrary().equals("generichost")
1591-
? this.getNullableTypes().contains(var.dataType) || var.isEnum
1605+
? super.isValueType(var)
15921606
: this.getValueTypes().contains(var.dataType) || var.isEnum;
15931607
}
15941608

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,9 +286,18 @@ public void postProcessParameter(CodegenParameter parameter) {
286286
}
287287
}
288288

289+
@Override
290+
protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel model, CodegenProperty property) {
291+
super.patchProperty(enumRefs, model, property);
292+
293+
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
294+
property.vendorExtensions.put("x-csharp-value-type", true);
295+
}
296+
}
297+
289298
@Override
290299
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
291-
super.updateCodegenParameterEnum(parameter, model);
300+
super.updateCodegenParameterEnumLegacy(parameter, model);
292301

293302
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
294303
parameter.dataType = parameter.dataType + "?";

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,18 @@ protected void setTypeMapping() {
344344
}
345345
}
346346

347+
@Override
348+
protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel model, CodegenProperty property) {
349+
super.patchProperty(enumRefs, model, property);
350+
351+
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
352+
property.vendorExtensions.put("x-csharp-value-type", true);
353+
}
354+
}
355+
347356
@Override
348357
protected void updateCodegenParameterEnum(CodegenParameter parameter, CodegenModel model) {
349-
super.updateCodegenParameterEnum(parameter, model);
358+
super.updateCodegenParameterEnumLegacy(parameter, model);
350359

351360
if (!parameter.required && parameter.vendorExtensions.get("x-csharp-value-type") != null) { //optional
352361
parameter.dataType = parameter.dataType + "?";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#notRequiredOrIsNullable}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}{{/notRequiredOrIsNullable}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#isNullable}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}{{/isNullable}}

modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
{{/vendorExtensions.x-duplicated-data-type}}
4545
{{/composedSchemas.anyOf}}
4646
{{#allVars}}
47-
{{#isInnerEnum}}{{^isMap}}{{classname}}.{{/isMap}}{{/isInnerEnum}}{{#nrt}}{{#lambda.optional}}{{{datatypeWithEnum}}}{{/lambda.optional}}{{/nrt}}{{^nrt}}{{{datatypeWithEnum}}}{{#vendorExtensions.x-csharp-value-type}}?{{/vendorExtensions.x-csharp-value-type}}{{/nrt}} {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} = default;
47+
{{#isInnerEnum}}{{^isMap}}{{classname}}.{{/isMap}}{{/isInnerEnum}}{{#nrt}}{{#lambda.optional}}{{{datatypeWithEnum}}}{{/lambda.optional}}{{/nrt}}{{^nrt}}{{{datatypeWithEnum}}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} = default;
4848
{{#-last}}
4949

5050
{{/-last}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#model.allVars}}{{>PropertyDataType}} {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}{{#defaultValue}} = {{^isDateTime}}{{#isString}}{{^isEnum}}@{{/isEnum}}{{/isString}}{{{defaultValue}}}{{/isDateTime}}{{#isDateTime}}default{{/isDateTime}}{{/defaultValue}}{{^defaultValue}}{{#isNullable}} = default{{/isNullable}}{{/defaultValue}} {{/model.allVars}}
1+
{{#model.allVars}}{{{datatypeWithEnum}}}{{>NullConditionalProperty}} {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}{{#defaultValue}} = {{^isDateTime}}{{#isString}}{{^isEnum}}@{{/isEnum}}{{/isString}}{{{defaultValue}}}{{/isDateTime}}{{#isDateTime}}default{{/isDateTime}}{{/defaultValue}}{{^defaultValue}}{{#isNullable}} = default{{/isNullable}}{{/defaultValue}} {{/model.allVars}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#lambda.joinWithComma}}{{#allParams}}{{^notRequiredOrIsNullable}}{{#lambda.required}}{{{dataType}}}{{/lambda.required}}{{/notRequiredOrIsNullable}}{{#notRequiredOrIsNullable}}{{#lambda.optional}}{{{dataType}}}{{/lambda.optional}}{{/notRequiredOrIsNullable}} {{paramName}}{{^requiredAndNotNullable}} = null{{/requiredAndNotNullable}} {{/allParams}}System.Threading.CancellationToken cancellationToken = default{{^netstandard20OrLater}}(System.Threading.CancellationToken){{/netstandard20OrLater}}{{/lambda.joinWithComma}}
1+
{{#lambda.joinWithComma}}{{#allParams}}{{{dataType}}}{{>NullConditionalParameter}} {{paramName}}{{#notRequiredOrIsNullable}} = null{{/notRequiredOrIsNullable}} {{/allParams}}System.Threading.CancellationToken cancellationToken = default{{^netstandard20OrLater}}(System.Threading.CancellationToken){{/netstandard20OrLater}}{{/lambda.joinWithComma}}

0 commit comments

Comments
 (0)