From 7687242d6dfb2b8e8ba36ec6ffe82c4246e38f56 Mon Sep 17 00:00:00 2001 From: JBurgess Date: Tue, 9 Jul 2019 11:55:02 -0400 Subject: [PATCH] Added new discriminator RawName property to preserve declared discriminator for @JsonTypeInfo annotations --- .../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 3160bbd9a2b7..a90f75015946 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 @@ public class CodegenDiscriminator { private String propertyName; + private String propertyRawName; private Map mapping; private Set mappedModels = new LinkedHashSet<>(); @@ -20,6 +21,14 @@ public void setPropertyName(String propertyName) { 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 67fd44520993..ae050d39f417 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 @@ -1864,6 +1864,7 @@ private CodegenDiscriminator createDiscriminator(String schemaName, Schema schem } 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 8e4b33b78480..4676618e3202 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 8e4b33b78480..4676618e3202 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 743065d4fcc2..047313f13f6f 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 743065d4fcc2..047313f13f6f 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 743065d4fcc2..047313f13f6f 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 743065d4fcc2..047313f13f6f 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 743065d4fcc2..047313f13f6f 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 6da35ddbb1dc..326fd09df19b 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 743065d4fcc2..047313f13f6f 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 8e4b33b78480..4676618e3202 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 8e4b33b78480..4676618e3202 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 8e4b33b78480..4676618e3202 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 a110d9ea9cff..977e5ca5ac14 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}}