Skip to content

Commit c6b8eac

Browse files
authored
Merge pull request #713 from swagger-api/codegen-issue-5950
added option to throw error instead return null for unknown enum values
2 parents 245e073 + 89da481 commit c6b8eac

16 files changed

+21
-15
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegenConfig {
5252
public static final String JAVA8_MODE = "java8";
5353
public static final String WITH_XML = "withXml";
5454
public static final String SUPPORT_JAVA6 = "supportJava6";
55+
public static final String ERROR_ON_UNKNOWN_ENUM = "errorOnUnknownEnum";
5556

5657
protected String dateLibrary = "threetenbp";
5758
protected boolean java8Mode = false;
@@ -333,6 +334,11 @@ public void processOpts() {
333334
this.setFullJavaUtil(Boolean.valueOf(additionalProperties.get(FULL_JAVA_UTIL).toString()));
334335
}
335336

337+
if (additionalProperties.containsKey(ERROR_ON_UNKNOWN_ENUM)) {
338+
boolean errorOnUnknownEnum = Boolean.parseBoolean(additionalProperties.get(ERROR_ON_UNKNOWN_ENUM).toString());
339+
additionalProperties.put(ERROR_ON_UNKNOWN_ENUM, errorOnUnknownEnum);
340+
}
341+
336342
if (this instanceof NotNullAnnotationFeatures) {
337343
notNullOption = (NotNullAnnotationFeatures)this;
338344
if (additionalProperties.containsKey(NOT_NULL_JACKSON_ANNOTATION)) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
5050
return b;
5151
}
5252
}
53-
return null;
53+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
5454
}
5555
{{#if gson}}
5656

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
return b;
3535
}
3636
}
37-
return null;
37+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
3838
}
3939
{{#gson}}
4040
public static class Adapter extends TypeAdapter<{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}> {

src/main/resources/handlebars/JavaInflector/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@
3939
return b;
4040
}
4141
}
42-
return null;
42+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4343
}
4444
}

src/main/resources/handlebars/JavaInflector/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
4242
return b;
4343
}
4444
}
45-
return null;
45+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4646
}
4747
}

src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} {
2828
return b;
2929
}
3030
}
31-
return null;
31+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
3232
}
3333
}

src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} {
2828
return b;
2929
}
3030
}
31-
return null;
31+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
3232
}
3333
}

src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
6363
return b;
6464
}
6565
}
66-
return null;
66+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
6767
}
6868

6969
}

src/main/resources/handlebars/JavaJaxRS/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@
3939
return b;
4040
}
4141
}
42-
return null;
42+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4343
}
4444
}

src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
3737
return b;
3838
}
3939
}
40-
return null;
40+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4141
}
4242
}

src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} {
2828
return b;
2929
}
3030
}
31-
return null;
31+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
3232
}
3333
}

src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
3838
return b;
3939
}
4040
}
41-
return null;
41+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4242
}
4343
}

src/main/resources/handlebars/JavaMicronaut/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@
3939
return b;
4040
}
4141
}
42-
return null;
42+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4343
}
4444
}

src/main/resources/handlebars/JavaMicronaut/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
3737
return b;
3838
}
3939
}
40-
return null;
40+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4141
}
4242
}

src/main/resources/handlebars/JavaSpring/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@
3939
return b;
4040
}
4141
}
42-
return null;
42+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4343
}
4444
}

src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum
3737
return b;
3838
}
3939
}
40-
return null;
40+
{{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}}
4141
}
4242
}

0 commit comments

Comments
 (0)