Skip to content

Commit 1e490ac

Browse files
authored
Merge pull request #10356 from swagger-api/issue-5950
added option to write a throwing exception for unknown enums values.
2 parents bdb4edd + 12e293d commit 1e490ac

19 files changed

+24
-18
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
5757
public static final String WITH_XML = "withXml";
5858
public static final String SUPPORT_JAVA6 = "supportJava6";
5959
public static final String DISABLE_HTML_ESCAPING = "disableHtmlEscaping";
60+
public static final String ERROR_ON_UNKNOWN_ENUM = "errorOnUnknownEnum";
6061

6162
protected String dateLibrary = "threetenbp";
6263
protected boolean supportAsync = false;
@@ -365,6 +366,11 @@ public void processOpts() {
365366
}
366367
additionalProperties.put(WITH_XML, withXml);
367368

369+
if (additionalProperties.containsKey(ERROR_ON_UNKNOWN_ENUM)) {
370+
boolean errorOnUnknownEnum = Boolean.parseBoolean(additionalProperties.get(ERROR_ON_UNKNOWN_ENUM).toString());
371+
additionalProperties.put(ERROR_ON_UNKNOWN_ENUM, errorOnUnknownEnum);
372+
}
373+
368374
// make api and model doc path available in mustache template
369375
additionalProperties.put("apiDocPath", apiDocPath);
370376
additionalProperties.put("modelDocPath", modelDocPath);

modules/swagger-codegen/src/main/resources/Java/modelEnum.mustache

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

modules/swagger-codegen/src/main/resources/Java/modelInnerEnum.mustache

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

modules/swagger-codegen/src/main/resources/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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
4343
}
4444
}

modules/swagger-codegen/src/main/resources/JavaInflector/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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
4141
}
4242
}

modules/swagger-codegen/src/main/resources/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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
3232
}
3333
}

modules/swagger-codegen/src/main/resources/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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
3232
}
3333
}

modules/swagger-codegen/src/main/resources/JavaJaxRS/cxf/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ 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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
4646
}
4747

4848
}

modules/swagger-codegen/src/main/resources/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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
4343
}
4444
}

modules/swagger-codegen/src/main/resources/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 '{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}' enum.");{{/errorOnUnknownEnum}}
4141
}
4242
}

0 commit comments

Comments
 (0)