From f6aa83f0d96657d7cf2323c44765bbf2b42d3804 Mon Sep 17 00:00:00 2001 From: madhu <134006164+madhu1218@users.noreply.github.com> Date: Mon, 10 Aug 2026 21:15:46 -0400 Subject: [PATCH 1/5] fix(csharp): serialize oneOf referenced models in generichost --- .../generichost/JsonConverter.mustache | 32 +++++++++++++++++ .../Org.OpenAPITools.Test/Model/FruitTests.cs | 36 +++++++++++++++++++ .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 17 +++++++++ 3 files changed, 85 insertions(+) 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..120f4dc0acd2 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 @@ -376,7 +376,39 @@ {{/children}} {{/discriminator}} + {{^model.discriminator}} + {{#composedSchemas}} + {{#oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + {{#isPrimitiveType}} + 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; + } + + {{/isPrimitiveType}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/oneOf}} + {{/composedSchemas}} + {{/model.discriminator}} writer.WriteStartObject(); + {{^model.discriminator}} + {{#composedSchemas}} + {{#oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + {{^isPrimitiveType}} + 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); + } + + {{/isPrimitiveType}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/oneOf}} + {{/composedSchemas}} + {{/model.discriminator}} {{#model.discriminator}} {{#model.hasDiscriminatorWithNonEmptyMapping}} 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 b122efb51e3d..c0510540b7ff 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(); From e55db642dddd92f80f755fafc92fb972c198b85c Mon Sep 17 00:00:00 2001 From: madhu <134006164+madhu1218@users.noreply.github.com> Date: Mon, 10 Aug 2026 23:48:51 -0400 Subject: [PATCH 2/5] fix(csharp): handle generichost oneOf converter edge cases --- .../csharp/libraries/generichost/JsonConverter.mustache | 8 +++++--- .../net8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) 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 120f4dc0acd2..cff653bf3c39 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 @@ -397,14 +397,16 @@ {{#composedSchemas}} {{#oneOf}} {{^vendorExtensions.x-duplicated-data-type}} - {{^isPrimitiveType}} + {{#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())); + {{baseType}}JsonConverter {{#lambda.camelcase_sanitize_param}}{{baseType}}JsonConverter{{/lambda.camelcase_sanitize_param}} = new {{baseType}}JsonConverter(); {{#lambda.camelcase_sanitize_param}}{{baseType}}JsonConverter{{/lambda.camelcase_sanitize_param}}.WriteProperties(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); } - {{/isPrimitiveType}} + {{/isContainer}} + {{/isModel}} {{/vendorExtensions.x-duplicated-data-type}} {{/oneOf}} {{/composedSchemas}} 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 c0510540b7ff..61cd204f6dba 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 @@ -239,19 +239,19 @@ public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOpt writer.WriteStartObject(); if (fruit.Apple != null) { - AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); + AppleJsonConverter appleJsonConverter = new AppleJsonConverter(); appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); } if (fruit.Banana != null) { - BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); + BananaJsonConverter bananaJsonConverter = new BananaJsonConverter(); bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); } if (fruit.Orange != null) { - OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); + OrangeJsonConverter orangeJsonConverter = new OrangeJsonConverter(); orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); } From c548cf9883890ece3feb726c0d353d6ba4a81b29 Mon Sep 17 00:00:00 2001 From: Codex Date: Wed, 2 Sep 2026 23:39:41 -0300 Subject: [PATCH 3/5] fix(csharp): address generichost oneOf review feedback --- .../generichost/JsonConverter.mustache | 18 +++++++++--- .../Model/OneOfNullableTest.cs | 12 ++++++++ .../ParentWithPluralOneOfPropertyNumber.cs | 12 ++++++++ .../Model/OneOfArrayRequestTests.cs | 27 +++++++++++++++++ .../Model/OneOfArrayRequest.cs | 12 ++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 17 +++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 17 +++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 17 +++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 6 ++-- .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 17 +++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 11 +++++++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 11 +++++++ .../Model/MixedOneOfContent.cs | 29 +++++++++++++++++++ .../src/Org.OpenAPITools/Model/OneOfString.cs | 6 ++++ .../Model/PolymorphicProperty.cs | 24 +++++++++++++++ 100 files changed, 1606 insertions(+), 7 deletions(-) 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 cff653bf3c39..316b38329da5 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 @@ -379,16 +379,26 @@ {{^model.discriminator}} {{#composedSchemas}} {{#oneOf}} - {{^vendorExtensions.x-duplicated-data-type}} {{#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; } - {{/isPrimitiveType}} {{/vendorExtensions.x-duplicated-data-type}} + {{/isContainer}} + {{/isPrimitiveType}} {{/oneOf}} {{/composedSchemas}} {{/model.discriminator}} @@ -401,7 +411,7 @@ {{^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}} = new {{baseType}}JsonConverter(); + {{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); } @@ -712,4 +722,4 @@ {{/lambda.trimLineBreaks}} {{/lambda.trimTrailingWithNewLine}} } - } \ 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..523e4981cf08 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 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 @@ -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/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/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/Model/Fruit.cs index 976e6e8a01cb..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 @@ -239,19 +239,19 @@ public override void Write(Utf8JsonWriter writer, Fruit fruit, JsonSerializerOpt writer.WriteStartObject(); if (fruit.Apple != null) { - AppleJsonConverter appleJsonConverter = new AppleJsonConverter(); + AppleJsonConverter appleJsonConverter = (AppleJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Apple.GetType())); appleJsonConverter.WriteProperties(writer, fruit.Apple, jsonSerializerOptions); } if (fruit.Banana != null) { - BananaJsonConverter bananaJsonConverter = new BananaJsonConverter(); + BananaJsonConverter bananaJsonConverter = (BananaJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Banana.GetType())); bananaJsonConverter.WriteProperties(writer, fruit.Banana, jsonSerializerOptions); } if (fruit.Orange != null) { - OrangeJsonConverter orangeJsonConverter = new OrangeJsonConverter(); + OrangeJsonConverter orangeJsonConverter = (OrangeJsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert(fruit.Orange.GetType())); orangeJsonConverter.WriteProperties(writer, fruit.Orange, jsonSerializerOptions); } 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..523e4981cf08 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/FruitReq.cs index 440fbefb11ac..ac498f51caf9 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/MixedOneOfContent.cs index 88d0a9a352de..270d653642cd 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/OneOfString.cs index af0ceaa278b0..b5b0a324b1eb 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 @@ -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/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/PolymorphicProperty.cs index befe6e02ec3a..c7ef5eda6387 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 @@ -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/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); From 65de16dbf753adeb25b7f1795cb0b96022adcf55 Mon Sep 17 00:00:00 2001 From: madhu <134006164+madhu1218@users.noreply.github.com> Date: Thu, 3 Sep 2026 01:11:03 -0400 Subject: [PATCH 4/5] fix(csharp): deserialize primitive oneOf values in GenericHost --- .../generichost/JsonConverter.mustache | 725 ------------------ .../src/test/resources/3_0/oneOf.yaml | 106 ++- .../src/Org.OpenAPITools/Model/Fruit.cs | 38 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 38 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 3 - .../Model/MixedOneOfContent.cs | 57 +- .../Org.OpenAPITools/Model/NullableShape.cs | 3 - .../src/Org.OpenAPITools/Model/OneOfString.cs | 3 - .../src/Org.OpenAPITools/Model/Pig.cs | 3 - .../Model/PolymorphicProperty.cs | 50 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 3 - .../src/Org.OpenAPITools/Model/Shape.cs | 3 - .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 3 - .../src/Org.OpenAPITools/Model/Triangle.cs | 3 - .../src/Org.OpenAPITools/Model/Fruit.cs | 38 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 38 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 3 - .../Model/MixedOneOfContent.cs | 57 +- .../Org.OpenAPITools/Model/NullableShape.cs | 3 - .../src/Org.OpenAPITools/Model/OneOfString.cs | 3 - .../src/Org.OpenAPITools/Model/Pig.cs | 3 - .../Model/PolymorphicProperty.cs | 50 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 3 - .../src/Org.OpenAPITools/Model/Shape.cs | 3 - .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 3 - .../src/Org.OpenAPITools/Model/Triangle.cs | 3 - 26 files changed, 294 insertions(+), 951 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache 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 deleted file mode 100644 index 316b38329da5..000000000000 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache +++ /dev/null @@ -1,725 +0,0 @@ - /// - /// A Json converter for type - /// - {{>visibility}} partial class {{classname}}JsonConverter : JsonConverter<{{classname}}> - { - partial void OnCreated(); - - /// - /// Initializes a new instance of the class. - /// - public {{classname}}JsonConverter() - { - OnCreated(); - } - - {{#allVars}} - {{#isDateTime}} - /// - /// The format to use to serialize {{name}} - /// - public string {{name}}Format { get; private set; } = "{{{dateTimeFormat}}}"; - - {{/isDateTime}} - {{#isDate}} - /// - /// The format to use to serialize {{name}} - /// - public string {{name}}Format { get; private set; } = "{{{dateFormat}}}"; - - {{/isDate}} - {{/allVars}} - /// - /// Deserializes json to - /// - /// - /// - /// - /// - /// - public override {{classname}} Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) - { - {{#lambda.trimTrailingWithNewLine}} - {{#lambda.trimLineBreaks}} - int currentDepth = utf8JsonReader.CurrentDepth; - - if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) - throw new JsonException(); - - JsonTokenType startingTokenType = utf8JsonReader.TokenType; - - {{#allVars}} - Option<{{#isInnerEnum}}{{^isMap}}{{classname}}.{{/isMap}}{{/isInnerEnum}}{{{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}} - - {{/-last}} - {{/allVars}} - {{#discriminator}} - {{#children}} - {{#-first}} - string{{nrt?}} discriminator = ClientUtils.GetDiscriminator(utf8JsonReader, "{{discriminator.propertyBaseName}}"); - - {{/-first}} - if (discriminator != null && discriminator.Equals("{{name}}")) - return JsonSerializer.Deserialize<{{{classname}}}>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value."); - - {{/children}} - {{/discriminator}} - {{#model.discriminator}} - {{#model.hasDiscriminatorWithNonEmptyMapping}} - {{#mappedModels}} - {{#model}} - {{^vendorExtensions.x-duplicated-data-type}} - {{classname}}{{nrt?}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}} = null; - {{#-last}} - - {{/-last}} - {{/vendorExtensions.x-duplicated-data-type}} - {{/model}} - {{/mappedModels}} - Utf8JsonReader utf8JsonReaderDiscriminator = utf8JsonReader; - while (utf8JsonReaderDiscriminator.Read()) - { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderDiscriminator.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderDiscriminator.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderDiscriminator.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderDiscriminator.CurrentDepth) - break; - - if (utf8JsonReaderDiscriminator.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderDiscriminator.CurrentDepth - 1) - { - string{{nrt?}} localVarJsonPropertyName = utf8JsonReaderDiscriminator.GetString(); - utf8JsonReaderDiscriminator.Read(); - if (localVarJsonPropertyName{{nrt?}}.Equals("{{propertyBaseName}}"){{#nrt}} ?? false{{/nrt}}) - { - string{{nrt?}} discriminator = utf8JsonReaderDiscriminator.GetString(); - {{#mappedModels}} - if (discriminator{{nrt?}}.Equals("{{mappingName}}"){{#nrt}} ?? false{{/nrt}}) - { - Utf8JsonReader utf8JsonReader{{model.classname}} = utf8JsonReader; - {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}} = JsonSerializer.Deserialize<{{{model.classname}}}>(ref utf8JsonReader{{model.classname}}, jsonSerializerOptions); - } - {{/mappedModels}} - } - } - } - - {{/model.hasDiscriminatorWithNonEmptyMapping}} - {{/model.discriminator}} - {{^model.discriminator}} - {{#composedSchemas}} - {{#oneOf}} - {{^vendorExtensions.x-duplicated-data-type}} - {{{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 (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}} - {{/vendorExtensions.x-duplicated-data-type}} - {{/oneOf}} - - {{#anyOf}} - {{^vendorExtensions.x-duplicated-data-type}} - {{{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 utf8JsonReaderAnyOf = utf8JsonReader; - while (utf8JsonReaderAnyOf.Read()) - { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderAnyOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderAnyOf.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderAnyOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderAnyOf.CurrentDepth) - break; - - if (utf8JsonReaderAnyOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderAnyOf.CurrentDepth - 1) - { - {{#anyOf}} - 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}} - {{/anyOf}} - } - } - {{/-last}} - {{/vendorExtensions.x-duplicated-data-type}} - {{/anyOf}} - - {{/composedSchemas}} - {{/model.discriminator}} - while (utf8JsonReader.Read()) - { - if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) - break; - - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) - break; - - if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) - { - string{{nrt?}} localVarJsonPropertyName = utf8JsonReader.GetString(); - utf8JsonReader.Read(); - - switch (localVarJsonPropertyName) - { - {{#allVars}} - case "{{baseName}}": - {{#isString}} - {{^isMap}} - {{^isEnum}} - {{^isUuid}} - {{#isDecimal}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.GetDecimal()); - {{/isDecimal}} - {{^isDecimal}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.GetString(){{^isNullable}}{{nrt!}}{{/isNullable}}); - {{/isDecimal}} - {{/isUuid}} - {{/isEnum}} - {{/isMap}} - {{/isString}} - {{#isBoolean}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (bool?)null : utf8JsonReader.GetBoolean()); - {{/isBoolean}} - {{#isNumeric}} - {{^isEnum}} - {{#isDouble}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (double?)null : utf8JsonReader.GetDouble()); - {{/isDouble}} - {{#isDecimal}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (decimal?)null : utf8JsonReader.GetDecimal()); - {{/isDecimal}} - {{#isFloat}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (float?)null : (float)utf8JsonReader.GetDouble()); - {{/isFloat}} - {{#isLong}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? ({{#vendorExtensions.x-unsigned}}u{{/vendorExtensions.x-unsigned}}long?)null : utf8JsonReader.Get{{#vendorExtensions.x-unsigned}}U{{/vendorExtensions.x-unsigned}}Int64()); - {{/isLong}} - {{^isLong}} - {{^isFloat}} - {{^isDecimal}} - {{^isDouble}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? ({{#vendorExtensions.x-unsigned}}u{{/vendorExtensions.x-unsigned}}int?)null : utf8JsonReader.Get{{#vendorExtensions.x-unsigned}}U{{/vendorExtensions.x-unsigned}}Int32()); - {{/isDouble}} - {{/isDecimal}} - {{/isFloat}} - {{/isLong}} - {{/isEnum}} - {{/isNumeric}} - {{#isDate}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize<{{#supportsDateOnly}}DateOnly{{/supportsDateOnly}}{{^supportsDateOnly}}DateTime{{/supportsDateOnly}}{{#isNullable}}?{{/isNullable}}>(ref utf8JsonReader, jsonSerializerOptions)); - {{/isDate}} - {{#isDateTime}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize(ref utf8JsonReader, jsonSerializerOptions)); - {{/isDateTime}} - {{#isEnum}} - {{^isMap}} - {{#isInnerEnum}} - {{#vendorExtensions.x-enum-byte}} - {{>NumericInnerEnumJsonRead}} - {{/vendorExtensions.x-enum-byte}} - {{^vendorExtensions.x-enum-byte}} - {{#isNumeric}} - {{>NumericInnerEnumJsonRead}} - {{/isNumeric}} - {{^isNumeric}} - string{{nrt?}} {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = utf8JsonReader.GetString(); - {{#isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue == null) - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}null); - else - {{/isNullable}} - {{^isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue != null) - {{/isNullable}} - { - {{classname}}.{{{datatypeWithEnum}}}? {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}Value = {{classname}}.{{{datatypeWithEnum}}}FromStringOrDefault({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue); - if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}Value == null) - throw new JsonException(); - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}Value); - } - {{/isNumeric}} - {{/vendorExtensions.x-enum-byte}} - {{/isInnerEnum}} - {{^isInnerEnum}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize<{{{datatypeWithEnum}}}?>(ref utf8JsonReader, jsonSerializerOptions)); - {{/isInnerEnum}} - {{/isMap}} - {{/isEnum}} - {{#isUuid}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (Guid?)null : utf8JsonReader.GetGuid()); - {{/isUuid}} - {{^isUuid}} - {{^isEnum}} - {{^isString}} - {{^isBoolean}} - {{^isNumeric}} - {{^isDate}} - {{^isDateTime}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize<{{{datatypeWithEnum}}}>(ref utf8JsonReader, jsonSerializerOptions){{^isNullable}}{{nrt!}}{{/isNullable}}); - {{/isDateTime}} - {{/isDate}} - {{/isNumeric}} - {{/isBoolean}} - {{/isString}} - {{/isEnum}} - {{/isUuid}} - break; - {{/allVars}} - default: - break; - } - } - } - - {{#allVars}} - {{#required}} - if (!{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}.IsSet) - throw new ArgumentException("Property is required for class {{classname}}.", nameof({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}})); - - {{/required}} - {{/allVars}} - {{#allVars}} - {{^isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}.IsSet && {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}.Value == null) - throw new ArgumentNullException(nameof({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}), "Property is not nullable for class {{classname}}."); - - {{/isNullable}} - {{/allVars}} - {{^vendorExtensions.x-duplicated-data-type}} - {{#model.discriminator}} - {{#model.hasDiscriminatorWithNonEmptyMapping}} - {{^model.composedSchemas.anyOf}} - {{#mappedModels}} - if ({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}} != null) - return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{^isDiscriminator}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/isDiscriminator}}{{/allVars}}{{/lambda.joinWithComma}}); - - {{#-last}} - throw new JsonException(); - {{/-last}} - {{/mappedModels}} - {{/model.composedSchemas.anyOf}} - {{/model.hasDiscriminatorWithNonEmptyMapping}} - {{/model.discriminator}} - {{^composedSchemas.oneOf}} - {{^required}} - {{#model.composedSchemas.anyOf}} - Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} == null - ? default - : new Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); - {{/model.composedSchemas.anyOf}} - {{#-last}} - - {{/-last}} - {{/required}} - return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue{{#required}}.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/required}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{^isDiscriminator}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/isDiscriminator}}{{/allVars}}{{/lambda.joinWithComma}}); - {{/composedSchemas.oneOf}} - {{^model.discriminator}} - {{#composedSchemas}} - {{#oneOf}} - {{^vendorExtensions.x-duplicated-data-type}} - if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} != null) - return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{^isDiscriminator}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}ParsedValue{{/required}} {{/isDiscriminator}}{{/allVars}}{{/lambda.joinWithComma}}); - - {{/vendorExtensions.x-duplicated-data-type}} - {{#-last}} - throw new JsonException(); - {{/-last}} - {{/oneOf}} - {{/composedSchemas}} - {{/model.discriminator}} - {{/vendorExtensions.x-duplicated-data-type}} - {{/lambda.trimLineBreaks}} - {{/lambda.trimTrailingWithNewLine}} - } - - /// - /// Serializes a - /// - /// - /// - /// - /// - public override void Write(Utf8JsonWriter writer, {{classname}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions jsonSerializerOptions) - { - {{#lambda.trimLineBreaks}} - {{#lambda.copyText}} - {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}} - {{/lambda.copyText}} - {{#discriminator}} - {{#children}} - if ({{#lambda.paste}}{{/lambda.paste}} is {{classname}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}){ - JsonSerializer.Serialize<{{{classname}}}>(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, jsonSerializerOptions); - return; - } - - {{/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}} - {{#composedSchemas.oneOf}} - {{^vendorExtensions.x-duplicated-data-type}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) - {{#isPrimitiveType}} - {{#isString}} - writer.WriteString("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value); - {{/isString}} - {{#isBoolean}} - writer.WriteBoolean("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); - {{/isBoolean}} - {{#isNumeric}} - writer.WriteNumber("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); - {{/isNumeric}} - {{/isPrimitiveType}} - {{^isPrimitiveType}} - { - {{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); - } - {{/isPrimitiveType}} - - {{/vendorExtensions.x-duplicated-data-type}} - {{/composedSchemas.oneOf}} - {{/model.hasDiscriminatorWithNonEmptyMapping}} - {{/model.discriminator}} - {{^model.discriminator}} - {{#composedSchemas}} - {{#anyOf}} - if ({{#lambda.joinWithAmpersand}}{{^required}}{{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet {{/required}}{{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}} != null{{/lambda.joinWithAmpersand}}) - {{#isPrimitiveType}} - {{#isString}} - writer.WriteString("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value); - {{/isString}} - {{#isBoolean}} - writer.WriteBoolean("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); - {{/isBoolean}} - {{#isNumeric}} - writer.WriteNumber("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); - {{/isNumeric}} - {{#isEnum}} - { - {{datatypeWithEnum}}JsonConverter {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter = ({{datatypeWithEnum}}JsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}}.GetType())); - {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter.Write{{^isEnumRef}}Properties{{/isEnumRef}}(writer, {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}, jsonSerializerOptions); - } - {{/isEnum}} - {{/isPrimitiveType}} - {{^isPrimitiveType}} - { - {{datatypeWithEnum}}JsonConverter {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter = ({{datatypeWithEnum}}JsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}}.GetType())); - {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter.Write{{^isEnumRef}}Properties{{/isEnumRef}}(writer, {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}, jsonSerializerOptions); - } - {{/isPrimitiveType}} - - {{/anyOf}} - {{/composedSchemas}} - {{/model.discriminator}} - WriteProperties(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, jsonSerializerOptions); - writer.WriteEndObject(); - {{/lambda.trimLineBreaks}} - } - - /// - /// Serializes the properties of - /// - /// - /// - /// - /// - public void WriteProperties(Utf8JsonWriter writer, {{classname}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions jsonSerializerOptions) - { - {{#lambda.trimTrailingWithNewLine}} - {{#lambda.trimLineBreaks}} - {{#allVars}} - {{^isDiscriminator}} - {{^isNullable}} - {{#vendorExtensions.x-is-reference-type}} - if ({{^required}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet && {{/required}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} == null) - throw new ArgumentNullException(nameof({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}), "Property is required for class {{classname}}."); - - {{/vendorExtensions.x-is-reference-type}} - {{/isNullable}} - {{/isDiscriminator}} - {{/allVars}} - {{#allVars}} - {{#isDiscriminator}} - {{^model.composedSchemas.anyOf}} - {{^model.composedSchemas.oneOf}} - writer.WriteString("{{baseName}}", {{^isEnum}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{/isEnum}}{{#isEnum}}{{#isInnerEnum}}{{classname}}.{{{datatypeWithEnum}}}ToJsonValue{{/isInnerEnum}}{{^isInnerEnum}}{{{datatypeWithEnum}}}ValueConverter.ToJsonValue{{/isInnerEnum}}({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}.Value{{/required}}){{/isEnum}}); - - {{/model.composedSchemas.oneOf}} - {{/model.composedSchemas.anyOf}} - {{/isDiscriminator}} - {{^isDiscriminator}} - {{#isString}} - {{^isMap}} - {{^isEnum}} - {{^isUuid}} - {{#lambda.copyText}} - {{#isDecimal}} - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}.ToString()); - {{/isDecimal}} - {{^isDecimal}} - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}); - {{/isDecimal}} - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isUuid}} - {{/isEnum}} - {{/isMap}} - {{/isString}} - {{#isBoolean}} - {{#lambda.copyText}} - writer.WriteBoolean("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}); - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isBoolean}} - {{^isEnum}} - {{#isNumeric}} - {{#lambda.copyText}} - writer.WriteNumber("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}); - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isNumeric}} - {{/isEnum}} - {{#isDate}} - {{#lambda.copyText}} - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}.ToString({{name}}Format)); - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isDate}} - {{#isDateTime}} - {{#lambda.copyText}} - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}.ToString({{name}}Format)); - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isDateTime}} - {{#isEnum}} - {{#isNumeric}} - {{#lambda.copyText}} - writer.WriteNumber("{{baseName}}", {{#isInnerEnum}}{{classname}}.{{{datatypeWithEnum}}}ToJsonValue{{/isInnerEnum}}{{^isInnerEnum}}{{{datatypeWithEnum}}}ValueConverter.ToJsonValue{{/isInnerEnum}}({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}})); - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isNumeric}} - {{^isMap}} - {{^isNumeric}} - {{#isInnerEnum}} - {{#isNullable}} - var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{classname}}.{{{datatypeWithEnum}}}ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}{{nrt!}}.Value{{/isNullable}}{{/required}}); - if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue != null) - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue); - else - writer.WriteNull("{{baseName}}"); - - {{/isNullable}} - {{^isNullable}} - var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{classname}}.{{{datatypeWithEnum}}}ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}{{nrt!}}.Value{{/isNullable}}{{/required}}); - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue); - {{/isNullable}} - {{/isInnerEnum}} - {{^isInnerEnum}} - {{#lambda.copyText}} - {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} - {{/lambda.copyText}} - {{#required}} - {{#isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} == null) - writer.WriteNull("{{baseName}}"); - else - { - var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}.Value); - {{#allowableValues}} - {{#enumVars}} - {{#-first}} - {{#isString}} - if ({{#lambda.paste}}{{/lambda.paste}}RawValue != null){{! we cant use name here because enumVar also has a name property, so use the paste lambda instead }} - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{nameInPascalCase}}{{/lambda.camelcase_sanitize_param}}RawValue); - else - writer.WriteNull("{{baseName}}"); - {{/isString}} - {{^isString}} - writer.WriteNumber("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{nameInPascalCase}}{{/lambda.camelcase_sanitize_param}}RawValue); - {{/isString}} - {{/-first}} - {{/enumVars}} - {{/allowableValues}} - } - {{/isNullable}} - {{^isNullable}} - var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}); - {{#allowableValues}} - {{#enumVars}} - {{#-first}} - {{^isNumeric}} - writer.WriteString("{{baseName}}", {{#lambda.paste}}{{/lambda.paste}}RawValue); - {{/isNumeric}} - {{#isNumeric}} - writer.WriteNumber("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{#lambda.paste}}{{/lambda.paste}}{{/lambda.camelcase_sanitize_param}}RawValue); - {{/isNumeric}} - {{/-first}} - {{/enumVars}} - {{/allowableValues}} - {{/isNullable}} - - {{/required}} - {{^required}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet) - {{#isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option{{nrt!}}.Value != null) - { - var {{#lambda.paste}}{{/lambda.paste}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value{{nrt!}}.Value); - writer.{{#lambda.first}}{{#allowableValues}}{{#enumVars}}{{^isNumeric}}WriteString {{/isNumeric}}{{#isNumeric}}WriteNumber {{/isNumeric}}{{/enumVars}}{{/allowableValues}}{{/lambda.first}}("{{baseName}}", {{#lambda.paste}}{{/lambda.paste}}RawValue); - } - else - writer.WriteNull("{{baseName}}"); - {{/isNullable}} - {{^isNullable}} - { - var {{#lambda.paste}}{{/lambda.paste}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{nrt!}}.Value); - writer.{{#lambda.first}}{{#allowableValues}}{{#enumVars}}{{^isNumeric}}WriteString {{/isNumeric}}{{#isNumeric}}WriteNumber {{/isNumeric}}{{/enumVars}}{{/allowableValues}}{{/lambda.first}}("{{baseName}}", {{#lambda.paste}}{{/lambda.paste}}RawValue); - } - {{/isNullable}} - {{/required}} - {{/isInnerEnum}} - {{/isNumeric}} - {{/isMap}} - {{/isEnum}} - {{#isUuid}} - {{#lambda.copyText}} - writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}); - {{/lambda.copyText}} - {{#lambda.indent3}} - {{>WriteProperty}}{{! prevent indent}} - {{/lambda.indent3}} - {{/isUuid}} - {{^isUuid}} - {{^isEnum}} - {{^isString}} - {{^isBoolean}} - {{^isNumeric}} - {{^isDate}} - {{^isDateTime}} - {{#required}} - {{#isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) - { - writer.WritePropertyName("{{baseName}}"); - JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); - } - else - writer.WriteNull("{{baseName}}"); - {{/isNullable}} - {{^isNullable}} - writer.WritePropertyName("{{baseName}}"); - JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); - {{/isNullable}} - {{/required}} - {{^required}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet) - {{#isNullable}} - if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value != null) - { - writer.WritePropertyName("{{baseName}}"); - JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); - } - else - writer.WriteNull("{{baseName}}"); - {{/isNullable}} - {{^isNullable}} - { - writer.WritePropertyName("{{baseName}}"); - JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); - } - {{/isNullable}} - {{/required}} - {{/isDateTime}} - {{/isDate}} - {{/isNumeric}} - {{/isBoolean}} - {{/isString}} - {{/isEnum}} - {{/isUuid}} - {{/isDiscriminator}} - {{/allVars}} - {{/lambda.trimLineBreaks}} - {{/lambda.trimTrailingWithNewLine}} - } - } 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/net8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index 523e4981cf08..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; + Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - 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; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + 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); + } } } 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 ac498f51caf9..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; + Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - 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; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + 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); + } } } 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 270d653642cd..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); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); + + 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; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); - Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); - Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + + Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + } } } 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 b5b0a324b1eb..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; 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 c7ef5eda6387..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; + + 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 utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); - Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - Utf8JsonReader utf8JsonReaderList = utf8JsonReader; - ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + + Utf8JsonReader utf8JsonReaderList = utf8JsonReader; + ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + } } } 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/net9/FormModels/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/Fruit.cs index 523e4981cf08..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; + Utf8JsonReader utf8JsonReaderApple = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderApple, jsonSerializerOptions, out apple); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - 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; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBanana = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBanana, jsonSerializerOptions, out banana); + 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); + } } } 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 ac498f51caf9..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; + Utf8JsonReader utf8JsonReaderAppleReq = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderAppleReq, jsonSerializerOptions, out appleReq); - if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) - break; - - 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; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBananaReq = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBananaReq, jsonSerializerOptions, out bananaReq); + 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); + } } } 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 270d653642cd..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); - if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); + + 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; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderOneOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderOneOf.CurrentDepth) + break; - Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); + if (utf8JsonReaderOneOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderOneOf.CurrentDepth - 1) + { + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); + Utf8JsonReader utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); - Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + Utf8JsonReader utf8JsonReaderInt = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderInt, jsonSerializerOptions, out varInt); - Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + Utf8JsonReader utf8JsonReaderDecimal = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderDecimal, jsonSerializerOptions, out varDecimal); + + Utf8JsonReader utf8JsonReaderMixedSubId = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderMixedSubId, jsonSerializerOptions, out mixedSubId); + } } } 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 b5b0a324b1eb..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; 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 c7ef5eda6387..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; + + 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 utf8JsonReaderBool = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderBool, jsonSerializerOptions, out varBool); - Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; - ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + Utf8JsonReader utf8JsonReaderString = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderString, jsonSerializerOptions, out varString); - Utf8JsonReader utf8JsonReaderList = utf8JsonReader; - ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + Utf8JsonReader utf8JsonReaderObject = utf8JsonReader; + ClientUtils.TryDeserialize(ref utf8JsonReaderObject, jsonSerializerOptions, out varObject); + + Utf8JsonReader utf8JsonReaderList = utf8JsonReader; + ClientUtils.TryDeserialize>(ref utf8JsonReaderList, jsonSerializerOptions, out list); + } } } 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; From f4118dc7e5459a4924e0d8468b2524850439154c Mon Sep 17 00:00:00 2001 From: madhu <134006164+madhu1218@users.noreply.github.com> Date: Thu, 3 Sep 2026 01:15:17 -0400 Subject: [PATCH 5/5] fix(csharp): restore GenericHost JsonConverter template --- .../generichost/JsonConverter.mustache | 758 ++++++++++++++++++ 1 file changed, 758 insertions(+) create mode 100644 modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache 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 new file mode 100644 index 000000000000..456f4635013c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache @@ -0,0 +1,758 @@ + /// + /// A Json converter for type + /// + {{>visibility}} partial class {{classname}}JsonConverter : JsonConverter<{{classname}}> + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public {{classname}}JsonConverter() + { + OnCreated(); + } + + {{#allVars}} + {{#isDateTime}} + /// + /// The format to use to serialize {{name}} + /// + public string {{name}}Format { get; private set; } = "{{{dateTimeFormat}}}"; + + {{/isDateTime}} + {{#isDate}} + /// + /// The format to use to serialize {{name}} + /// + public string {{name}}Format { get; private set; } = "{{{dateFormat}}}"; + + {{/isDate}} + {{/allVars}} + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override {{classname}} Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + {{#lambda.trimTrailingWithNewLine}} + {{#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; + + {{#allVars}} + Option<{{#isInnerEnum}}{{^isMap}}{{classname}}.{{/isMap}}{{/isInnerEnum}}{{{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}} + + {{/-last}} + {{/allVars}} + {{#discriminator}} + {{#children}} + {{#-first}} + string{{nrt?}} discriminator = ClientUtils.GetDiscriminator(utf8JsonReader, "{{discriminator.propertyBaseName}}"); + + {{/-first}} + if (discriminator != null && discriminator.Equals("{{name}}")) + return JsonSerializer.Deserialize<{{{classname}}}>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value."); + + {{/children}} + {{/discriminator}} + {{#model.discriminator}} + {{#model.hasDiscriminatorWithNonEmptyMapping}} + {{#mappedModels}} + {{#model}} + {{^vendorExtensions.x-duplicated-data-type}} + {{classname}}{{nrt?}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}} = null; + {{#-last}} + + {{/-last}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/model}} + {{/mappedModels}} + Utf8JsonReader utf8JsonReaderDiscriminator = utf8JsonReader; + while (utf8JsonReaderDiscriminator.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderDiscriminator.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderDiscriminator.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderDiscriminator.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderDiscriminator.CurrentDepth) + break; + + if (utf8JsonReaderDiscriminator.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderDiscriminator.CurrentDepth - 1) + { + string{{nrt?}} localVarJsonPropertyName = utf8JsonReaderDiscriminator.GetString(); + utf8JsonReaderDiscriminator.Read(); + if (localVarJsonPropertyName{{nrt?}}.Equals("{{propertyBaseName}}"){{#nrt}} ?? false{{/nrt}}) + { + string{{nrt?}} discriminator = utf8JsonReaderDiscriminator.GetString(); + {{#mappedModels}} + if (discriminator{{nrt?}}.Equals("{{mappingName}}"){{#nrt}} ?? false{{/nrt}}) + { + Utf8JsonReader utf8JsonReader{{model.classname}} = utf8JsonReader; + {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}} = JsonSerializer.Deserialize<{{{model.classname}}}>(ref utf8JsonReader{{model.classname}}, jsonSerializerOptions); + } + {{/mappedModels}} + } + } + } + + {{/model.hasDiscriminatorWithNonEmptyMapping}} + {{/model.discriminator}} + {{^model.discriminator}} + {{#composedSchemas}} + {{#oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + {{{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}} + + + 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}} + + {{/-last}} + {{/oneOf}} + } + else + { + 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 (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}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/oneOf}} + + {{#anyOf}} + {{^vendorExtensions.x-duplicated-data-type}} + {{{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 utf8JsonReaderAnyOf = utf8JsonReader; + while (utf8JsonReaderAnyOf.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReaderAnyOf.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReaderAnyOf.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReaderAnyOf.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReaderAnyOf.CurrentDepth) + break; + + if (utf8JsonReaderAnyOf.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReaderAnyOf.CurrentDepth - 1) + { + {{#anyOf}} + 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}} + {{/anyOf}} + } + } + {{/-last}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/anyOf}} + + {{/composedSchemas}} + {{/model.discriminator}} + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string{{nrt?}} localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + {{#allVars}} + case "{{baseName}}": + {{#isString}} + {{^isMap}} + {{^isEnum}} + {{^isUuid}} + {{#isDecimal}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.GetDecimal()); + {{/isDecimal}} + {{^isDecimal}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.GetString(){{^isNullable}}{{nrt!}}{{/isNullable}}); + {{/isDecimal}} + {{/isUuid}} + {{/isEnum}} + {{/isMap}} + {{/isString}} + {{#isBoolean}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (bool?)null : utf8JsonReader.GetBoolean()); + {{/isBoolean}} + {{#isNumeric}} + {{^isEnum}} + {{#isDouble}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (double?)null : utf8JsonReader.GetDouble()); + {{/isDouble}} + {{#isDecimal}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (decimal?)null : utf8JsonReader.GetDecimal()); + {{/isDecimal}} + {{#isFloat}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (float?)null : (float)utf8JsonReader.GetDouble()); + {{/isFloat}} + {{#isLong}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? ({{#vendorExtensions.x-unsigned}}u{{/vendorExtensions.x-unsigned}}long?)null : utf8JsonReader.Get{{#vendorExtensions.x-unsigned}}U{{/vendorExtensions.x-unsigned}}Int64()); + {{/isLong}} + {{^isLong}} + {{^isFloat}} + {{^isDecimal}} + {{^isDouble}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? ({{#vendorExtensions.x-unsigned}}u{{/vendorExtensions.x-unsigned}}int?)null : utf8JsonReader.Get{{#vendorExtensions.x-unsigned}}U{{/vendorExtensions.x-unsigned}}Int32()); + {{/isDouble}} + {{/isDecimal}} + {{/isFloat}} + {{/isLong}} + {{/isEnum}} + {{/isNumeric}} + {{#isDate}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize<{{#supportsDateOnly}}DateOnly{{/supportsDateOnly}}{{^supportsDateOnly}}DateTime{{/supportsDateOnly}}{{#isNullable}}?{{/isNullable}}>(ref utf8JsonReader, jsonSerializerOptions)); + {{/isDate}} + {{#isDateTime}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize(ref utf8JsonReader, jsonSerializerOptions)); + {{/isDateTime}} + {{#isEnum}} + {{^isMap}} + {{#isInnerEnum}} + {{#vendorExtensions.x-enum-byte}} + {{>NumericInnerEnumJsonRead}} + {{/vendorExtensions.x-enum-byte}} + {{^vendorExtensions.x-enum-byte}} + {{#isNumeric}} + {{>NumericInnerEnumJsonRead}} + {{/isNumeric}} + {{^isNumeric}} + string{{nrt?}} {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = utf8JsonReader.GetString(); + {{#isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue == null) + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}null); + else + {{/isNullable}} + {{^isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue != null) + {{/isNullable}} + { + {{classname}}.{{{datatypeWithEnum}}}? {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}Value = {{classname}}.{{{datatypeWithEnum}}}FromStringOrDefault({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue); + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}Value == null) + throw new JsonException(); + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}Value); + } + {{/isNumeric}} + {{/vendorExtensions.x-enum-byte}} + {{/isInnerEnum}} + {{^isInnerEnum}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize<{{{datatypeWithEnum}}}?>(ref utf8JsonReader, jsonSerializerOptions)); + {{/isInnerEnum}} + {{/isMap}} + {{/isEnum}} + {{#isUuid}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}utf8JsonReader.TokenType == JsonTokenType.Null ? (Guid?)null : utf8JsonReader.GetGuid()); + {{/isUuid}} + {{^isUuid}} + {{^isEnum}} + {{^isString}} + {{^isBoolean}} + {{^isNumeric}} + {{^isDate}} + {{^isDateTime}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} = {{>OptionProperty}}JsonSerializer.Deserialize<{{{datatypeWithEnum}}}>(ref utf8JsonReader, jsonSerializerOptions){{^isNullable}}{{nrt!}}{{/isNullable}}); + {{/isDateTime}} + {{/isDate}} + {{/isNumeric}} + {{/isBoolean}} + {{/isString}} + {{/isEnum}} + {{/isUuid}} + break; + {{/allVars}} + default: + break; + } + } + } + + {{#allVars}} + {{#required}} + if (!{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}.IsSet) + throw new ArgumentException("Property is required for class {{classname}}.", nameof({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}})); + + {{/required}} + {{/allVars}} + {{#allVars}} + {{^isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}.IsSet && {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}.Value == null) + throw new ArgumentNullException(nameof({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}), "Property is not nullable for class {{classname}}."); + + {{/isNullable}} + {{/allVars}} + {{^vendorExtensions.x-duplicated-data-type}} + {{#model.discriminator}} + {{#model.hasDiscriminatorWithNonEmptyMapping}} + {{^model.composedSchemas.anyOf}} + {{#mappedModels}} + if ({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}} != null) + return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{^isDiscriminator}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/isDiscriminator}}{{/allVars}}{{/lambda.joinWithComma}}); + + {{#-last}} + throw new JsonException(); + {{/-last}} + {{/mappedModels}} + {{/model.composedSchemas.anyOf}} + {{/model.hasDiscriminatorWithNonEmptyMapping}} + {{/model.discriminator}} + {{^composedSchemas.oneOf}} + {{^required}} + {{#model.composedSchemas.anyOf}} + Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} == null + ? default + : new Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); + {{/model.composedSchemas.anyOf}} + {{#-last}} + + {{/-last}} + {{/required}} + return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue{{#required}}.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/required}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{^isDiscriminator}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/isDiscriminator}}{{/allVars}}{{/lambda.joinWithComma}}); + {{/composedSchemas.oneOf}} + {{^model.discriminator}} + {{#composedSchemas}} + {{#oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} != null) + return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{^isDiscriminator}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}ParsedValue{{/required}} {{/isDiscriminator}}{{/allVars}}{{/lambda.joinWithComma}}); + + {{/vendorExtensions.x-duplicated-data-type}} + {{#-last}} + throw new JsonException(); + {{/-last}} + {{/oneOf}} + {{/composedSchemas}} + {{/model.discriminator}} + {{/vendorExtensions.x-duplicated-data-type}} + {{/lambda.trimLineBreaks}} + {{/lambda.trimTrailingWithNewLine}} + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, {{classname}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions jsonSerializerOptions) + { + {{#lambda.trimLineBreaks}} + {{#lambda.copyText}} + {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}} + {{/lambda.copyText}} + {{#discriminator}} + {{#children}} + if ({{#lambda.paste}}{{/lambda.paste}} is {{classname}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}){ + JsonSerializer.Serialize<{{{classname}}}>(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, jsonSerializerOptions); + return; + } + + {{/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}} + {{#composedSchemas.oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) + {{#isPrimitiveType}} + {{#isString}} + writer.WriteString("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value); + {{/isString}} + {{#isBoolean}} + writer.WriteBoolean("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); + {{/isBoolean}} + {{#isNumeric}} + writer.WriteNumber("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); + {{/isNumeric}} + {{/isPrimitiveType}} + {{^isPrimitiveType}} + { + {{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); + } + {{/isPrimitiveType}} + + {{/vendorExtensions.x-duplicated-data-type}} + {{/composedSchemas.oneOf}} + {{/model.hasDiscriminatorWithNonEmptyMapping}} + {{/model.discriminator}} + {{^model.discriminator}} + {{#composedSchemas}} + {{#anyOf}} + if ({{#lambda.joinWithAmpersand}}{{^required}}{{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet {{/required}}{{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}} != null{{/lambda.joinWithAmpersand}}) + {{#isPrimitiveType}} + {{#isString}} + writer.WriteString("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value); + {{/isString}} + {{#isBoolean}} + writer.WriteBoolean("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); + {{/isBoolean}} + {{#isNumeric}} + writer.WriteNumber("{{vendorExtensions.x-base-name}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value.Value); + {{/isNumeric}} + {{#isEnum}} + { + {{datatypeWithEnum}}JsonConverter {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter = ({{datatypeWithEnum}}JsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}}.GetType())); + {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter.Write{{^isEnumRef}}Properties{{/isEnumRef}}(writer, {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}, jsonSerializerOptions); + } + {{/isEnum}} + {{/isPrimitiveType}} + {{^isPrimitiveType}} + { + {{datatypeWithEnum}}JsonConverter {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter = ({{datatypeWithEnum}}JsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}}.GetType())); + {{#lambda.camelcase}}{{datatypeWithEnum}}{{/lambda.camelcase}}JsonConverter.Write{{^isEnumRef}}Properties{{/isEnumRef}}(writer, {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}, jsonSerializerOptions); + } + {{/isPrimitiveType}} + + {{/anyOf}} + {{/composedSchemas}} + {{/model.discriminator}} + WriteProperties(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, jsonSerializerOptions); + writer.WriteEndObject(); + {{/lambda.trimLineBreaks}} + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, {{classname}} {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions jsonSerializerOptions) + { + {{#lambda.trimTrailingWithNewLine}} + {{#lambda.trimLineBreaks}} + {{#allVars}} + {{^isDiscriminator}} + {{^isNullable}} + {{#vendorExtensions.x-is-reference-type}} + if ({{^required}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet && {{/required}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} == null) + throw new ArgumentNullException(nameof({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}), "Property is required for class {{classname}}."); + + {{/vendorExtensions.x-is-reference-type}} + {{/isNullable}} + {{/isDiscriminator}} + {{/allVars}} + {{#allVars}} + {{#isDiscriminator}} + {{^model.composedSchemas.anyOf}} + {{^model.composedSchemas.oneOf}} + writer.WriteString("{{baseName}}", {{^isEnum}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{/isEnum}}{{#isEnum}}{{#isInnerEnum}}{{classname}}.{{{datatypeWithEnum}}}ToJsonValue{{/isInnerEnum}}{{^isInnerEnum}}{{{datatypeWithEnum}}}ValueConverter.ToJsonValue{{/isInnerEnum}}({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}.Value{{/required}}){{/isEnum}}); + + {{/model.composedSchemas.oneOf}} + {{/model.composedSchemas.anyOf}} + {{/isDiscriminator}} + {{^isDiscriminator}} + {{#isString}} + {{^isMap}} + {{^isEnum}} + {{^isUuid}} + {{#lambda.copyText}} + {{#isDecimal}} + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}.ToString()); + {{/isDecimal}} + {{^isDecimal}} + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}); + {{/isDecimal}} + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isUuid}} + {{/isEnum}} + {{/isMap}} + {{/isString}} + {{#isBoolean}} + {{#lambda.copyText}} + writer.WriteBoolean("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}); + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isBoolean}} + {{^isEnum}} + {{#isNumeric}} + {{#lambda.copyText}} + writer.WriteNumber("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}); + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isNumeric}} + {{/isEnum}} + {{#isDate}} + {{#lambda.copyText}} + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}.ToString({{name}}Format)); + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isDate}} + {{#isDateTime}} + {{#lambda.copyText}} + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}.ToString({{name}}Format)); + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isDateTime}} + {{#isEnum}} + {{#isNumeric}} + {{#lambda.copyText}} + writer.WriteNumber("{{baseName}}", {{#isInnerEnum}}{{classname}}.{{{datatypeWithEnum}}}ToJsonValue{{/isInnerEnum}}{{^isInnerEnum}}{{{datatypeWithEnum}}}ValueConverter.ToJsonValue{{/isInnerEnum}}({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}})); + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isNumeric}} + {{^isMap}} + {{^isNumeric}} + {{#isInnerEnum}} + {{#isNullable}} + var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{classname}}.{{{datatypeWithEnum}}}ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}{{nrt!}}.Value{{/isNullable}}{{/required}}); + if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue != null) + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue); + else + writer.WriteNull("{{baseName}}"); + + {{/isNullable}} + {{^isNullable}} + var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{classname}}.{{{datatypeWithEnum}}}ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}{{nrt!}}.Value{{/isNullable}}{{/required}}); + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue); + {{/isNullable}} + {{/isInnerEnum}} + {{^isInnerEnum}} + {{#lambda.copyText}} + {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} + {{/lambda.copyText}} + {{#required}} + {{#isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} == null) + writer.WriteNull("{{baseName}}"); + else + { + var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}.Value); + {{#allowableValues}} + {{#enumVars}} + {{#-first}} + {{#isString}} + if ({{#lambda.paste}}{{/lambda.paste}}RawValue != null){{! we cant use name here because enumVar also has a name property, so use the paste lambda instead }} + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{nameInPascalCase}}{{/lambda.camelcase_sanitize_param}}RawValue); + else + writer.WriteNull("{{baseName}}"); + {{/isString}} + {{^isString}} + writer.WriteNumber("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{nameInPascalCase}}{{/lambda.camelcase_sanitize_param}}RawValue); + {{/isString}} + {{/-first}} + {{/enumVars}} + {{/allowableValues}} + } + {{/isNullable}} + {{^isNullable}} + var {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}); + {{#allowableValues}} + {{#enumVars}} + {{#-first}} + {{^isNumeric}} + writer.WriteString("{{baseName}}", {{#lambda.paste}}{{/lambda.paste}}RawValue); + {{/isNumeric}} + {{#isNumeric}} + writer.WriteNumber("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{#lambda.paste}}{{/lambda.paste}}{{/lambda.camelcase_sanitize_param}}RawValue); + {{/isNumeric}} + {{/-first}} + {{/enumVars}} + {{/allowableValues}} + {{/isNullable}} + + {{/required}} + {{^required}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet) + {{#isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option{{nrt!}}.Value != null) + { + var {{#lambda.paste}}{{/lambda.paste}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value{{nrt!}}.Value); + writer.{{#lambda.first}}{{#allowableValues}}{{#enumVars}}{{^isNumeric}}WriteString {{/isNumeric}}{{#isNumeric}}WriteNumber {{/isNumeric}}{{/enumVars}}{{/allowableValues}}{{/lambda.first}}("{{baseName}}", {{#lambda.paste}}{{/lambda.paste}}RawValue); + } + else + writer.WriteNull("{{baseName}}"); + {{/isNullable}} + {{^isNullable}} + { + var {{#lambda.paste}}{{/lambda.paste}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{nrt!}}.Value); + writer.{{#lambda.first}}{{#allowableValues}}{{#enumVars}}{{^isNumeric}}WriteString {{/isNumeric}}{{#isNumeric}}WriteNumber {{/isNumeric}}{{/enumVars}}{{/allowableValues}}{{/lambda.first}}("{{baseName}}", {{#lambda.paste}}{{/lambda.paste}}RawValue); + } + {{/isNullable}} + {{/required}} + {{/isInnerEnum}} + {{/isNumeric}} + {{/isMap}} + {{/isEnum}} + {{#isUuid}} + {{#lambda.copyText}} + writer.WriteString("{{baseName}}", {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}{{#required}}{{#isNullable}}.Value{{/isNullable}}{{/required}}); + {{/lambda.copyText}} + {{#lambda.indent3}} + {{>WriteProperty}}{{! prevent indent}} + {{/lambda.indent3}} + {{/isUuid}} + {{^isUuid}} + {{^isEnum}} + {{^isString}} + {{^isBoolean}} + {{^isNumeric}} + {{^isDate}} + {{^isDateTime}} + {{#required}} + {{#isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}} != null) + { + writer.WritePropertyName("{{baseName}}"); + JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + } + else + writer.WriteNull("{{baseName}}"); + {{/isNullable}} + {{^isNullable}} + writer.WritePropertyName("{{baseName}}"); + JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + {{/isNullable}} + {{/required}} + {{^required}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.IsSet) + {{#isNullable}} + if ({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}Option.Value != null) + { + writer.WritePropertyName("{{baseName}}"); + JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + } + else + writer.WriteNull("{{baseName}}"); + {{/isNullable}} + {{^isNullable}} + { + writer.WritePropertyName("{{baseName}}"); + JsonSerializer.Serialize(writer, {{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}, jsonSerializerOptions); + } + {{/isNullable}} + {{/required}} + {{/isDateTime}} + {{/isDate}} + {{/isNumeric}} + {{/isBoolean}} + {{/isString}} + {{/isEnum}} + {{/isUuid}} + {{/isDiscriminator}} + {{/allVars}} + {{/lambda.trimLineBreaks}} + {{/lambda.trimTrailingWithNewLine}} + } + }