diff --git a/pom.xml b/pom.xml
index a19f6a361e..715f0bc324 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
io.swagger.codegen.v3
swagger-codegen-generators
- 1.0.52
+ 1.0.53-SNAPSHOT
jar
diff --git a/src/main/java/io/swagger/codegen/v3/generators/features/IgnoreUnknownJacksonFeatures.java b/src/main/java/io/swagger/codegen/v3/generators/features/IgnoreUnknownJacksonFeatures.java
new file mode 100644
index 0000000000..918aeafef6
--- /dev/null
+++ b/src/main/java/io/swagger/codegen/v3/generators/features/IgnoreUnknownJacksonFeatures.java
@@ -0,0 +1,10 @@
+package io.swagger.codegen.v3.generators.features;
+
+public interface IgnoreUnknownJacksonFeatures {
+ // Language supports generating JsonIgnoreProperties(ignoreUnknown = true)
+ String IGNORE_UNKNOWN_JACKSON_ANNOTATION = "ignoreUnknownJacksonAnnotation";
+
+ void setIgnoreUnknownJacksonAnnotation(boolean ignoreUnknownJacksonAnnotation);
+
+ boolean isIgnoreUnknownJacksonAnnotation();
+}
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 11dd304657..74c47f7968 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
@@ -2,6 +2,7 @@
import static io.swagger.codegen.v3.CodegenConstants.HAS_ENUMS_EXT_NAME;
import static io.swagger.codegen.v3.CodegenConstants.IS_ENUM_EXT_NAME;
+import static io.swagger.codegen.v3.generators.features.IgnoreUnknownJacksonFeatures.IGNORE_UNKNOWN_JACKSON_ANNOTATION;
import static io.swagger.codegen.v3.generators.features.NotNullAnnotationFeatures.NOT_NULL_JACKSON_ANNOTATION;
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
@@ -14,6 +15,7 @@
import io.swagger.codegen.v3.CodegenParameter;
import io.swagger.codegen.v3.CodegenProperty;
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
+import io.swagger.codegen.v3.generators.features.IgnoreUnknownJacksonFeatures;
import io.swagger.codegen.v3.generators.features.NotNullAnnotationFeatures;
import io.swagger.codegen.v3.generators.handlebars.java.JavaHelper;
import io.swagger.codegen.v3.utils.URLPathUtil;
@@ -100,6 +102,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegenConfig {
protected boolean jakarta = false;
private NotNullAnnotationFeatures notNullOption;
protected boolean useNullableForNotNull = true;
+ private IgnoreUnknownJacksonFeatures ignoreUnknown;
public AbstractJavaCodegen() {
super();
@@ -172,6 +175,10 @@ public AbstractJavaCodegen() {
if(this instanceof NotNullAnnotationFeatures){
cliOptions.add(CliOption.newBoolean(NOT_NULL_JACKSON_ANNOTATION, "adds @JsonInclude(JsonInclude.Include.NON_NULL) annotation to model classes"));
}
+ if (this instanceof IgnoreUnknownJacksonFeatures){
+ cliOptions.add(CliOption.newBoolean(IGNORE_UNKNOWN_JACKSON_ANNOTATION,
+ "adds @JsonIgnoreProperties(ignoreUnknown = true) annotation to model classes"));
+ }
CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use");
Map dateOptions = new HashMap();
dateOptions.put("java8", "Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets \"" + JAVA8_MODE + "\" to true");
@@ -394,6 +401,17 @@ public void processOpts() {
}
}
+ if (this instanceof IgnoreUnknownJacksonFeatures) {
+ ignoreUnknown = (IgnoreUnknownJacksonFeatures)this;
+ if (additionalProperties.containsKey(IGNORE_UNKNOWN_JACKSON_ANNOTATION)) {
+ ignoreUnknown.setIgnoreUnknownJacksonAnnotation(convertPropertyToBoolean(IGNORE_UNKNOWN_JACKSON_ANNOTATION));
+ writePropertyBack(IGNORE_UNKNOWN_JACKSON_ANNOTATION, ignoreUnknown.isIgnoreUnknownJacksonAnnotation());
+ if (ignoreUnknown.isIgnoreUnknownJacksonAnnotation()) {
+ importMapping.put("JsonIgnoreProperties", "com.fasterxml.jackson.annotation.JsonIgnoreProperties");
+ }
+ }
+ }
+
if (additionalProperties.containsKey(USE_NULLABLE_FOR_NOTNULL)) {
this.setUseNullableForNotnull(Boolean.valueOf(additionalProperties.get(USE_NULLABLE_FOR_NOTNULL).toString()));
}
@@ -1008,6 +1026,16 @@ public CodegenModel fromModel(String name, Schema schema, Map al
}
}
}
+ if (this instanceof IgnoreUnknownJacksonFeatures) {
+ if (this instanceof IgnoreUnknownJacksonFeatures) {
+ ignoreUnknown = (IgnoreUnknownJacksonFeatures)this;
+ if (additionalProperties.containsKey(IGNORE_UNKNOWN_JACKSON_ANNOTATION)) {
+ if (ignoreUnknown.isIgnoreUnknownJacksonAnnotation()) {
+ codegenModel.imports.add("JsonIgnoreProperties");
+ }
+ }
+ }
+ }
return codegenModel;
}
diff --git a/src/main/java/io/swagger/codegen/v3/generators/java/JavaClientCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/java/JavaClientCodegen.java
index fbb1481470..1f0923db43 100644
--- a/src/main/java/io/swagger/codegen/v3/generators/java/JavaClientCodegen.java
+++ b/src/main/java/io/swagger/codegen/v3/generators/java/JavaClientCodegen.java
@@ -10,6 +10,7 @@
import io.swagger.codegen.v3.SupportingFile;
import io.swagger.codegen.v3.generators.features.BeanValidationFeatures;
import io.swagger.codegen.v3.generators.features.GzipFeatures;
+import io.swagger.codegen.v3.generators.features.IgnoreUnknownJacksonFeatures;
import io.swagger.codegen.v3.generators.features.NotNullAnnotationFeatures;
import io.swagger.codegen.v3.generators.features.PerformBeanValidationFeatures;
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
@@ -33,7 +34,7 @@
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
import static java.util.Collections.sort;
-public class JavaClientCodegen extends AbstractJavaCodegen implements BeanValidationFeatures, PerformBeanValidationFeatures, GzipFeatures, NotNullAnnotationFeatures {
+public class JavaClientCodegen extends AbstractJavaCodegen implements BeanValidationFeatures, PerformBeanValidationFeatures, GzipFeatures, NotNullAnnotationFeatures, IgnoreUnknownJacksonFeatures {
static final String MEDIA_TYPE = "mediaType";
private static final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class);
@@ -66,7 +67,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen implements BeanValida
protected boolean useGzipFeature = false;
protected boolean useRuntimeException = false;
private boolean notNullJacksonAnnotation = false;
-
+ private boolean ignoreUnknownJacksonAnnotation = false;
public JavaClientCodegen() {
super();
@@ -641,4 +642,14 @@ public void setNotNullJacksonAnnotation(boolean notNullJacksonAnnotation) {
public boolean isNotNullJacksonAnnotation() {
return notNullJacksonAnnotation;
}
+
+ @Override
+ public void setIgnoreUnknownJacksonAnnotation(boolean ignoreUnknownJacksonAnnotation) {
+ this.ignoreUnknownJacksonAnnotation = ignoreUnknownJacksonAnnotation;
+ }
+
+ @Override
+ public boolean isIgnoreUnknownJacksonAnnotation() {
+ return ignoreUnknownJacksonAnnotation;
+ }
}
diff --git a/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java
index 968e672084..96cea65055 100644
--- a/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java
+++ b/src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java
@@ -14,6 +14,7 @@
import io.swagger.codegen.v3.CodegenType;
import io.swagger.codegen.v3.SupportingFile;
import io.swagger.codegen.v3.generators.features.BeanValidationFeatures;
+import io.swagger.codegen.v3.generators.features.IgnoreUnknownJacksonFeatures;
import io.swagger.codegen.v3.generators.features.NotNullAnnotationFeatures;
import io.swagger.codegen.v3.generators.features.OptionalFeatures;
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
@@ -45,7 +46,7 @@
import static io.swagger.codegen.v3.CodegenConstants.IS_ENUM_EXT_NAME;
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
-public class SpringCodegen extends AbstractJavaCodegen implements BeanValidationFeatures, OptionalFeatures, NotNullAnnotationFeatures {
+public class SpringCodegen extends AbstractJavaCodegen implements BeanValidationFeatures, OptionalFeatures, NotNullAnnotationFeatures, IgnoreUnknownJacksonFeatures {
static Logger LOGGER = LoggerFactory.getLogger(SpringCodegen.class);
public static final String DEFAULT_LIBRARY = "spring-boot";
public static final String TITLE = "title";
@@ -98,6 +99,7 @@ public class SpringCodegen extends AbstractJavaCodegen implements BeanValidation
protected boolean throwsException = false;
private boolean notNullJacksonAnnotation = false;
protected String validationMode = "strict";
+ private boolean ignoreUnknownJacksonAnnotation = false;
public SpringCodegen() {
super();
@@ -701,6 +703,16 @@ public boolean isNotNullJacksonAnnotation() {
return notNullJacksonAnnotation;
}
+ @Override
+ public void setIgnoreUnknownJacksonAnnotation(boolean ignoreUnknownJacksonAnnotation) {
+ this.ignoreUnknownJacksonAnnotation = ignoreUnknownJacksonAnnotation;
+ }
+
+ @Override
+ public boolean isIgnoreUnknownJacksonAnnotation() {
+ return ignoreUnknownJacksonAnnotation;
+ }
+
private interface DataTypeAssigner {
void setReturnType(String returnType);
void setReturnContainer(String returnContainer);
diff --git a/src/main/resources/handlebars/Java/libraries/okhttp-gson/pom.mustache b/src/main/resources/handlebars/Java/libraries/okhttp-gson/pom.mustache
index 40141310da..94d024eb1f 100644
--- a/src/main/resources/handlebars/Java/libraries/okhttp-gson/pom.mustache
+++ b/src/main/resources/handlebars/Java/libraries/okhttp-gson/pom.mustache
@@ -206,6 +206,13 @@
2.10.1
{{/notNullJacksonAnnotation}}
+ {{#ignoreUnknownJacksonAnnotation}}
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.10.1
+
+ {{/ignoreUnknownJacksonAnnotation}}
com.squareup.okhttp
okhttp
diff --git a/src/main/resources/handlebars/Java/pojo.mustache b/src/main/resources/handlebars/Java/pojo.mustache
index 135b6e6b8f..8a5c835d91 100644
--- a/src/main/resources/handlebars/Java/pojo.mustache
+++ b/src/main/resources/handlebars/Java/pojo.mustache
@@ -6,7 +6,9 @@
{{#notNullJacksonAnnotation}}
@JsonInclude(JsonInclude.Include.NON_NULL)
{{/notNullJacksonAnnotation}}
-
+{{#ignoreUnknownJacksonAnnotation}}
+@JsonIgnoreProperties(ignoreUnknown = true)
+{{/ignoreUnknownJacksonAnnotation}}
public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#parcelableModel}}implements Parcelable {{#serializableModel}}, Serializable {{/serializableModel}}{{#interfaceModels}}{{#@first}}, {{/@first}}{{classname}}{{^@last}}, {{/@last}}{{#@last}} {{/@last}}{{/interfaceModels}}{{/parcelableModel}}{{^parcelableModel}}{{#serializableModel}}implements Serializable{{#interfaceModels}}{{#@first}}, {{/@first}}{{classname}}{{^@last}}, {{/@last}}{{#@last}} {{/@last}}{{/interfaceModels}}{{/serializableModel}}{{^serializableModel}}{{#interfaceModels}}{{#@first}}implements {{/@first}}{{classname}}{{^@last}}, {{/@last}}{{#@last}} {{/@last}}{{/interfaceModels}}{{/serializableModel}}{{/parcelableModel}}{
{{#serializableModel}}
private static final long serialVersionUID = 1L;
diff --git a/src/main/resources/handlebars/JavaSpring/libraries/spring-boot/pom.mustache b/src/main/resources/handlebars/JavaSpring/libraries/spring-boot/pom.mustache
index 1a18ebd250..674e227caf 100644
--- a/src/main/resources/handlebars/JavaSpring/libraries/spring-boot/pom.mustache
+++ b/src/main/resources/handlebars/JavaSpring/libraries/spring-boot/pom.mustache
@@ -155,7 +155,13 @@
2.10.1
{{/notNullJacksonAnnotation}}
-
+ {{#ignoreUnknownJacksonAnnotation}}
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.10.1
+
+ {{/ignoreUnknownJacksonAnnotation}}
{{^useOas2}}
org.springframework.plugin
diff --git a/src/main/resources/handlebars/JavaSpring/libraries/spring-cloud/pom.mustache b/src/main/resources/handlebars/JavaSpring/libraries/spring-cloud/pom.mustache
index 7a7ca20511..63827c2742 100644
--- a/src/main/resources/handlebars/JavaSpring/libraries/spring-cloud/pom.mustache
+++ b/src/main/resources/handlebars/JavaSpring/libraries/spring-cloud/pom.mustache
@@ -154,7 +154,13 @@
2.10.1
{{/notNullJacksonAnnotation}}
-
+ {{#ignoreUnknownJacksonAnnotation}}
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.10.1
+
+ {{/ignoreUnknownJacksonAnnotation}}
{{#jakarta}}
jakarta.servlet
diff --git a/src/main/resources/handlebars/JavaSpring/libraries/spring-mvc/pom.mustache b/src/main/resources/handlebars/JavaSpring/libraries/spring-mvc/pom.mustache
index 5cb1579265..b4cbd545ac 100644
--- a/src/main/resources/handlebars/JavaSpring/libraries/spring-mvc/pom.mustache
+++ b/src/main/resources/handlebars/JavaSpring/libraries/spring-mvc/pom.mustache
@@ -247,6 +247,13 @@
${jackson-version}
{{/notNullJacksonAnnotation}}
+ {{#ignoreUnknownJacksonAnnotation}}
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson-version}
+
+ {{/ignoreUnknownJacksonAnnotation}}
org.apache.httpcomponents
httpclient
diff --git a/src/main/resources/handlebars/JavaSpring/pojo.mustache b/src/main/resources/handlebars/JavaSpring/pojo.mustache
index f00a0b7406..562b85bae3 100644
--- a/src/main/resources/handlebars/JavaSpring/pojo.mustache
+++ b/src/main/resources/handlebars/JavaSpring/pojo.mustache
@@ -6,7 +6,7 @@
{{#useBeanValidation}}{{#isStrictValidation}}@NotUndefined{{/isStrictValidation}}{{#isLooseValidation}}@NotUndefined{{/isLooseValidation}}{{/useBeanValidation}}
{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}}
{{#notNullJacksonAnnotation}}@JsonInclude(JsonInclude.Include.NON_NULL){{/notNullJacksonAnnotation}}
-
+{{#ignoreUnknownJacksonAnnotation}}@JsonIgnoreProperties(ignoreUnknown = true){{/ignoreUnknownJacksonAnnotation}}
public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable {{#interfaceModels}}, {{classname}}{{^@last}}, {{/@last}}{{#@last}} {{/@last}}{{/interfaceModels}}{{/serializableModel}}{{^serializableModel}}{{#interfaceModels}}{{#@first}}implements {{/@first}}{{classname}}{{^@last}}, {{/@last}}{{#@last}}{{/@last}}{{/interfaceModels}}{{/serializableModel}} {
{{#serializableModel}}
private static final long serialVersionUID = 1L;