From d9709b87e303069cbf927d355883324343a3ecc9 Mon Sep 17 00:00:00 2001 From: HugoMario Date: Wed, 26 Feb 2020 18:24:02 -0500 Subject: [PATCH 1/5] allow null enums on java generator --- .../v3/generators/DefaultCodegenConfig.java | 15 +++++++++++++-- .../generators/dotnet/AbstractCSharpCodegen.java | 3 +++ .../v3/generators/java/AbstractJavaCodegen.java | 3 +++ .../resources/handlebars/Java/modelEnum.mustache | 2 +- .../handlebars/Java/modelInnerEnum.mustache | 2 +- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java index 7f5b72bc83..f085c56cf4 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java +++ b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java @@ -305,7 +305,11 @@ public void processModelEnums(Map objs) { Map enumVar = new HashMap(); String enumName = findEnumName(truncateIdx, value); enumVar.put("name", toEnumVarName(enumName, cm.dataType)); - enumVar.put("value", toEnumValue(value.toString(), cm.dataType)); + if (value == null) { + enumVar.put("value", toEnumValue(null, cm.dataType)); + } else { + enumVar.put("value", toEnumValue(value.toString(), cm.dataType)); + } enumVars.add(enumVar); } cm.allowableValues.put("enumVars", enumVars); @@ -320,6 +324,9 @@ public void processModelEnums(Map objs) { } private String findEnumName(int truncateIdx, Object value) { + if (value == null) { + return "null"; + } String enumName; if (truncateIdx == 0) { enumName = value.toString(); @@ -3778,7 +3785,11 @@ public void updateCodegenPropertyEnum(CodegenProperty var) { Map enumVar = new HashMap(); String enumName = findEnumName(truncateIdx, value); enumVar.put("name", toEnumVarName(enumName, var.datatype)); - enumVar.put("value", toEnumValue(value.toString(), var.datatype)); + if (value == null) { + enumVar.put("value", toEnumValue(null, var.datatype)); + } else { + enumVar.put("value", toEnumValue(value.toString(), var.datatype)); + } enumVars.add(enumVar); } allowableValues.put("enumVars", enumVars); diff --git a/src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java index 7951a9c568..f07b54ab09 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java +++ b/src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java @@ -915,6 +915,9 @@ public CodegenModel fromModel(String name, Schema schema, Map al @Override public String toEnumValue(String value, String datatype) { + if (value == null) { + return null; + } // C# only supports enums as literals for int, int?, long, long?, byte, and byte?. All else must be treated as strings. // Per: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum // The approved types for an enum are byte, sbyte, short, ushort, int, uint, long, or ulong. 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 9b325acf17..965284ad4d 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 @@ -1105,6 +1105,9 @@ public String toEnumVarName(String value, String datatype) { @Override public String toEnumValue(String value, String datatype) { + if (value == null) { + return null; + } if ("Integer".equals(datatype) || "Double".equals(datatype)) { return value; } else if ("Long".equals(datatype)) { diff --git a/src/main/resources/handlebars/Java/modelEnum.mustache b/src/main/resources/handlebars/Java/modelEnum.mustache index 7b35804057..f151c2cac8 100644 --- a/src/main/resources/handlebars/Java/modelEnum.mustache +++ b/src/main/resources/handlebars/Java/modelEnum.mustache @@ -19,7 +19,7 @@ import com.google.gson.stream.JsonWriter; public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} { {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/Java/modelInnerEnum.mustache b/src/main/resources/handlebars/Java/modelInnerEnum.mustache index cac0382d1d..bf6965b113 100644 --- a/src/main/resources/handlebars/Java/modelInnerEnum.mustache +++ b/src/main/resources/handlebars/Java/modelInnerEnum.mustache @@ -5,7 +5,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} { {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} From acde051cfe090a8c68c743934c88f094c1568b52 Mon Sep 17 00:00:00 2001 From: HugoMario Date: Tue, 3 Mar 2020 13:06:59 -0500 Subject: [PATCH 2/5] updated enum jaxrs templates --- .../handlebars/JavaJaxRS/cxf-cdi/api.mustache | 2 +- .../JavaJaxRS/cxf-cdi/enumClass.mustache | 2 +- .../JavaJaxRS/cxf/enumClass.mustache | 2 +- .../JavaJaxRS/cxf/enumOuterClass.mustache | 28 +++++++++++-------- .../JavaJaxRS/cxf/modelInnerEnum.mustache | 2 +- .../handlebars/JavaJaxRS/cxf/pojo.mustache | 8 ++++-- .../handlebars/JavaJaxRS/enumClass.mustache | 4 +-- .../JavaJaxRS/enumOuterClass.mustache | 4 +-- .../handlebars/JavaJaxRS/modelEnum.mustache | 4 +-- .../JavaJaxRS/resteasy/eap/enumClass.mustache | 5 ++-- .../JavaJaxRS/resteasy/enumClass.mustache | 5 ++-- .../JavaJaxRS/spec/enumClass.mustache | 2 +- .../JavaJaxRS/spec/enumOuterClass.mustache | 4 +-- 13 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/api.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/api.mustache index ab7a73c029..1fa6183916 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/api.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/api.mustache @@ -79,7 +79,7 @@ public class {{classname}} { @ApiResponse(responseCode = "{{{code}}}", description = "{{{message}}}"{{^vendorExtensions.x-java-is-response-void}}, content = @Content({{^containerType}}schema = @Schema(implementation = {{{baseType}}}.class)){{/containerType}}{{#containerType}}array = @ArraySchema(schema = @Schema(implementation = {{{baseType}}}.class))){{/containerType}}{{/vendorExtensions.x-java-is-response-void}}){{#hasMore}},{{/hasMore}}{{/responses}} }) {{/useOas2}} public Response {{nickname}}({{#parameters}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{/parameters}}) { - return delegate.{{nickname}}({{#parameters}}{{#isBinary}}{{paramName}}InputStream, {{paramName}}Detail{{/isBinary}}{{^isBinary}}{{paramName}}{{/isBinary}}, {{/parameters}}securityContext); + return delegate.{{nickname}}({{#parameters}}{{#isFile}}{{paramName}}InputStream, {{paramName}}Detail{{/isFile}}{{^isFile}}{{paramName}}{{/isFile}}, {{/parameters}}securityContext); } {{/contents}} {{/operation}} diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache index 8468ae2cfe..69ba2f8a58 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache @@ -3,7 +3,7 @@ public enum {{datatypeWithEnum}} { {{#allowableValues}} - {{#enumVars}}@XmlEnumValue({{{value}}}) {{name}}({{datatype}}.valueOf({{{value}}})){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}} + {{#enumVars}}{{#value}}@XmlEnumValue({{{value}}}) {{name}}({{datatype}}.valueOf({{{value}}})){{/value}}{{^value}}@XmlEnumValue("") {{name}}(null){{/value}}{{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache index 6877d65cef..55a77140cd 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache @@ -3,7 +3,7 @@ public enum {{datatypeWithEnum}} { {{#allowableValues}} -{{#enumVars}}@XmlEnumValue({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) {{name}}({{datatype}}.valueOf({{{value}}})){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}} +{{#enumVars}}@XmlEnumValue({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) {{name}}({{#value}}{{datatype}}.valueOf({{{value}}}){{/value}}{{^value}}null{{/value}})){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache index 96d3759f0d..cdca0cb35e 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache @@ -14,24 +14,30 @@ import javax.xml.bind.annotation.XmlEnumValue; {{#if withXml}} @XmlType(name="{{classname}}") @XmlEnum({{dataType}}.class) -{{/if~}} +{{/if}} public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} { {{#if gson}} - {{#allowableValues}}{{#enumVars}} + {{#allowableValues}} + {{#enumVars}} @SerializedName({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) {{#if withXml}} - @XmlEnumValue({{{value}}}) - {{/if~}} - {{{name}}}({{{value}}}){{^@last}}, - {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} + @XmlEnumValue({{#value}}{{{value}}}{{/value}}{{^value}}""{{/value}}) + {{/if}} + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, + {{/@last}}{{#@last}};{{/@last}} + {{/enumVars}} + {{/allowableValues}} {{/if}} {{#unless gson}} - {{#allowableValues}}{{#enumVars}} + {{#allowableValues}} + {{#enumVars}} {{#if withXml}} - @XmlEnumValue({{{value}}}) - {{/if~}} - {{{name}}}({{{value}}}){{^@last}}, - {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} + @XmlEnumValue({{#value}}{{{value}}}{{/value}}{{^value}}""{{/value}}) + {{/if}} + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, + {{/@last}}{{#@last}};{{/@last}} + {{/enumVars}} + {{/allowableValues}} {{/unless}} private {{{dataType}}} value; diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf/modelInnerEnum.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf/modelInnerEnum.mustache index 5307c94b04..bd397a1208 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf/modelInnerEnum.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf/modelInnerEnum.mustache @@ -1,7 +1,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} { {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf/pojo.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf/pojo.mustache index 1bfb18d6e2..6c8429248f 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf/pojo.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf/pojo.mustache @@ -30,8 +30,12 @@ import com.fasterxml.jackson.annotation.JsonCreator; {{#useOas2}}@ApiModel{{/useOas2}}{{^useOas2}}@Schema{{/useOas2}}(description="{{{description}}}") {{/description}} public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#interfaceModels}}{{#@first}}implements {{/@first}}{{classname}}{{^@last}}, {{/@last}}{{#@last}} {{/@last}}{{/interfaceModels}} { - {{#vars}}{{#baseItems this}}{{#is this 'enum'}} -{{>modelInnerEnum}}{{/is~}}{{/baseItems}} + {{#vars}} + {{#baseItems this}} + {{#is this 'enum'}} +{{>modelInnerEnum}} + {{/is}} + {{/baseItems}} {{#withXml}} @XmlElement(name="{{baseName}}"{{#required}}, required = {{required}}{{/required}}) {{/withXml}} diff --git a/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache index 9c7d07e5ab..35874e4ab4 100644 --- a/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache @@ -6,7 +6,7 @@ {{#allowableValues}} {{#enumVars}} @SerializedName({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} @@ -14,7 +14,7 @@ {{#unless gson}} {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache b/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache index 97a0a180d9..b32d97f74d 100644 --- a/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache @@ -9,12 +9,12 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum {{#if gson}} {{#allowableValues}}{{#enumVars}} @SerializedName({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/if}} {{#unless gson}} {{#allowableValues}}{{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/unless}} diff --git a/src/main/resources/handlebars/JavaJaxRS/modelEnum.mustache b/src/main/resources/handlebars/JavaJaxRS/modelEnum.mustache index e811e777f5..46cb7b4688 100644 --- a/src/main/resources/handlebars/JavaJaxRS/modelEnum.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/modelEnum.mustache @@ -9,12 +9,12 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum {{#if gson}} {{#allowableValues}}{{#enumVars}} @SerializedName({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/if}} {{#unless gson}} {{#allowableValues}}{{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/unless}} diff --git a/src/main/resources/handlebars/JavaJaxRS/resteasy/eap/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/resteasy/eap/enumClass.mustache index ca4431a72a..f8f6502e0c 100644 --- a/src/main/resources/handlebars/JavaJaxRS/resteasy/eap/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/resteasy/eap/enumClass.mustache @@ -4,9 +4,8 @@ public enum {{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} { {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, - - {{/@last}}{{#@last}}; + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, +{{/@last}}{{#@last}}; {{/@last}} {{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/resteasy/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/resteasy/enumClass.mustache index ca4431a72a..f8f6502e0c 100644 --- a/src/main/resources/handlebars/JavaJaxRS/resteasy/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/resteasy/enumClass.mustache @@ -4,9 +4,8 @@ public enum {{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} { {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, - - {{/@last}}{{#@last}}; + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, +{{/@last}}{{#@last}}; {{/@last}} {{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache index e01687ee5d..2b2dfa8510 100644 --- a/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache @@ -1,7 +1,7 @@ public enum {{datatypeWithEnum}} { {{#allowableValues}} - {{#enumVars}}{{name}}({{datatype}}.valueOf({{{value}}})){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}} + {{#enumVars}}{{name}}({{#value}}{{datatype}}.valueOf({{{value}}}){{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache b/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache index 0d33f1f57f..59c5a63160 100644 --- a/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache @@ -10,12 +10,12 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum {{#if gson}} {{#allowableValues}}{{#enumVars}} @SerializedName({{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}{{{value}}}{{#is ../../this 'integer'}}"{{/is}}{{#is ../../this 'double'}}"{{/is}}{{#is ../../this 'long'}}"{{/is}}{{#is ../../this 'float'}}"{{/is}}) - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/if}} {{#unless gson}} {{#allowableValues}}{{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/unless}} From 56adb17c6e71ad923cc338cb9c4c3c2ee17bdf33 Mon Sep 17 00:00:00 2001 From: HugoMario Date: Wed, 4 Mar 2020 01:44:35 -0500 Subject: [PATCH 3/5] updated kotlin enum templates --- .../io/swagger/codegen/v3/generators/DefaultCodegenConfig.java | 3 +++ .../resources/handlebars/kotlin-client/data_class.mustache | 2 +- .../resources/handlebars/kotlin-client/enum_class.mustache | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java index f085c56cf4..62c41a27c5 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java +++ b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java @@ -377,6 +377,9 @@ public String toEnumDefaultValue(String value, String datatype) { * @return the sanitized value for enum */ public String toEnumValue(String value, String datatype) { + if (value == null) { + return null; + } if ("number".equalsIgnoreCase(datatype)) { return value; } else { diff --git a/src/main/resources/handlebars/kotlin-client/data_class.mustache b/src/main/resources/handlebars/kotlin-client/data_class.mustache index e85a06c4fa..c9e85c1148 100644 --- a/src/main/resources/handlebars/kotlin-client/data_class.mustache +++ b/src/main/resources/handlebars/kotlin-client/data_class.mustache @@ -20,7 +20,7 @@ data class {{classname}} ( */ enum class {{nameInCamelCase}}(val value: {{datatype}}){ {{#allowableValues}}{{#enumVars}} - {{&name}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} + {{&name}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} {{/enumVars}}{{/allowableValues}} } {{/is}}{{/vars}}{{/has}} diff --git a/src/main/resources/handlebars/kotlin-client/enum_class.mustache b/src/main/resources/handlebars/kotlin-client/enum_class.mustache index e1480d3375..4ab1adf3b1 100644 --- a/src/main/resources/handlebars/kotlin-client/enum_class.mustache +++ b/src/main/resources/handlebars/kotlin-client/enum_class.mustache @@ -4,6 +4,6 @@ */ enum class {{classname}}(val value: {{dataType}}){ {{#allowableValues}}{{#enumVars}} - {{&name}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}} + {{&name}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}// :/ {{/enumVars}}{{/allowableValues}} } \ No newline at end of file From b070127a852b6c5ee92e9dabd7653ecc36d9dbe0 Mon Sep 17 00:00:00 2001 From: HugoMario Date: Wed, 4 Mar 2020 03:25:36 -0500 Subject: [PATCH 4/5] updated spring enum templates --- src/main/resources/handlebars/JavaSpring/enumClass.mustache | 4 ++-- .../resources/handlebars/JavaSpring/enumOuterClass.mustache | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/handlebars/JavaSpring/enumClass.mustache b/src/main/resources/handlebars/JavaSpring/enumClass.mustache index 3a77cb0f36..99501bf62b 100644 --- a/src/main/resources/handlebars/JavaSpring/enumClass.mustache +++ b/src/main/resources/handlebars/JavaSpring/enumClass.mustache @@ -6,7 +6,7 @@ {{#allowableValues}} {{#enumVars}} @SerializedName({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}) - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} @@ -14,7 +14,7 @@ {{^gson}} {{#allowableValues}} {{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}} {{/enumVars}} {{/allowableValues}} diff --git a/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache b/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache index 1ca135d46b..9f0a3ea01f 100644 --- a/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache @@ -9,12 +9,12 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum {{#gson}} {{#allowableValues}}{{#enumVars}} @SerializedName({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}) - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/gson}} {{^gson}} {{#allowableValues}}{{#enumVars}} - {{{name}}}({{{value}}}){{^@last}}, + {{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}}, {{/@last}}{{#@last}};{{/@last}}{{/enumVars}}{{/allowableValues}} {{/gson}} From ef1b80a37d64334644fcb3f42ffb91fa689022da Mon Sep 17 00:00:00 2001 From: HugoMario Date: Wed, 4 Mar 2020 04:19:44 -0500 Subject: [PATCH 5/5] updated dotnet enum templates --- src/main/resources/handlebars/aspnetcore/enumClass.mustache | 6 +++--- src/main/resources/handlebars/csharp/enumClass.mustache | 6 +++--- src/main/resources/handlebars/csharp/modelEnum.mustache | 6 +++--- .../resources/handlebars/csharp/modelInnerEnum.mustache | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/resources/handlebars/aspnetcore/enumClass.mustache b/src/main/resources/handlebars/aspnetcore/enumClass.mustache index 4800f1cbfb..70aaf39070 100644 --- a/src/main/resources/handlebars/aspnetcore/enumClass.mustache +++ b/src/main/resources/handlebars/aspnetcore/enumClass.mustache @@ -10,9 +10,9 @@ { {{#allowableValues}}{{#enumVars}} /// - /// Enum {{name}} for {{{value}}} + /// Enum {{name}} for {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}} /// - {{#isString}}[EnumMember(Value = "{{{value}}}")]{{/isString}} - {{name}}{{^isString}} = {{{value}}}{{/isString}}{{#isString}} = {{@index}}{{/isString}}{{^@last}}, + {{#isString}}[EnumMember(Value = {{#value}}"{{{value}}}"{{/value}}{{^value}}null{{/value}})]{{/isString}} + {{name}}{{^isString}} = {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}{{/isString}}{{#isString}} = {{@index}}{{/isString}}{{^@last}}, {{/@last}}{{/enumVars}}{{/allowableValues}} } diff --git a/src/main/resources/handlebars/csharp/enumClass.mustache b/src/main/resources/handlebars/csharp/enumClass.mustache index e4f01f5cd7..6376df7590 100644 --- a/src/main/resources/handlebars/csharp/enumClass.mustache +++ b/src/main/resources/handlebars/csharp/enumClass.mustache @@ -9,9 +9,9 @@ { {{#allowableValues}}{{#enumVars}} /// - /// Enum {{name}} for {{{value}}} + /// Enum {{name}} for {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}} /// - [EnumMember(Value = {{#isLong}}"{{/isLong}}{{#isInteger}}"{{/isInteger}}{{#isFloat}}"{{/isFloat}}{{#isDouble}}"{{/isDouble}}{{{value}}}{{#isLong}}"{{/isLong}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isFloat}}"{{/isFloat}})] - {{name}}{{#isLong}} = {{{value}}}{{/isLong}}{{#isInteger}} = {{{value}}}{{/isInteger}}{{^isInteger}} = {{@index}}{{/isInteger}}{{^@last}}, + [EnumMember(Value = {{#value}}{{#isLong}}"{{/isLong}}{{#isInteger}}"{{/isInteger}}{{#isFloat}}"{{/isFloat}}{{#isDouble}}"{{/isDouble}}{{{value}}}{{#isLong}}"{{/isLong}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isFloat}}"{{/isFloat}}{{/value}}{{^value}}null{{/value}})] + {{name}} {{#value}}{{#isLong}} = {{{value}}}{{/isLong}}{{#isInteger}} = {{{value}}}{{/isInteger}}{{^isInteger}} = {{@index}}{{/isInteger}}{{/value}}{{^value}}null{{/value}}{{^@last}}, {{/@last}}{{/enumVars}}{{/allowableValues}} } diff --git a/src/main/resources/handlebars/csharp/modelEnum.mustache b/src/main/resources/handlebars/csharp/modelEnum.mustache index 5037bbb6bc..1dfb03cd35 100644 --- a/src/main/resources/handlebars/csharp/modelEnum.mustache +++ b/src/main/resources/handlebars/csharp/modelEnum.mustache @@ -11,9 +11,9 @@ { {{#allowableValues}}{{#enumVars}} /// - /// Enum {{name}} for value: {{{value}}} + /// Enum {{name}} for value: {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}} /// - {{#isString}}[EnumMember(Value = "{{{value}}}")]{{/isString}} - {{name}}{{^isString}} = {{{value}}}{{/isString}}{{#isString}} = {{@index_1}}{{/isString}}{{^@last}}, + {{#isString}}[EnumMember(Value = {{#value}}"{{{value}}}"{{/value}}{{^value}}null{{/value}})]{{/isString}} + {{name}}{{^isString}} = {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}{{/isString}}{{#isString}} = {{@index_1}}{{/isString}}{{^@last}}, {{/@last}}{{/enumVars}}{{/allowableValues}} }{{! NOTE: This model's enumVars is modified to look like CodegenProperty}} diff --git a/src/main/resources/handlebars/csharp/modelInnerEnum.mustache b/src/main/resources/handlebars/csharp/modelInnerEnum.mustache index 477be16c8d..6a3fabb10e 100644 --- a/src/main/resources/handlebars/csharp/modelInnerEnum.mustache +++ b/src/main/resources/handlebars/csharp/modelInnerEnum.mustache @@ -12,10 +12,10 @@ { {{#allowableValues}}{{#enumVars}} /// - /// Enum {{name}} for value: {{{value}}} + /// Enum {{name}} for value: {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}} /// - {{#isString}}[EnumMember(Value = "{{{value}}}")]{{/isString}} - {{name}}{{^isString}} = {{{value}}}{{/isString}}{{#isString}} = {{@index_1}}{{/isString}}{{^@last}}, + {{#isString}}[EnumMember(Value = {{#value}}"{{{value}}}"{{/value}}{{^value}}null{{/value}})]{{/isString}} + {{name}}{{^isString}} = {{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}{{/isString}}{{#isString}} = {{@index_1}}{{/isString}}{{^@last}}, {{/@last}}{{/enumVars}}{{/allowableValues}} } {{/isContainer}}