From bd271f177325bd914087632ceafc06bdc9958d2b Mon Sep 17 00:00:00 2001 From: Anders Gilje Date: Fri, 8 Jan 2021 14:05:08 +0100 Subject: [PATCH 1/2] Add JsonSubTypes to templates --- .../aspnetcore/3.0/Project.csproj.mustache | 1 + .../main/resources/aspnetcore/3.0/model.mustache | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache index 83036fc53a7e..957371b31143 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache @@ -40,6 +40,7 @@ {{/useNewtonsoft}} {{/useSwashbuckle}} + diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache index 491b39e54a14..5bd13ab9058a 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache @@ -7,6 +7,13 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using Newtonsoft.Json; +{{#models}} +{{#model}} +{{#discriminator}} +using JsonSubTypes; +{{/discriminator}} +{{/model}} +{{/models}} using {{packageName}}.Converters; {{#models}} @@ -17,6 +24,12 @@ namespace {{modelPackage}} /// {{description}} /// [DataContract] + {{#discriminator}} + [JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")] + {{#mappedModels}} + [JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")] + {{/mappedModels}} + {{/discriminator}} public {{#modelClassModifier}}{{modelClassModifier}} {{/modelClassModifier}}class {{classname}} : {{#parent}}{{{parent}}}, {{/parent}}IEquatable<{{classname}}> { {{#vars}} From 4fc37b94d9d6aaba23318b92106ca3a4251f83ef Mon Sep 17 00:00:00 2001 From: Anders Gilje Date: Fri, 8 Jan 2021 14:05:08 +0100 Subject: [PATCH 2/2] Add JsonSubTypes to templates --- .../aspnetcore/3.0/Project.csproj.mustache | 1 + .../main/resources/aspnetcore/3.0/model.mustache | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache index 83036fc53a7e..957371b31143 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache @@ -40,6 +40,7 @@ {{/useNewtonsoft}} {{/useSwashbuckle}} + diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache index 491b39e54a14..5bd13ab9058a 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache @@ -7,6 +7,13 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using Newtonsoft.Json; +{{#models}} +{{#model}} +{{#discriminator}} +using JsonSubTypes; +{{/discriminator}} +{{/model}} +{{/models}} using {{packageName}}.Converters; {{#models}} @@ -17,6 +24,12 @@ namespace {{modelPackage}} /// {{description}} /// [DataContract] + {{#discriminator}} + [JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")] + {{#mappedModels}} + [JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")] + {{/mappedModels}} + {{/discriminator}} public {{#modelClassModifier}}{{modelClassModifier}} {{/modelClassModifier}}class {{classname}} : {{#parent}}{{{parent}}}, {{/parent}}IEquatable<{{classname}}> { {{#vars}}