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 c31297a4b7..2df6b752e7 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 @@ -52,6 +52,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegenConfig { public static final String JAVA8_MODE = "java8"; public static final String WITH_XML = "withXml"; public static final String SUPPORT_JAVA6 = "supportJava6"; + public static final String ERROR_ON_UNKNOWN_ENUM = "errorOnUnknownEnum"; protected String dateLibrary = "threetenbp"; protected boolean java8Mode = false; @@ -333,6 +334,11 @@ public void processOpts() { this.setFullJavaUtil(Boolean.valueOf(additionalProperties.get(FULL_JAVA_UTIL).toString())); } + if (additionalProperties.containsKey(ERROR_ON_UNKNOWN_ENUM)) { + boolean errorOnUnknownEnum = Boolean.parseBoolean(additionalProperties.get(ERROR_ON_UNKNOWN_ENUM).toString()); + additionalProperties.put(ERROR_ON_UNKNOWN_ENUM, errorOnUnknownEnum); + } + if (this instanceof NotNullAnnotationFeatures) { notNullOption = (NotNullAnnotationFeatures)this; if (additionalProperties.containsKey(NOT_NULL_JACKSON_ANNOTATION)) { diff --git a/src/main/resources/handlebars/Java/modelEnum.mustache b/src/main/resources/handlebars/Java/modelEnum.mustache index f151c2cac8..07854c7cd9 100644 --- a/src/main/resources/handlebars/Java/modelEnum.mustache +++ b/src/main/resources/handlebars/Java/modelEnum.mustache @@ -50,7 +50,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } {{#if gson}} diff --git a/src/main/resources/handlebars/Java/modelInnerEnum.mustache b/src/main/resources/handlebars/Java/modelInnerEnum.mustache index bf6965b113..0dd90d0f2a 100644 --- a/src/main/resources/handlebars/Java/modelInnerEnum.mustache +++ b/src/main/resources/handlebars/Java/modelInnerEnum.mustache @@ -34,7 +34,7 @@ return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } {{#gson}} public static class Adapter extends TypeAdapter<{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}> { diff --git a/src/main/resources/handlebars/JavaInflector/enumClass.mustache b/src/main/resources/handlebars/JavaInflector/enumClass.mustache index 5d3ac5173a..cb006534eb 100644 --- a/src/main/resources/handlebars/JavaInflector/enumClass.mustache +++ b/src/main/resources/handlebars/JavaInflector/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaInflector/enumOuterClass.mustache b/src/main/resources/handlebars/JavaInflector/enumOuterClass.mustache index e06df3c9f7..c4cb192b0c 100644 --- a/src/main/resources/handlebars/JavaInflector/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaInflector/enumOuterClass.mustache @@ -42,6 +42,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache index 69ba2f8a58..a4bdc0dc04 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf-cdi/enumClass.mustache @@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} { return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache index 55a77140cd..a995e67f88 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf/enumClass.mustache @@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} { return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache b/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache index cdca0cb35e..491a199e09 100644 --- a/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/cxf/enumOuterClass.mustache @@ -63,7 +63,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache index 35874e4ab4..e8ee70384b 100644 --- a/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache b/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache index b32d97f74d..c31aa1b5ce 100644 --- a/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache b/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache index 2b2dfa8510..38804c59c3 100644 --- a/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/spec/enumClass.mustache @@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} { return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache b/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache index 59c5a63160..3da2b752ee 100644 --- a/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/spec/enumOuterClass.mustache @@ -38,6 +38,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaMicronaut/enumClass.mustache b/src/main/resources/handlebars/JavaMicronaut/enumClass.mustache index 3a77cb0f36..8884062720 100644 --- a/src/main/resources/handlebars/JavaMicronaut/enumClass.mustache +++ b/src/main/resources/handlebars/JavaMicronaut/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaMicronaut/enumOuterClass.mustache b/src/main/resources/handlebars/JavaMicronaut/enumOuterClass.mustache index 1ca135d46b..8d9e187986 100644 --- a/src/main/resources/handlebars/JavaMicronaut/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaMicronaut/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaSpring/enumClass.mustache b/src/main/resources/handlebars/JavaSpring/enumClass.mustache index 99501bf62b..073563d427 100644 --- a/src/main/resources/handlebars/JavaSpring/enumClass.mustache +++ b/src/main/resources/handlebars/JavaSpring/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } } diff --git a/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache b/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache index 9f0a3ea01f..e87a3131ab 100644 --- a/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache +++ b/src/main/resources/handlebars/JavaSpring/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{^errorOnUnknownEnum}}return null;{{/errorOnUnknownEnum}}{{#errorOnUnknownEnum}}throw new IllegalArgumentException("Unexpected value '" + text + "' for '{{{classname}}}' enum.");{{/errorOnUnknownEnum}} } }