From 245525ce432f65b31a31b824f9bde6ae1ea20355 Mon Sep 17 00:00:00 2001 From: bschumann Date: Mon, 22 Jul 2019 12:20:17 +0200 Subject: [PATCH] fix duplicate key in generated json when JsonTypeInfo is used --- .../generators/java/AbstractJavaCodegen.java | 5 +++++ .../v3/generators/java/SpringCodegen.java | 5 ----- .../resources/handlebars/Java/pojo.mustache | 21 ++++++++++++------- .../handlebars/JavaSpring/pojo.mustache | 5 +++++ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java index 782459fd71..0e026c406d 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java +++ b/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java @@ -382,6 +382,7 @@ public void processOpts() { importMapping.put("JsonTypeInfo", "com.fasterxml.jackson.annotation.JsonTypeInfo"); importMapping.put("JsonCreator", "com.fasterxml.jackson.annotation.JsonCreator"); importMapping.put("JsonValue", "com.fasterxml.jackson.annotation.JsonValue"); + importMapping.put("JsonTypeId", "com.fasterxml.jackson.annotation.JsonTypeId"); importMapping.put("SerializedName", "com.google.gson.annotations.SerializedName"); importMapping.put("TypeAdapter", "com.google.gson.TypeAdapter"); importMapping.put("JsonAdapter", "com.google.gson.annotations.JsonAdapter"); @@ -944,6 +945,10 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert model.imports.add("Schema"); } } + if (model.discriminator != null && model.discriminator.getPropertyName().equals(property.baseName)) { + property.vendorExtensions.put("x-is-discriminator-property", true); + model.imports.add("JsonTypeId"); + } } @Override diff --git a/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java index 11436ffea0..3cfff70665 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java +++ b/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java @@ -712,11 +712,6 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert model.imports.add("JsonCreator"); } } - if (model.discriminator != null && model.discriminator.getPropertyName().equals(property.baseName)) { - property.vendorExtensions.put("x-is-discriminator-property", true); - - //model.imports.add("JsonTypeId"); - } } @Override diff --git a/src/main/resources/handlebars/Java/pojo.mustache b/src/main/resources/handlebars/Java/pojo.mustache index 9d3e09fa53..dab2efac81 100644 --- a/src/main/resources/handlebars/Java/pojo.mustache +++ b/src/main/resources/handlebars/Java/pojo.mustache @@ -22,18 +22,23 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#parcela {{/items}} {{/items.isEnum}} {{#jackson}} + {{#vendorExtensions.x-is-discriminator-property}} + @JsonTypeId + {{/vendorExtensions.x-is-discriminator-property}} + {{^vendorExtensions.x-is-discriminator-property}} @JsonProperty("{{baseName}}") - {{#withXml}} - {{^isContainer}} + {{#withXml}} + {{^isContainer}} @JacksonXmlProperty({{#isXmlAttribute}}isAttribute = true, {{/isXmlAttribute}}{{#xmlNamespace}}namespace="{{xmlNamespace}}", {{/xmlNamespace}}localName = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}") - {{/isContainer}} - {{#isContainer}} - {{#isXmlWrapped}} + {{/isContainer}} + {{#isContainer}} + {{#isXmlWrapped}} // items.xmlName={{items.xmlName}} @JacksonXmlElementWrapper(useWrapping = {{isXmlWrapped}}, {{#xmlNamespace}}namespace="{{xmlNamespace}}", {{/xmlNamespace}}localName = "{{#items.xmlName}}{{items.xmlName}}{{/items.xmlName}}{{^items.xmlName}}{{items.baseName}}{{/items.xmlName}}") - {{/isXmlWrapped}} - {{/isContainer}} - {{/withXml}} + {{/isXmlWrapped}} + {{/isContainer}} + {{/withXml}} + {{/vendorExtensions.x-is-discriminator-property}} {{/jackson}} {{#withXml}} {{#isXmlAttribute}} diff --git a/src/main/resources/handlebars/JavaSpring/pojo.mustache b/src/main/resources/handlebars/JavaSpring/pojo.mustache index 3a49211f64..196bb55c59 100644 --- a/src/main/resources/handlebars/JavaSpring/pojo.mustache +++ b/src/main/resources/handlebars/JavaSpring/pojo.mustache @@ -23,8 +23,13 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{/items}} {{/items.isEnum}} {{#jackson}} + {{#vendorExtensions.x-is-discriminator-property}} + @JsonTypeId + {{/vendorExtensions.x-is-discriminator-property}} + {{^vendorExtensions.x-is-discriminator-property}} @JsonProperty("{{baseName}}"){{#withXml}} @JacksonXmlProperty({{#isXmlAttribute}}isAttribute = true, {{/isXmlAttribute}}{{#xmlNamespace}}namespace="{{xmlNamespace}}", {{/xmlNamespace}}localName = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}"){{/withXml}} + {{/vendorExtensions.x-is-discriminator-property}} {{/jackson}} {{#gson}} @SerializedName("{{baseName}}")