diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index 560dd5dbd4b..eb6522a9318 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -19,8 +19,8 @@ package org.openapitools.codegen; import java.util.ArrayList; import java.util.HashMap; -import java.util.Map; import java.util.List; +import java.util.Map; public class CodegenParameter { public boolean isFormParam, isQueryParam, isPathParam, isHeaderParam, @@ -38,6 +38,7 @@ public class CodegenParameter { public List _enum; public Map allowableValues; public CodegenProperty items; + public CodegenProperty mostInnerItems; public Map vendorExtensions = new HashMap(); public boolean hasValidation; @@ -142,6 +143,9 @@ public class CodegenParameter { if (this.items != null) { output.items = this.items; } + if (this.mostInnerItems != null) { + output.mostInnerItems = this.mostInnerItems; + } if(this.vendorExtensions != null){ output.vendorExtensions = new HashMap(this.vendorExtensions); } @@ -259,6 +263,8 @@ public class CodegenParameter { return false; if (items != null ? !items.equals(that.items) : that.items != null) return false; + if (mostInnerItems != null ? !mostInnerItems.equals(that.mostInnerItems) : that.mostInnerItems != null) + return false; if (vendorExtensions != null ? !vendorExtensions.equals(that.vendorExtensions) : that.vendorExtensions != null) return false; if (hasValidation != that.hasValidation) @@ -335,6 +341,7 @@ public class CodegenParameter { result = 31 * result + (_enum != null ? _enum.hashCode() : 0); result = 31 * result + (allowableValues != null ? allowableValues.hashCode() : 0); result = 31 * result + (items != null ? items.hashCode() : 0); + result = 31 * result + (mostInnerItems != null ? mostInnerItems.hashCode() : 0); result = 31 * result + (vendorExtensions != null ? vendorExtensions.hashCode() : 0); result = 31 * result + (hasValidation ? 13:31); result = 31 * result + (required ? 13:31); @@ -399,6 +406,7 @@ public class CodegenParameter { ", _enum=" + _enum + ", allowableValues=" + allowableValues + ", items=" + items + + ", mostInnerItems=" + mostInnerItems + ", vendorExtensions=" + vendorExtensions + ", hasValidation=" + hasValidation + ", required=" + required + diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index 694e5d6e114..b7ebb5d237d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -63,6 +63,7 @@ public class CodegenProperty implements Cloneable { public List _enum; public Map allowableValues; public CodegenProperty items; + public CodegenProperty mostInnerItems; public Map vendorExtensions = new HashMap(); public boolean hasValidation; // true if pattern, maximum, etc are set (only used in the mustache template) public boolean isInherited; @@ -436,6 +437,7 @@ public class CodegenProperty implements Cloneable { result = prime * result + ((isPrimitiveType ? 13:31)); result = prime * result + ((isReadOnly ? 13:31)); result = prime * result + ((items == null) ? 0 : items.hashCode()); + result = prime * result + ((mostInnerItems == null) ? 0 : mostInnerItems.hashCode()); result = prime * result + ((jsonSchema == null) ? 0 : jsonSchema.hashCode()); result = prime * result + ((max == null) ? 0 : max.hashCode()); result = prime * result + ((maxLength == null) ? 0 : maxLength.hashCode()); @@ -700,6 +702,9 @@ public class CodegenProperty implements Cloneable { if (this.items != null) { cp.items = this.items; } + if (this.mostInnerItems != null) { + cp.mostInnerItems = this.mostInnerItems; + } if(this.vendorExtensions != null){ cp.vendorExtensions = new HashMap(this.vendorExtensions); } @@ -766,6 +771,7 @@ public class CodegenProperty implements Cloneable { ", _enum=" + _enum + ", allowableValues=" + allowableValues + ", items=" + items + + ", mostInnerItems=" + mostInnerItems + ", vendorExtensions=" + vendorExtensions + ", hasValidation=" + hasValidation + ", isInherited=" + isInherited + 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 49a72edb27b..471b8c7122d 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 @@ -1899,6 +1899,7 @@ public class DefaultCodegen implements CodegenConfig { property.isPrimitiveType = true; } property.items = innerProperty; + property.mostInnerItems = getMostInnerItems(innerProperty); // inner item is Enum if (isPropertyInnerMostEnum(property)) { // isEnum is set to true when the type is an enum @@ -1930,6 +1931,7 @@ public class DefaultCodegen implements CodegenConfig { property.isPrimitiveType = true; } property.items = innerProperty; + property.mostInnerItems = getMostInnerItems(innerProperty); property.dataFormat = innerProperty.dataFormat; // inner item is Enum if (isPropertyInnerMostEnum(property)) { @@ -1952,21 +1954,22 @@ public class DefaultCodegen implements CodegenConfig { * @return True if the inner most type is enum */ protected Boolean isPropertyInnerMostEnum(CodegenProperty property) { - CodegenProperty currentProperty = property; - while (currentProperty != null && (Boolean.TRUE.equals(currentProperty.isMapContainer) - || Boolean.TRUE.equals(currentProperty.isListContainer))) { - currentProperty = currentProperty.items; - } + CodegenProperty currentProperty = getMostInnerItems(property); return currentProperty == null ? false : currentProperty.isEnum; } - protected Map getInnerEnumAllowableValues(CodegenProperty property) { + protected CodegenProperty getMostInnerItems(CodegenProperty property) { CodegenProperty currentProperty = property; while (currentProperty != null && (Boolean.TRUE.equals(currentProperty.isMapContainer) || Boolean.TRUE.equals(currentProperty.isListContainer))) { currentProperty = currentProperty.items; } + return currentProperty; + } + + protected Map getInnerEnumAllowableValues(CodegenProperty property) { + CodegenProperty currentProperty = getMostInnerItems(property); return currentProperty == null ? new HashMap() : currentProperty.allowableValues; } @@ -2530,6 +2533,7 @@ public class DefaultCodegen implements CodegenConfig { collectionFormat = StringUtils.isEmpty(collectionFormat) ? "csv" : collectionFormat; CodegenProperty codegenProperty = fromProperty("inner", inner); codegenParameter.items = codegenProperty; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; codegenParameter.baseType = codegenProperty.dataType; codegenParameter.isContainer = true; codegenParameter.isListContainer = true; @@ -2544,6 +2548,7 @@ public class DefaultCodegen implements CodegenConfig { } else if (ModelUtils.isMapSchema(parameterSchema)) { // for map parameter CodegenProperty codegenProperty = fromProperty("inner", (Schema) parameterSchema.getAdditionalProperties()); codegenParameter.items = codegenProperty; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; codegenParameter.baseType = codegenProperty.dataType; codegenParameter.isContainer = true; codegenParameter.isMapContainer = true; @@ -2598,6 +2603,7 @@ public class DefaultCodegen implements CodegenConfig { codegenParameter.datatypeWithEnum = codegenProperty.datatypeWithEnum; codegenParameter.enumName = codegenProperty.enumName; codegenParameter.items = codegenProperty.items; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; } codegenParameter.collectionFormat = collectionFormat; @@ -4084,6 +4090,7 @@ public class DefaultCodegen implements CodegenConfig { codegenParameter = fromFormProperty(entry.getKey(), inner, imports); CodegenProperty codegenProperty = fromProperty("inner", inner); codegenParameter.items = codegenProperty; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; codegenParameter.baseType = codegenProperty.dataType; codegenParameter.isPrimitiveType = false; codegenParameter.isContainer = true; @@ -4159,6 +4166,7 @@ public class DefaultCodegen implements CodegenConfig { if (codegenProperty.items != null && codegenProperty.items.isEnum) { codegenParameter.items = codegenProperty.items; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; } // import @@ -4238,6 +4246,7 @@ public class DefaultCodegen implements CodegenConfig { } codegenParameter.paramName = toParamName(codegenParameter.baseName); codegenParameter.items = codegenProperty.items; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; codegenParameter.dataType = getTypeDeclaration(schema); codegenParameter.baseType = getSchemaType(inner); codegenParameter.isContainer = Boolean.TRUE; @@ -4272,6 +4281,7 @@ public class DefaultCodegen implements CodegenConfig { } codegenParameter.paramName = toArrayModelParamName(codegenParameter.baseName); codegenParameter.items = codegenProperty.items; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; codegenParameter.dataType = getTypeDeclaration(arraySchema); codegenParameter.baseType = getSchemaType(arraySchema); codegenParameter.isContainer = Boolean.TRUE; diff --git a/modules/openapi-generator/src/main/resources/Java/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/pojo.mustache index 93e02e86633..21c21b1ddd3 100644 --- a/modules/openapi-generator/src/main/resources/Java/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/pojo.mustache @@ -13,14 +13,12 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#parcela {{^isContainer}} {{>modelInnerEnum}} {{/isContainer}} - {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} + {{#isContainer}} + {{#mostInnerItems}} {{>modelInnerEnum}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} + {{/mostInnerItems}} + {{/isContainer}} + {{/isEnum}} {{#jackson}} @JsonProperty("{{baseName}}") {{#withXml}} diff --git a/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache index 74859ab39b4..a9aa18e6dc9 100644 --- a/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaInflector/pojo.mustache @@ -6,14 +6,12 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{^isContainer}} {{>enumClass}} {{/isContainer}} - {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} + {{#isContainer}} + {{#mostInnerItems}} {{>enumClass}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} + {{/mostInnerItems}} + {{/isContainer}} + {{/isEnum}} {{#jackson}} @JsonProperty("{{baseName}}") {{/jackson}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache index aaf576fcdb0..3bb3087a1a2 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/pojo.mustache @@ -6,11 +6,11 @@ import javax.xml.bind.annotation.*; {{#description}}@ApiModel(description = "{{{description}}}"){{/description}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { - {{#vars}}{{#isEnum}} + {{#vars}}{{#isEnum}}{{^isContainer}} -{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} -{{>enumClass}}{{/items}}{{/items.isEnum}} +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} {{#isContainer}} private {{{datatypeWithEnum}}} {{name}}{{#required}} = {{{defaultValue}}}{{/required}}{{^required}} = null{{/required}}; {{/isContainer}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache index c085147ad3c..7daa0a4fbe9 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pojo.mustache @@ -24,10 +24,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; {{/description}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} { {{#vars}}{{#isEnum}}{{^isContainer}} - -{{>enumClass}}{{/isContainer}}{{/isEnum}}{{#items.isEnum}}{{#items}} - -{{^isContainer}}{{>enumClass}}{{/isContainer}}{{/items}}{{/items.isEnum}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} {{#withXml}} @XmlElement(name="{{baseName}}"{{#required}}, required = {{required}}{{/required}}) {{/withXml}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache index 69a60003102..4839b81da83 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/pojo.mustache @@ -8,15 +8,13 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{#isEnum}} {{^isContainer}} {{>enumClass}} + {{/isContainer}} + {{#isContainer}} + {{#mostInnerItems}} +{{>enumClass}} + {{/mostInnerItems}} {{/isContainer}} {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} -{{>enumClass}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} {{#jackson}} @JsonProperty("{{baseName}}") {{/jackson}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache index a2c7e8c000c..f495de66748 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/eap/pojo.mustache @@ -6,11 +6,12 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{#serializableModel}} private static final long serialVersionUID = 1L; {{/serializableModel}} - {{#vars}}{{#isEnum}} + {{#vars}}{{#isEnum}}{{^isContainer}} -{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} + +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} -{{>enumClass}}{{/items}}{{/items.isEnum}} private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} {{#vars}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache index 8abd4bcd94b..084e8b502c0 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/pojo.mustache @@ -8,9 +8,9 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{/serializableModel}} {{#vars}}{{#isEnum}}{{^isContainer}} -{{>enumClass}}{{/isContainer}}{{/isEnum}}{{#items.isEnum}}{{#items}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} -{{^isContainer}}{{>enumClass}}{{/isContainer}}{{/items}}{{/items.isEnum}} +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} {{#vars}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache index 73d96a3b16b..c558de65179 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache @@ -6,9 +6,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { {{#vars}}{{#isEnum}}{{^isContainer}} -{{>enumClass}}{{/isContainer}}{{/isEnum}}{{#items.isEnum}}{{#items}} - -{{^isContainer}}{{>enumClass}}{{/isContainer}}{{/items}}{{/items.isEnum}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} + +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} private {{#useBeanValidation}}@Valid{{/useBeanValidation}} {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} {{#vars}} diff --git a/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache index c7ce1c4dadb..1ac8120d767 100644 --- a/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaPlayFramework/pojo.mustache @@ -12,15 +12,13 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{#isEnum}} {{^isContainer}} {{>enumClass}} + {{/isContainer}} + {{#isContainer}} + {{#mostInnerItems}} +{{>enumClass}} + {{/mostInnerItems}} {{/isContainer}} {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} -{{>enumClass}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} {{#jackson}} @JsonProperty("{{baseName}}") {{/jackson}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache index 96aea0b41c7..369360c9c3f 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache @@ -14,14 +14,12 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{^isContainer}} {{>enumClass}} {{/isContainer}} - {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} + {{#isContainer}} + {{#mostInnerItems}} {{>enumClass}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} + {{/mostInnerItems}} + {{/isContainer}} + {{/isEnum}} {{#jackson}} @JsonProperty("{{baseName}}"){{#withXml}} @JacksonXmlProperty({{#isXmlAttribute}}isAttribute = true, {{/isXmlAttribute}}{{#xmlNamespace}}namespace="{{xmlNamespace}}", {{/xmlNamespace}}localName = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}"){{/withXml}} diff --git a/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache index c3f95a095c2..22e5aaccfe9 100644 --- a/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaVertXServer/pojo.mustache @@ -1,10 +1,10 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { - {{#vars}}{{#isEnum}} + {{#vars}}{{#isEnum}}{{^isContainer}} -{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} -{{>enumClass}}{{/items}}{{/items.isEnum}} +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} public {{classname}} () { diff --git a/modules/openapi-generator/src/main/resources/MSF4J/pojo.mustache b/modules/openapi-generator/src/main/resources/MSF4J/pojo.mustache index 1d73446c4ab..4a9dfb6a7c5 100644 --- a/modules/openapi-generator/src/main/resources/MSF4J/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/MSF4J/pojo.mustache @@ -9,14 +9,12 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{^isContainer}} {{>enumClass}} {{/isContainer}} + {{#isContainer}} + {{#mostInnerItems}} +{{>enumClass}} + {{/mostInnerItems}} + {{/isContainer}} {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} -{{>enumClass}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} {{#jackson}} @JsonProperty("{{baseName}}") {{/jackson}} diff --git a/modules/openapi-generator/src/main/resources/apex/pojo.mustache b/modules/openapi-generator/src/main/resources/apex/pojo.mustache index 78ad8584e59..c26649e959d 100644 --- a/modules/openapi-generator/src/main/resources/apex/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/apex/pojo.mustache @@ -6,15 +6,13 @@ public class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}{{#interfac {{#isEnum}} {{^isContainer}} {{>modelInnerEnum}} + {{/isContainer}} + {{#isContainer}} + {{#mostInnerItems}} +{{>modelInnerEnum}} + {{/mostInnerItems}} {{/isContainer}} {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} -{{>modelInnerEnum}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} /** {{#description}} * {{{description}}} diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache index 5830c643aeb..3e4d9881972 100644 --- a/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/java-pkmst/pojo.mustache @@ -13,15 +13,13 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali {{#isEnum}} {{^isContainer}} {{>enumClass}} + {{/isContainer}} + {{#isContainer}} + {{#mostInnerItems}} +{{>enumClass}} + {{/mostInnerItems}} {{/isContainer}} {{/isEnum}} - {{#items.isEnum}} - {{#items}} - {{^isContainer}} -{{>enumClass}} - {{/isContainer}} - {{/items}} - {{/items.isEnum}} {{#jackson}} @JsonProperty("{{baseName}}"){{#withXml}} @JacksonXmlProperty({{#isXmlAttribute}}isAttribute = true, {{/isXmlAttribute}}{{#xmlNamespace}}namespace="{{xmlNamespace}}", {{/xmlNamespace}}localName = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}"){{/withXml}} diff --git a/modules/openapi-generator/src/main/resources/undertow/pojo.mustache b/modules/openapi-generator/src/main/resources/undertow/pojo.mustache index fd6a4b34fa1..2a30862f4b9 100644 --- a/modules/openapi-generator/src/main/resources/undertow/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/undertow/pojo.mustache @@ -1,11 +1,11 @@ {{#description}}@ApiModel(description = "{{{description}}}"){{/description}} {{>generatedAnnotation}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} { - {{#vars}}{{#isEnum}} + {{#vars}}{{#isEnum}}{{^isContainer}} -{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} - -{{>enumClass}}{{/items}}{{/items.isEnum}} +{{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}} + +{{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}} private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} {{#vars}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java index 6f68bc6dfe4..4bcbc5217b4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java @@ -75,12 +75,14 @@ public class JavaModelEnumTest { Assert.assertEquals(enumVar.baseType, "List"); Assert.assertTrue(enumVar.isEnum); - Assert.assertEquals(enumVar.items.baseName, "name"); - Assert.assertEquals(enumVar.items.dataType, "String"); - Assert.assertEquals(enumVar.items.datatypeWithEnum, "NameEnum"); - Assert.assertEquals(enumVar.items.name, "name"); - Assert.assertEquals(enumVar.items.defaultValue, "null"); - Assert.assertEquals(enumVar.items.baseType, "String"); + Assert.assertEquals(enumVar.mostInnerItems.baseName, "name"); + Assert.assertEquals(enumVar.mostInnerItems.dataType, "String"); + Assert.assertEquals(enumVar.mostInnerItems.datatypeWithEnum, "NameEnum"); + Assert.assertEquals(enumVar.mostInnerItems.name, "name"); + Assert.assertEquals(enumVar.mostInnerItems.defaultValue, "null"); + Assert.assertEquals(enumVar.mostInnerItems.baseType, "String"); + + Assert.assertEquals(enumVar.mostInnerItems.baseType, enumVar.items.baseType); } @Test(description = "convert a java model with an enum inside a list") @@ -104,12 +106,14 @@ public class JavaModelEnumTest { Assert.assertEquals(enumVar.baseType, "List"); Assert.assertTrue(enumVar.isEnum); - Assert.assertEquals(enumVar.items.items.baseName, "name"); - Assert.assertEquals(enumVar.items.items.dataType, "String"); - Assert.assertEquals(enumVar.items.items.datatypeWithEnum, "NameEnum"); - Assert.assertEquals(enumVar.items.items.name, "name"); - Assert.assertEquals(enumVar.items.items.defaultValue, "null"); - Assert.assertEquals(enumVar.items.items.baseType, "String"); + Assert.assertEquals(enumVar.mostInnerItems.baseName, "name"); + Assert.assertEquals(enumVar.mostInnerItems.dataType, "String"); + Assert.assertEquals(enumVar.mostInnerItems.datatypeWithEnum, "NameEnum"); + Assert.assertEquals(enumVar.mostInnerItems.name, "name"); + Assert.assertEquals(enumVar.mostInnerItems.defaultValue, "null"); + Assert.assertEquals(enumVar.mostInnerItems.baseType, "String"); + + Assert.assertEquals(enumVar.mostInnerItems.baseType, enumVar.items.items.baseType); } @Test(description = "not override identical parent enums") diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java index 9f9c27dfdb8..6fc21954da3 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java @@ -33,7 +33,6 @@ public class Order { @ApiModelProperty(value = "") private Date shipDate = null; - @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java index 038bad580c4..79cb88423ba 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java @@ -41,7 +41,6 @@ public class Pet { @Valid private List tags = null; - @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java index 9f9c27dfdb8..6fc21954da3 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java @@ -33,7 +33,6 @@ public class Order { @ApiModelProperty(value = "") private Date shipDate = null; - @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java index 038bad580c4..79cb88423ba 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java @@ -41,7 +41,6 @@ public class Pet { @Valid private List tags = null; - @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java index fe8d2eaf2d4..b449c1555af 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java @@ -17,7 +17,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class EnumArrays { - @XmlType(name="JustSymbolEnum") @XmlEnum(String.class) public enum JustSymbolEnum { @@ -53,7 +52,6 @@ public enum JustSymbolEnum { @ApiModelProperty(value = "") private JustSymbolEnum justSymbol = null; - @XmlType(name="ArrayEnumEnum") @XmlEnum(String.class) public enum ArrayEnumEnum { diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java index 4ce089ccab4..8c55ecb8179 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java @@ -16,7 +16,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class EnumTest { - @XmlType(name="EnumStringEnum") @XmlEnum(String.class) public enum EnumStringEnum { @@ -52,7 +51,6 @@ public enum EnumStringEnum { @ApiModelProperty(value = "") private EnumStringEnum enumString = null; - @XmlType(name="EnumStringRequiredEnum") @XmlEnum(String.class) public enum EnumStringRequiredEnum { @@ -88,7 +86,6 @@ public enum EnumStringRequiredEnum { @ApiModelProperty(required = true, value = "") private EnumStringRequiredEnum enumStringRequired = null; - @XmlType(name="EnumIntegerEnum") @XmlEnum(Integer.class) public enum EnumIntegerEnum { @@ -124,7 +121,6 @@ public enum EnumIntegerEnum { @ApiModelProperty(value = "") private EnumIntegerEnum enumInteger = null; - @XmlType(name="EnumNumberEnum") @XmlEnum(Double.class) public enum EnumNumberEnum { diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java index 9c8f128bf16..5fc2cf9ae9d 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java @@ -22,7 +22,6 @@ public class MapTest { @Valid private Map> mapMapOfString = null; - @XmlType(name="InnerEnum") @XmlEnum(String.class) public enum InnerEnum { diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java index 0cd52dc0789..36111cdfefa 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java @@ -28,7 +28,6 @@ public class Order { @ApiModelProperty(value = "") private Date shipDate = null; - @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java index d25eb5c6472..456fe12ca1e 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java @@ -36,7 +36,6 @@ public class Pet { @Valid private List tags = null; - @XmlType(name="StatusEnum") @XmlEnum(String.class) public enum StatusEnum { diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java index 0a84ee73502..82a0792206b 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java @@ -93,7 +93,7 @@ public class EnumArrays implements Serializable { return null; } } - + @JsonProperty("array_enum") private List arrayEnum = null; diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java index 37fa5f66164..845f4021a8c 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java @@ -63,7 +63,7 @@ public class MapTest implements Serializable { return null; } } - + @JsonProperty("map_of_enum_string") private Map mapOfEnumString = null; diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java index 5c69ae5543b..c0b057dfac8 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java @@ -48,7 +48,7 @@ public enum JustSymbolEnum { } private @Valid JustSymbolEnum justSymbol = null; - + public enum ArrayEnumEnum { FISH(String.valueOf("fish")), CRAB(String.valueOf("crab")); diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java index 28fd1a16b2b..7fa3bae1640 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class MapTest implements Serializable { private @Valid Map> mapMapOfString = new HashMap>(); - + public enum InnerEnum { UPPER(String.valueOf("UPPER")), LOWER(String.valueOf("lower")); diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java index 5c69ae5543b..c0b057dfac8 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java @@ -48,7 +48,7 @@ public enum JustSymbolEnum { } private @Valid JustSymbolEnum justSymbol = null; - + public enum ArrayEnumEnum { FISH(String.valueOf("fish")), CRAB(String.valueOf("crab")); diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java index 28fd1a16b2b..7fa3bae1640 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class MapTest implements Serializable { private @Valid Map> mapMapOfString = new HashMap>(); - + public enum InnerEnum { UPPER(String.valueOf("UPPER")), LOWER(String.valueOf("lower")); diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java index 75be78aa848..16eebc4d860 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java @@ -92,7 +92,7 @@ public class EnumArrays { return null; } } - + @JsonProperty("array_enum") private List arrayEnum = null; diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java index 4f5ebf26d1d..b93c1034e6c 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java @@ -62,7 +62,7 @@ public class MapTest { return null; } } - + @JsonProperty("map_of_enum_string") private Map mapOfEnumString = null; diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java index 75be78aa848..16eebc4d860 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java @@ -92,7 +92,7 @@ public class EnumArrays { return null; } } - + @JsonProperty("array_enum") private List arrayEnum = null; diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java index 4f5ebf26d1d..b93c1034e6c 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java @@ -62,7 +62,7 @@ public class MapTest { return null; } } - + @JsonProperty("map_of_enum_string") private Map mapOfEnumString = null; diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java index 75be78aa848..16eebc4d860 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java @@ -92,7 +92,7 @@ public class EnumArrays { return null; } } - + @JsonProperty("array_enum") private List arrayEnum = null; diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java index 4f5ebf26d1d..b93c1034e6c 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java @@ -62,7 +62,7 @@ public class MapTest { return null; } } - + @JsonProperty("map_of_enum_string") private Map mapOfEnumString = null; diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java index 75be78aa848..16eebc4d860 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java @@ -92,7 +92,7 @@ public class EnumArrays { return null; } } - + @JsonProperty("array_enum") private List arrayEnum = null; diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java index 4f5ebf26d1d..b93c1034e6c 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java @@ -62,7 +62,7 @@ public class MapTest { return null; } } - + @JsonProperty("map_of_enum_string") private Map mapOfEnumString = null;