From 60a3746bb75e04ba2cc965972a2b0f015ced31fb Mon Sep 17 00:00:00 2001 From: gurumeditator Date: Thu, 10 Oct 2019 09:34:40 -0400 Subject: [PATCH] Added new discriminator RawName property to preserve declared discriminator for @JsonTypeInfo annotations (#3320) --- .../org/openapitools/codegen/CodegenDiscriminator.java | 9 +++++++++ .../java/org/openapitools/codegen/DefaultCodegen.java | 1 + .../src/main/resources/Java/typeInfoAnnotation.mustache | 2 +- .../resources/JavaInflector/typeInfoAnnotation.mustache | 2 +- .../JavaJaxRS/cxf-cdi/typeInfoAnnotation.mustache | 2 +- .../JavaJaxRS/cxf-ext/typeInfoAnnotation.mustache | 2 +- .../resources/JavaJaxRS/cxf/typeInfoAnnotation.mustache | 2 +- .../JavaJaxRS/resteasy/eap/typeInfoAnnotation.mustache | 2 +- .../JavaJaxRS/resteasy/typeInfoAnnotation.mustache | 2 +- .../resources/JavaJaxRS/spec/typeInfoAnnotation.mustache | 2 +- .../main/resources/JavaJaxRS/typeInfoAnnotation.mustache | 2 +- .../JavaPlayFramework/typeInfoAnnotation.mustache | 2 +- .../resources/JavaSpring/typeInfoAnnotation.mustache | 2 +- .../resources/java-pkmst/typeInfoAnnotation.mustache | 2 +- .../resources/kotlin-spring/typeInfoAnnotation.mustache | 2 +- 15 files changed, 23 insertions(+), 13 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java index 3160bbd9a2b..a90f7501594 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java @@ -9,6 +9,7 @@ import java.util.Set; public class CodegenDiscriminator { private String propertyName; + private String propertyRawName; private Map mapping; private Set mappedModels = new LinkedHashSet<>(); @@ -20,6 +21,14 @@ public class CodegenDiscriminator { this.propertyName = propertyName; } + public String getPropertyRawName() { + return propertyRawName; + } + + public void setPropertyRawName(String propertyRawName) { + this.propertyRawName = propertyRawName; + } + public Map getMapping() { return mapping; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 71bcde2cc36..699f3bb3349 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -1958,6 +1958,7 @@ public class DefaultCodegen implements CodegenConfig { } CodegenDiscriminator discriminator = new CodegenDiscriminator(); discriminator.setPropertyName(toVarName(schema.getDiscriminator().getPropertyName())); + discriminator.setPropertyRawName(schema.getDiscriminator().getPropertyName()); discriminator.setMapping(schema.getDiscriminator().getMapping()); if (schema.getDiscriminator().getMapping() != null && !schema.getDiscriminator().getMapping().isEmpty()) { for (Entry e : schema.getDiscriminator().getMapping().entrySet()) { diff --git a/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache index 8e4b33b7848..4676618e320 100644 --- a/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache @@ -1,6 +1,6 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaInflector/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaInflector/typeInfoAnnotation.mustache index 8e4b33b7848..4676618e320 100644 --- a/modules/openapi-generator/src/main/resources/JavaInflector/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaInflector/typeInfoAnnotation.mustache @@ -1,6 +1,6 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/typeInfoAnnotation.mustache index 743065d4fcc..047313f13f6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/typeInfoAnnotation.mustache index 743065d4fcc..047313f13f6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/typeInfoAnnotation.mustache index 743065d4fcc..047313f13f6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/typeInfoAnnotation.mustache index 743065d4fcc..047313f13f6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/typeInfoAnnotation.mustache index 743065d4fcc..047313f13f6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/typeInfoAnnotation.mustache index 6da35ddbb1d..326fd09df19 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/typeInfoAnnotation.mustache index 743065d4fcc..047313f13f6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/typeInfoAnnotation.mustache @@ -1,5 +1,5 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaPlayFramework/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaPlayFramework/typeInfoAnnotation.mustache index 8e4b33b7848..4676618e320 100644 --- a/modules/openapi-generator/src/main/resources/JavaPlayFramework/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaPlayFramework/typeInfoAnnotation.mustache @@ -1,6 +1,6 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache index 8e4b33b7848..4676618e320 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache @@ -1,6 +1,6 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/typeInfoAnnotation.mustache index 8e4b33b7848..4676618e320 100644 --- a/modules/openapi-generator/src/main/resources/java-pkmst/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/java-pkmst/typeInfoAnnotation.mustache @@ -1,6 +1,6 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes({ {{#discriminator.mappedModels}} @JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache index a110d9ea9cf..977e5ca5ac1 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache @@ -1,6 +1,6 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminatorName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyRawName}}}", visible = true) @JsonSubTypes( {{#discriminator.mappedModels}} JsonSubTypes.Type(value = {{modelName}}::class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"){{^-last}},{{/-last}}