Skip to content

Commit d9709b8

Browse files
committed
allow null enums on java generator
1 parent 859b5d8 commit d9709b8

File tree

5 files changed

+21
-4
lines changed

5 files changed

+21
-4
lines changed

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,11 @@ public void processModelEnums(Map<String, Object> objs) {
305305
Map<String, String> enumVar = new HashMap<String, String>();
306306
String enumName = findEnumName(truncateIdx, value);
307307
enumVar.put("name", toEnumVarName(enumName, cm.dataType));
308-
enumVar.put("value", toEnumValue(value.toString(), cm.dataType));
308+
if (value == null) {
309+
enumVar.put("value", toEnumValue(null, cm.dataType));
310+
} else {
311+
enumVar.put("value", toEnumValue(value.toString(), cm.dataType));
312+
}
309313
enumVars.add(enumVar);
310314
}
311315
cm.allowableValues.put("enumVars", enumVars);
@@ -320,6 +324,9 @@ public void processModelEnums(Map<String, Object> objs) {
320324
}
321325

322326
private String findEnumName(int truncateIdx, Object value) {
327+
if (value == null) {
328+
return "null";
329+
}
323330
String enumName;
324331
if (truncateIdx == 0) {
325332
enumName = value.toString();
@@ -3778,7 +3785,11 @@ public void updateCodegenPropertyEnum(CodegenProperty var) {
37783785
Map<String, String> enumVar = new HashMap<String, String>();
37793786
String enumName = findEnumName(truncateIdx, value);
37803787
enumVar.put("name", toEnumVarName(enumName, var.datatype));
3781-
enumVar.put("value", toEnumValue(value.toString(), var.datatype));
3788+
if (value == null) {
3789+
enumVar.put("value", toEnumValue(null, var.datatype));
3790+
} else {
3791+
enumVar.put("value", toEnumValue(value.toString(), var.datatype));
3792+
}
37823793
enumVars.add(enumVar);
37833794
}
37843795
allowableValues.put("enumVars", enumVars);

src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,9 @@ public CodegenModel fromModel(String name, Schema schema, Map<String, Schema> al
915915

916916
@Override
917917
public String toEnumValue(String value, String datatype) {
918+
if (value == null) {
919+
return null;
920+
}
918921
// C# only supports enums as literals for int, int?, long, long?, byte, and byte?. All else must be treated as strings.
919922
// Per: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum
920923
// The approved types for an enum are byte, sbyte, short, ushort, int, uint, long, or ulong.

src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,6 +1105,9 @@ public String toEnumVarName(String value, String datatype) {
11051105

11061106
@Override
11071107
public String toEnumValue(String value, String datatype) {
1108+
if (value == null) {
1109+
return null;
1110+
}
11081111
if ("Integer".equals(datatype) || "Double".equals(datatype)) {
11091112
return value;
11101113
} else if ("Long".equals(datatype)) {

src/main/resources/handlebars/Java/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import com.google.gson.stream.JsonWriter;
1919
public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
2020
{{#allowableValues}}
2121
{{#enumVars}}
22-
{{{name}}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
22+
{{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
2323
{{/enumVars}}
2424
{{/allowableValues}}
2525

src/main/resources/handlebars/Java/modelInnerEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
66
{{#allowableValues}}
77
{{#enumVars}}
8-
{{{name}}}({{{value}}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
8+
{{{name}}}({{#value}}{{{value}}}{{/value}}{{^value}}null{{/value}}){{^@last}},{{/@last}}{{#@last}};{{/@last}}
99
{{/enumVars}}
1010
{{/allowableValues}}
1111

0 commit comments

Comments
 (0)