From aff766b7855f9baa217a6de2529aac593cab1407 Mon Sep 17 00:00:00 2001 From: Rogercf Date: Mon, 3 Aug 2015 19:19:10 -0300 Subject: [PATCH 1/5] Update CodegenProperty.java Added a "items" field to keep track of the inner type to be accessed in the mustache templates --- .../src/main/java/io/swagger/codegen/CodegenProperty.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java index 7872da2c707..12d603a7bcb 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenProperty.java @@ -34,4 +34,6 @@ public class CodegenProperty { public boolean isEnum; public List _enum; public Map allowableValues; + public CodegenProperty items; + } From a30b66beb1aa4dd63b02a6749b735c816f73647d Mon Sep 17 00:00:00 2001 From: Rogercf Date: Mon, 3 Aug 2015 19:20:51 -0300 Subject: [PATCH 2/5] Update DefaultCodegen.java Setting the "items" field when the type is array and updating some values if the array is an array of enums --- .../io/swagger/codegen/DefaultCodegen.java | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 0e3c3a34ef9..c7e24e1ab9f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -667,22 +667,29 @@ public class DefaultCodegen { property.baseType = getSwaggerType(p); - if (p instanceof ArrayProperty) { - property.isContainer = true; - property.containerType = "array"; - ArrayProperty ap = (ArrayProperty) p; - CodegenProperty cp = fromProperty("inner", ap.getItems()); - if (cp == null) { - LOGGER.warn("skipping invalid property " + Json.pretty(p)); - } else { - property.baseType = getSwaggerType(p); - if (!languageSpecificPrimitives.contains(cp.baseType)) { - property.complexType = cp.baseType; - } else { - property.isPrimitiveType = true; - } - } - } else if (p instanceof MapProperty) { + if (p instanceof ArrayProperty) { + property.isContainer = true; + property.containerType = "array"; + ArrayProperty ap = (ArrayProperty) p; + CodegenProperty cp = fromProperty(property.name, ap.getItems()); + if (cp == null) { + LOGGER.warn("skipping invalid property " + Json.pretty(p)); + } else { + property.baseType = getSwaggerType(p); + if (!languageSpecificPrimitives.contains(cp.baseType)) { + property.complexType = cp.baseType; + } else { + property.isPrimitiveType = true; + } + property.items = cp; + if (property.items.isEnum) { + property.datatypeWithEnum = property.datatypeWithEnum.replace("String", + property.items.datatypeWithEnum); + property.defaultValue = property.defaultValue.replace("String", property.items.datatypeWithEnum); + } + } + + } else if (p instanceof MapProperty) { property.isContainer = true; property.containerType = "map"; MapProperty ap = (MapProperty) p; From c5dc070685df5b7ae8e4994278d766b04e0cddc5 Mon Sep 17 00:00:00 2001 From: Rogercf Date: Mon, 3 Aug 2015 19:21:54 -0300 Subject: [PATCH 3/5] Update model.mustache Fixed generating array of enums properties in the java template --- .../swagger-codegen/src/main/resources/Java/model.mustache | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/model.mustache b/modules/swagger-codegen/src/main/resources/Java/model.mustache index 0e12f514c48..24218494e07 100644 --- a/modules/swagger-codegen/src/main/resources/Java/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/model.mustache @@ -14,11 +14,14 @@ import com.fasterxml.jackson.annotation.JsonProperty; @ApiModel(description = "{{{description}}}") public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} { {{#vars}}{{#isEnum}} + public enum {{datatypeWithEnum}} { + {{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}} + };{{/isEnum}}{{#items.isEnum}}{{#items}} public enum {{datatypeWithEnum}} { {{#allowableValues}}{{#values}} {{.}}, {{/values}}{{/allowableValues}} }; - private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{^isEnum}} - private {{{datatype}}} {{name}} = {{{defaultValue}}};{{/isEnum}}{{/vars}} +{{/items}}{{/items.isEnum}} + private {{{datatypeWithEnum}}} {{name}} = {{{defaultValue}}};{{/vars}} {{#vars}} /**{{#description}} From 13038d2a124c14a1c5e35203d2fde6d567a8ffe7 Mon Sep 17 00:00:00 2001 From: Rogercf Date: Mon, 3 Aug 2015 19:46:10 -0300 Subject: [PATCH 4/5] Update DefaultCodegen.java Replaced hardcoded "String" with property.items.baseType --- .../src/main/java/io/swagger/codegen/DefaultCodegen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index c7e24e1ab9f..83c30af66df 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -683,9 +683,9 @@ public class DefaultCodegen { } property.items = cp; if (property.items.isEnum) { - property.datatypeWithEnum = property.datatypeWithEnum.replace("String", + property.datatypeWithEnum = property.datatypeWithEnum.replace(property.items.baseType, property.items.datatypeWithEnum); - property.defaultValue = property.defaultValue.replace("String", property.items.datatypeWithEnum); + property.defaultValue = property.defaultValue.replace(property.items.baseType, property.items.datatypeWithEnum); } } From 97d24a711924eae888d009103972a56835194628 Mon Sep 17 00:00:00 2001 From: Rogercf Date: Mon, 3 Aug 2015 19:50:29 -0300 Subject: [PATCH 5/5] Update DefaultCodegen.java Fixed indentation --- .../io/swagger/codegen/DefaultCodegen.java | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 83c30af66df..9f9b398011d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -667,29 +667,28 @@ public class DefaultCodegen { property.baseType = getSwaggerType(p); - if (p instanceof ArrayProperty) { - property.isContainer = true; - property.containerType = "array"; - ArrayProperty ap = (ArrayProperty) p; - CodegenProperty cp = fromProperty(property.name, ap.getItems()); - if (cp == null) { - LOGGER.warn("skipping invalid property " + Json.pretty(p)); + if (p instanceof ArrayProperty) { + property.isContainer = true; + property.containerType = "array"; + ArrayProperty ap = (ArrayProperty) p; + CodegenProperty cp = fromProperty(property.name, ap.getItems()); + if (cp == null) { + LOGGER.warn("skipping invalid property " + Json.pretty(p)); + } else { + property.baseType = getSwaggerType(p); + if (!languageSpecificPrimitives.contains(cp.baseType)) { + property.complexType = cp.baseType; } else { - property.baseType = getSwaggerType(p); - if (!languageSpecificPrimitives.contains(cp.baseType)) { - property.complexType = cp.baseType; - } else { - property.isPrimitiveType = true; - } - property.items = cp; - if (property.items.isEnum) { - property.datatypeWithEnum = property.datatypeWithEnum.replace(property.items.baseType, - property.items.datatypeWithEnum); - property.defaultValue = property.defaultValue.replace(property.items.baseType, property.items.datatypeWithEnum); - } + property.isPrimitiveType = true; } - - } else if (p instanceof MapProperty) { + property.items = cp; + if (property.items.isEnum) { + property.datatypeWithEnum = property.datatypeWithEnum.replace(property.items.baseType, + property.items.datatypeWithEnum); + property.defaultValue = property.defaultValue.replace(property.items.baseType, property.items.datatypeWithEnum); + } + } + } else if (p instanceof MapProperty) { property.isContainer = true; property.containerType = "map"; MapProperty ap = (MapProperty) p;