diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache index 7948f79dbf7c..456f4635013c 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache @@ -43,8 +43,25 @@ {{#lambda.trimLineBreaks}} int currentDepth = utf8JsonReader.CurrentDepth; + {{#composedSchemas.oneOf}} + {{#-first}} + bool oneOfHasPrimitiveType = false; + {{/-first}} + {{#isPrimitiveType}} + oneOfHasPrimitiveType = true; + {{/isPrimitiveType}} + {{#-last}} + + if (!oneOfHasPrimitiveType && + utf8JsonReader.TokenType != JsonTokenType.StartObject && + utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + {{/-last}} + {{/composedSchemas.oneOf}} + {{^composedSchemas.oneOf}} if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) throw new JsonException(); + {{/composedSchemas.oneOf}} JsonTokenType startingTokenType = utf8JsonReader.TokenType; @@ -113,24 +130,40 @@ {{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = default; {{#-last}} - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) - { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + if (oneOfHasPrimitiveType && + startingTokenType != JsonTokenType.StartObject && + startingTokenType != JsonTokenType.StartArray) + { + {{#oneOf}} + Utf8JsonReader utf8JsonReader{{name}} = utf8JsonReader; + ClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); + {{^-last}} - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + {{/-last}} + {{/oneOf}} + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - {{#oneOf}} - Utf8JsonReader utf8JsonReader{{name}} = utf8JsonReader; - ClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); - {{^-last}} + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - {{/-last}} - {{/oneOf}} + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; + + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + {{#oneOf}} + Utf8JsonReader utf8JsonReader{{name}} = utf8JsonReader; + ClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); + {{^-last}} + + {{/-last}} + {{/oneOf}} + } } } {{/-last}} @@ -376,7 +409,51 @@ {{/children}} {{/discriminator}} + {{^model.discriminator}} + {{#composedSchemas}} + {{#oneOf}} + {{#isPrimitiveType}} + {{#isContainer}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) + { + JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + return; + } + + {{/isContainer}} + {{^isContainer}} + {{^vendorExtensions.x-duplicated-data-type}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) + { + JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + return; + } + + {{/vendorExtensions.x-duplicated-data-type}} + {{/isContainer}} + {{/isPrimitiveType}} + {{/oneOf}} + {{/composedSchemas}} + {{/model.discriminator}} writer.WriteStartObject(); + {{^model.discriminator}} + {{#composedSchemas}} + {{#oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + {{#isModel}} + {{^isContainer}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) + { + {{baseType}}JsonConverter {{#lambda.camelcase_sanitize_param}}{{baseType}}JsonConverter{{/lambda.camelcase_sanitize_param}} = ({{baseType}}JsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}.GetType())); + {{#lambda.camelcase_sanitize_param}}{{baseType}}JsonConverter{{/lambda.camelcase_sanitize_param}}.WriteProperties(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + } + + {{/isContainer}} + {{/isModel}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/oneOf}} + {{/composedSchemas}} + {{/model.discriminator}} {{#model.discriminator}} {{#model.hasDiscriminatorWithNonEmptyMapping}} @@ -678,4 +755,4 @@ {{/lambda.trimLineBreaks}} {{/lambda.trimTrailingWithNewLine}} } - } \ No newline at end of file + } diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml index 4aff70b18f28..63d9e0f65904 100644 --- a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml @@ -1,46 +1,68 @@ openapi: 3.0.1 + info: - title: fruity - version: 0.0.1 + title: fruity + version: 0.0.1 + paths: - /: - get: - responses: - '200': - description: desc - content: - application/json: - schema: - $ref: '#/components/schemas/fruit' + /: + get: + responses: + '200': + description: desc + content: + application/json: + schema: + $ref: '#/components/schemas/fruit' + components: - schemas: - fruit: - title: fruit - properties: - color: - type: string - oneOf: - - $ref: '#/components/schemas/apple' - - $ref: '#/components/schemas/banana' - - $ref: '#/components/schemas/orange' - # additionalProperties: - # type: string - # uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved - apple: - title: apple - type: object - properties: - kind: - type: string - banana: - title: banana - type: object - properties: - count: - type: number - orange: - title: orange - type: object - properties: - sweet: - type: boolean + schemas: + fruit: + title: fruit + properties: + color: + type: string + oneOf: + - $ref: '#/components/schemas/apple' + - $ref: '#/components/schemas/banana' + - $ref: '#/components/schemas/orange' + + inlineOneOfModel: + title: inlineOneOfModel + type: object + properties: + value: + oneOf: + - type: string + - type: integer + + union: + title: union + oneOf: + - type: string + - type: integer + + apple: + title: apple + type: object + properties: + kind: + type: string + + banana: + title: banana + type: object + properties: + count: + type: number + + orange: + title: orange + type: object + properties: + sweet: + type: boolean + +# additionalProperties: +# type: string +# uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved \ No newline at end of file diff --git a/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/OneOfNullableTest.cs b/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/OneOfNullableTest.cs index 2d632afcb947..3910768cfdfe 100644 --- a/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/OneOfNullableTest.cs +++ b/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/OneOfNullableTest.cs @@ -179,6 +179,18 @@ public override OneOfNullableTest Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, OneOfNullableTest oneOfNullableTest, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfNullableTest.Int != null) + { + JsonSerializer.Serialize(writer, oneOfNullableTest.Int, jsonSerializerOptions); + return; + } + + if (oneOfNullableTest.String != null) + { + JsonSerializer.Serialize(writer, oneOfNullableTest.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfNullableTest, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/ParentWithPluralOneOfPropertyNumber.cs b/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/ParentWithPluralOneOfPropertyNumber.cs index 42eb5c9cd94d..c582bc79731b 100644 --- a/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/ParentWithPluralOneOfPropertyNumber.cs +++ b/samples/client/petstore/csharp/generichost/latest/AnnotatedEnum/src/Org.OpenAPITools/Model/ParentWithPluralOneOfPropertyNumber.cs @@ -178,6 +178,18 @@ public override ParentWithPluralOneOfPropertyNumber Read(ref Utf8JsonReader utf8 /// public override void Write(Utf8JsonWriter writer, ParentWithPluralOneOfPropertyNumber parentWithPluralOneOfPropertyNumber, JsonSerializerOptions jsonSerializerOptions) { + if (parentWithPluralOneOfPropertyNumber.Number != null) + { + JsonSerializer.Serialize(writer, parentWithPluralOneOfPropertyNumber.Number, jsonSerializerOptions); + return; + } + + if (parentWithPluralOneOfPropertyNumber.Number2 != null) + { + JsonSerializer.Serialize(writer, parentWithPluralOneOfPropertyNumber.Number2, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, parentWithPluralOneOfPropertyNumber, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools.Test/Model/OneOfArrayRequestTests.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools.Test/Model/OneOfArrayRequestTests.cs index 1dd0bbfa1260..c0dcd2245807 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools.Test/Model/OneOfArrayRequestTests.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools.Test/Model/OneOfArrayRequestTests.cs @@ -14,6 +14,7 @@ using System.Linq; using System.IO; using System.Collections.Generic; +using System.Text.Json; using Org.OpenAPITools.Model; using Org.OpenAPITools.Client; using System.Reflection; @@ -52,5 +53,31 @@ public void OneOfArrayRequestInstanceTest() // TODO uncomment below to test "IsType" OneOfArrayRequest //Assert.IsType(instance); } + + [Fact] + public void SerializeOneOfStringArray() + { + var options = new JsonSerializerOptions(); + options.Converters.Add(new OneOfArrayRequestJsonConverter()); + var request = new OneOfArrayRequest(new List { "first", "second" }); + + string json = JsonSerializer.Serialize(request, options); + + Assert.Equal("[\"first\",\"second\"]", json); + } + + [Fact] + public void SerializeOneOfModelArray() + { + var options = new JsonSerializerOptions(); + options.Converters.Add(new OneOfArrayRequestJsonConverter()); + options.Converters.Add(new TestObjectJsonConverter()); + var item = new TestObject(new Option("example")); + var request = new OneOfArrayRequest(new List { item }); + + string json = JsonSerializer.Serialize(request, options); + + Assert.Equal("[{\"name\":\"example\"}]", json); + } } } diff --git a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Model/OneOfArrayRequest.cs b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Model/OneOfArrayRequest.cs index 8ce7469d7bca..e0c6959bd5cd 100644 --- a/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Model/OneOfArrayRequest.cs +++ b/samples/client/petstore/csharp/generichost/latest/OneOfList/src/Org.OpenAPITools/Model/OneOfArrayRequest.cs @@ -178,6 +178,18 @@ public override OneOfArrayRequest Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, OneOfArrayRequest oneOfArrayRequest, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfArrayRequest.List != null) + { + JsonSerializer.Serialize(writer, oneOfArrayRequest.List, jsonSerializerOptions); + return; + } + + if (oneOfArrayRequest.List1 != null) + { + JsonSerializer.Serialize(writer, oneOfArrayRequest.List1, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfArrayRequest, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/Fruit.cs index f6b30057b6ca..46a871ba0394 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/Fruit.cs @@ -205,6 +205,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/FruitReq.cs index 1b20a9969162..91f7e067f9b7 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/FruitReq.cs @@ -179,6 +179,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 2712457d30f9..11396c56a846 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -244,7 +244,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/OneOfString.cs index f18374410642..d4887828f80f 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/OneOfString.cs @@ -140,6 +140,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index 9f2518b49d53..4e838c262f80 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -222,6 +222,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index ca703d27f96c..523e4981cf08 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs index ec0062ba20d3..67cb3b13af6c 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs @@ -206,6 +206,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs index af1802aab1a9..d73d15fdc718 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs @@ -180,6 +180,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index bac36e3cbe70..2b27c5610dad 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -252,7 +252,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs index e03117058c32..50b6a7869b9f 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs @@ -148,6 +148,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index d33ed7654562..6aeb2e63b84d 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -230,6 +230,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/OneOf/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net10/OneOf/src/Org.OpenAPITools/Model/Fruit.cs index 1a4743015087..be03ed7e708e 100644 --- a/samples/client/petstore/csharp/generichost/net10/OneOf/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net10/OneOf/src/Org.OpenAPITools/Model/Fruit.cs @@ -237,6 +237,23 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } + + if (fruit.Orange != null) + { + OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); + orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/Fruit.cs index ca703d27f96c..523e4981cf08 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs index 9bad6c70417c..8e385da82a91 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs @@ -207,6 +207,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs index ed5e1e35c028..361da9371288 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs @@ -181,6 +181,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index ca6ca27187dd..c96886067b6b 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -253,7 +253,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs index 4a46f52ead3a..df1341c55fed 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs @@ -149,6 +149,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index d3e959b95a67..114391721fd3 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -231,6 +231,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index ba5d85932b34..453be949b65f 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Model/Fruit.cs index e2e2f33c524d..617047885a4a 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/OneOf/src/Org.OpenAPITools/Model/Fruit.cs @@ -235,6 +235,23 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } + + if (fruit.Orange != null) + { + OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); + orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/Fruit.cs index ba5d85932b34..453be949b65f 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index ba5d85932b34..453be949b65f 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs index e2e2f33c524d..617047885a4a 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs @@ -235,6 +235,23 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } + + if (fruit.Orange != null) + { + OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); + orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs index ba5d85932b34..453be949b65f 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index ca703d27f96c..c9638e5b9882 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs @@ -129,9 +129,6 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option color = default; @@ -139,22 +136,33 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert Apple apple = default; Banana banana = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; + + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); + + Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + } } } @@ -204,6 +212,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..2bb8e810357b 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs @@ -111,30 +111,38 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; AppleReq appleReq = default; BananaReq bananaReq = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; + + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); + + Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + } } } @@ -178,6 +186,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Mammal.cs index 9bc6bbaaf9b9..887a0aa826cf 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Mammal.cs @@ -143,9 +143,6 @@ public override Mammal Read(ref Utf8JsonReader utf8JsonReader, Type typeToConver { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option className = default; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..000f8dddd5cc 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -163,9 +163,6 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; string varString = default; @@ -174,31 +171,51 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t decimal? varDecimal = default; MixedSubId mixedSubId = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + + Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderString = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); - Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); - Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + } } } @@ -250,7 +267,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs index dd205b2df274..4b17a388c158 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs @@ -128,9 +128,6 @@ public override NullableShape Read(ref Utf8JsonReader utf8JsonReader, Type typeT { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option shapeType = default; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..abe2bb642287 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs @@ -103,9 +103,6 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; string varString = default; @@ -146,6 +143,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Pig.cs index 3d7b78a18292..ec64315fb235 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Pig.cs @@ -128,9 +128,6 @@ public override Pig Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option className = default; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..6e4ff3f20b9c 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -148,9 +148,6 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; bool? varBool = default; @@ -158,28 +155,45 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type Object varObject = default; List list = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + + Utf8JsonReader utf8JsonReaderList = utf8JsonReader; + ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderString = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + + Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); - Utf8JsonReader utf8JsonReaderList = utf8JsonReader; - ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + Utf8JsonReader utf8JsonReaderList = utf8JsonReader; + ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + } } } @@ -228,6 +242,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs index f1b8095c949f..2381d0df3f1e 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -128,9 +128,6 @@ public override Quadrilateral Read(ref Utf8JsonReader utf8JsonReader, Type typeT { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option quadrilateralType = default; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Shape.cs index 7a2dd62962fb..d230cf0bb29c 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Shape.cs @@ -128,9 +128,6 @@ public override Shape Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option shapeType = default; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 52a892aeb9e1..30d965bad4c6 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -128,9 +128,6 @@ public override ShapeOrNull Read(ref Utf8JsonReader utf8JsonReader, Type typeToC { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option shapeType = default; diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Triangle.cs index 9e1ae42200c6..96859dae2927 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Triangle.cs @@ -143,9 +143,6 @@ public override Triangle Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option triangleType = default; diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs index ec0062ba20d3..67cb3b13af6c 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs @@ -206,6 +206,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs index af1802aab1a9..d73d15fdc718 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs @@ -180,6 +180,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index bac36e3cbe70..2b27c5610dad 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -252,7 +252,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs index e03117058c32..50b6a7869b9f 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs @@ -148,6 +148,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index d33ed7654562..6aeb2e63b84d 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -230,6 +230,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools.Test/Model/FruitTests.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools.Test/Model/FruitTests.cs index a6607ae5d56d..8eb2a2d59126 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools.Test/Model/FruitTests.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools.Test/Model/FruitTests.cs @@ -17,6 +17,7 @@ using Org.OpenAPITools.Model; using Org.OpenAPITools.Client; using System.Reflection; +using System.Text.Json; namespace Org.OpenAPITools.Test.Model { @@ -61,5 +62,40 @@ public void ColorTest() { // TODO unit test for the property 'Color' } + + [Fact] + public void SerializeOneOfReferencedObject() + { + var options = new JsonSerializerOptions(); + options.Converters.Add(new AppleJsonConverter()); + options.Converters.Add(new BananaJsonConverter()); + options.Converters.Add(new FruitJsonConverter()); + options.Converters.Add(new OrangeJsonConverter()); + + Fruit fruit = new Fruit(new Apple("red")); + + string json = JsonSerializer.Serialize(fruit, options); + + Assert.Equal("{\"kind\":\"red\"}", json); + } + + [Fact] + public void SerializeOneOfReferencedObjectWithSiblingProperty() + { + var options = new JsonSerializerOptions(); + options.Converters.Add(new AppleJsonConverter()); + options.Converters.Add(new BananaJsonConverter()); + options.Converters.Add(new FruitJsonConverter()); + options.Converters.Add(new OrangeJsonConverter()); + + Fruit fruit = new Fruit( + new Apple("red"), + new Option("green") + ); + + string json = JsonSerializer.Serialize(fruit, options); + + Assert.Equal("{\"kind\":\"red\",\"color\":\"green\"}", json); + } } } diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs index 1a4743015087..be03ed7e708e 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs @@ -237,6 +237,23 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } + + if (fruit.Orange != null) + { + OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); + orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs index ca703d27f96c..523e4981cf08 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs index 9bad6c70417c..8e385da82a91 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs @@ -207,6 +207,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs index ed5e1e35c028..361da9371288 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs @@ -181,6 +181,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index ca6ca27187dd..c96886067b6b 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -253,7 +253,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs index 4a46f52ead3a..df1341c55fed 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs @@ -149,6 +149,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index d3e959b95a67..114391721fd3 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -231,6 +231,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index ca703d27f96c..c9638e5b9882 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Fruit.cs @@ -129,9 +129,6 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option color = default; @@ -139,22 +136,33 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert Apple apple = default; Banana banana = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; + + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); + + Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + } } } @@ -204,6 +212,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..2bb8e810357b 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs @@ -111,30 +111,38 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; AppleReq appleReq = default; BananaReq bananaReq = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; + + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); + + Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + } } } @@ -178,6 +186,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Mammal.cs index 9bc6bbaaf9b9..887a0aa826cf 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Mammal.cs @@ -143,9 +143,6 @@ public override Mammal Read(ref Utf8JsonReader utf8JsonReader, Type typeToConver { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option className = default; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..000f8dddd5cc 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -163,9 +163,6 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; string varString = default; @@ -174,31 +171,51 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t decimal? varDecimal = default; MixedSubId mixedSubId = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + + Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderString = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); - Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); - Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + } } } @@ -250,7 +267,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs index dd205b2df274..4b17a388c158 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/NullableShape.cs @@ -128,9 +128,6 @@ public override NullableShape Read(ref Utf8JsonReader utf8JsonReader, Type typeT { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option shapeType = default; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..abe2bb642287 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs @@ -103,9 +103,6 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; string varString = default; @@ -146,6 +143,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Pig.cs index 3d7b78a18292..ec64315fb235 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Pig.cs @@ -128,9 +128,6 @@ public override Pig Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option className = default; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..6e4ff3f20b9c 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -148,9 +148,6 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; bool? varBool = default; @@ -158,28 +155,45 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type Object varObject = default; List list = default; - Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; - while (utf8JsonReaderOneOf.Read()) + if (startingTokenType != JsonTokenType.StartObject && startingTokenType != JsonTokenType.StartArray) { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + + Utf8JsonReader utf8JsonReaderList = utf8JsonReader; + ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + } + else + { + Utf8JsonReader utf8JsonReaderOneOf = utf8JsonReader; + while (utf8JsonReaderOneOf.Read()) { - Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderString = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); + + Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); - Utf8JsonReader utf8JsonReaderList = utf8JsonReader; - ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + Utf8JsonReader utf8JsonReaderList = utf8JsonReader; + ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + } } } @@ -228,6 +242,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs index f1b8095c949f..2381d0df3f1e 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -128,9 +128,6 @@ public override Quadrilateral Read(ref Utf8JsonReader utf8JsonReader, Type typeT { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option quadrilateralType = default; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Shape.cs index 7a2dd62962fb..d230cf0bb29c 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Shape.cs @@ -128,9 +128,6 @@ public override Shape Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option shapeType = default; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 52a892aeb9e1..30d965bad4c6 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -128,9 +128,6 @@ public override ShapeOrNull Read(ref Utf8JsonReader utf8JsonReader, Type typeToC { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option shapeType = default; diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Triangle.cs index 9e1ae42200c6..96859dae2927 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Triangle.cs @@ -143,9 +143,6 @@ public override Triangle Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv { int currentDepth = utf8JsonReader.CurrentDepth; - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - JsonTokenType startingTokenType = utf8JsonReader.TokenType; Option triangleType = default; diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs index ec0062ba20d3..67cb3b13af6c 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/Fruit.cs @@ -206,6 +206,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs index af1802aab1a9..d73d15fdc718 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/FruitReq.cs @@ -180,6 +180,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index bac36e3cbe70..2b27c5610dad 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -252,7 +252,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs index e03117058c32..50b6a7869b9f 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/OneOfString.cs @@ -148,6 +148,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index d33ed7654562..6aeb2e63b84d 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -230,6 +230,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Model/Fruit.cs index 1a4743015087..be03ed7e708e 100644 --- a/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net9/OneOf/src/Org.OpenAPITools/Model/Fruit.cs @@ -237,6 +237,23 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } + + if (fruit.Orange != null) + { + OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); + orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/Fruit.cs index ca703d27f96c..523e4981cf08 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs index 9bad6c70417c..8e385da82a91 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/Fruit.cs @@ -207,6 +207,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs index ed5e1e35c028..361da9371288 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/FruitReq.cs @@ -181,6 +181,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index ca6ca27187dd..c96886067b6b 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -253,7 +253,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs index 4a46f52ead3a..df1341c55fed 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/OneOfString.cs @@ -149,6 +149,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index d3e959b95a67..114391721fd3 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -231,6 +231,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/Fruit.cs index ba5d85932b34..453be949b65f 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/Fruit.cs @@ -204,6 +204,17 @@ public override Fruit Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruit.Apple != null) + { + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); + } + + if (fruit.Banana != null) + { + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); + } WriteProperties(writer, fruit, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -178,6 +178,17 @@ public override FruitReq Read(ref Utf8JsonReader utf8JsonReader, Type typeToConv public override void Write(Utf8JsonWriter writer, FruitReq fruitReq, JsonSerializerOptions jsonSerializerOptions) { writer.WriteStartObject(); + if (fruitReq.AppleReq != null) + { + AppleReqJsonConverter appleReqJsonConverter = (AppleReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.AppleReq.GetType())); + appleReqJsonConverter.WriteProperties(writer, fruitReq.AppleReq, jsonSerializerOptions); + } + + if (fruitReq.BananaReq != null) + { + BananaReqJsonConverter bananaReqJsonConverter = (BananaReqJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruitReq.BananaReq.GetType())); + bananaReqJsonConverter.WriteProperties(writer, fruitReq.BananaReq, jsonSerializerOptions); + } WriteProperties(writer, fruitReq, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/MixedOneOfContent.cs @@ -250,7 +250,36 @@ public override MixedOneOfContent Read(ref Utf8JsonReader utf8JsonReader, Type t /// public override void Write(Utf8JsonWriter writer, MixedOneOfContent mixedOneOfContent, JsonSerializerOptions jsonSerializerOptions) { + if (mixedOneOfContent.String != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.String, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Bool != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Bool, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Int != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Int, jsonSerializerOptions); + return; + } + + if (mixedOneOfContent.Decimal != null) + { + JsonSerializer.Serialize(writer, mixedOneOfContent.Decimal, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); + if (mixedOneOfContent.MixedSubId != null) + { + MixedSubIdJsonConverter mixedSubIdJsonConverter = (MixedSubIdJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(mixedOneOfContent.MixedSubId.GetType())); + mixedSubIdJsonConverter.WriteProperties(writer, mixedOneOfContent.MixedSubId, jsonSerializerOptions); + } WriteProperties(writer, mixedOneOfContent, jsonSerializerOptions); writer.WriteEndObject(); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/OneOfString.cs @@ -146,6 +146,12 @@ public override OneOfString Read(ref Utf8JsonReader utf8JsonReader, Type typeToC /// public override void Write(Utf8JsonWriter writer, OneOfString oneOfString, JsonSerializerOptions jsonSerializerOptions) { + if (oneOfString.String != null) + { + JsonSerializer.Serialize(writer, oneOfString.String, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, oneOfString, jsonSerializerOptions); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/PolymorphicProperty.cs @@ -228,6 +228,30 @@ public override PolymorphicProperty Read(ref Utf8JsonReader utf8JsonReader, Type /// public override void Write(Utf8JsonWriter writer, PolymorphicProperty polymorphicProperty, JsonSerializerOptions jsonSerializerOptions) { + if (polymorphicProperty.Bool != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Bool, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.String != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.String, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.Object != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.Object, jsonSerializerOptions); + return; + } + + if (polymorphicProperty.List != null) + { + JsonSerializer.Serialize(writer, polymorphicProperty.List, jsonSerializerOptions); + return; + } + writer.WriteStartObject(); WriteProperties(writer, polymorphicProperty, jsonSerializerOptions);