This is an automated email from the ASF dual-hosted git repository.
zhfeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 2a73270745 Fix #6716 to introduce ignore-unknown-properties property
(#6719)
2a73270745 is described below
commit 2a73270745faabe29ab5adec42f1167fca404637
Author: Zheng Feng <[email protected]>
AuthorDate: Wed Oct 30 19:34:14 2024 +0800
Fix #6716 to introduce ignore-unknown-properties property (#6719)
---
docs/modules/ROOT/pages/reference/extensions/rest-openapi.adoc | 6 ++++++
.../openapi/deployment/CamelQuarkusSwaggerCodegenProvider.java | 5 +++++
.../quarkus/component/rest/openapi/deployment/QuarkusCodegen.java | 4 ++++
.../resources/handlebars/Quarkus/generatedAnnotation.mustache | 1 +
.../quarkus/rest/openapi/runtime/RestOpenApiBuildTimeConfig.java | 8 ++++++++
.../rest-openapi/src/main/resources/application.properties | 1 +
6 files changed, 25 insertions(+)
diff --git a/docs/modules/ROOT/pages/reference/extensions/rest-openapi.adoc
b/docs/modules/ROOT/pages/reference/extensions/rest-openapi.adoc
index 7a81c4f58d..0bad43863d 100644
--- a/docs/modules/ROOT/pages/reference/extensions/rest-openapi.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/rest-openapi.adoc
@@ -166,6 +166,12 @@ If `true`, use bean validation annotations in the
generated model classes.
If `true`, use NON_NULL Jackson annotation in the generated model classes.
| `boolean`
| `false`
+
+|icon:lock[title=Fixed at build time]
[[quarkus.camel.openapi.codegen.ignore-unknown-properties]]`link:#quarkus.camel.openapi.codegen.ignore-unknown-properties[quarkus.camel.openapi.codegen.ignore-unknown-properties]`
+
+If `true`, use JsonIgnoreProperties(ignoreUnknown = true) annotation in the
generated model classes.
+| `boolean`
+| `false`
|===
[.configuration-legend]
diff --git
a/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/CamelQuarkusSwaggerCodegenProvider.java
b/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/CamelQuarkusSwaggerCodegenProvider.java
index 48df92c740..23f86e0e4c 100644
---
a/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/CamelQuarkusSwaggerCodegenProvider.java
+++
b/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/CamelQuarkusSwaggerCodegenProvider.java
@@ -82,6 +82,8 @@ public class CamelQuarkusSwaggerCodegenProvider implements
CodeGenProvider {
String models =
config.getOptionalValue("quarkus.camel.openapi.codegen.models",
String.class).orElse("");
boolean useBeanValidation =
config.getValue("quarkus.camel.openapi.codegen.use-bean-validation",
Boolean.class);
boolean notNullJackson =
config.getValue("quarkus.camel.openapi.codegen.not-null-jackson",
Boolean.class);
+ boolean ignoreUnknownProperties =
config.getValue("quarkus.camel.openapi.codegen.ignore-unknown-properties",
+ Boolean.class);
for (String specFile : specFiles) {
CodegenConfigurator configurator = new CodegenConfigurator();
configurator.setLang("quarkus");
@@ -100,6 +102,9 @@ public class CamelQuarkusSwaggerCodegenProvider implements
CodeGenProvider {
if (notNullJackson) {
configurator.getAdditionalProperties().put(NOT_NULL_JACKSON_ANNOTATION, "true");
}
+ if (ignoreUnknownProperties) {
+
configurator.getAdditionalProperties().put("ignoreUnknownProperties", "true");
+ }
final ClientOptInput input = configurator.toClientOptInput();
new DefaultGenerator().opts(input).generate();
diff --git
a/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/QuarkusCodegen.java
b/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/QuarkusCodegen.java
index 0d7fae0fac..42618f4517 100644
---
a/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/QuarkusCodegen.java
+++
b/extensions/rest-openapi/deployment/src/main/java/org/apache/camel/quarkus/component/rest/openapi/deployment/QuarkusCodegen.java
@@ -38,6 +38,7 @@ public class QuarkusCodegen extends AbstractJavaCodegen
implements BeanValidatio
public QuarkusCodegen() {
super();
importMapping.put("QuarkusRegisterForReflection",
"io.quarkus.runtime.annotations.RegisterForReflection");
+ importMapping.put("JsonIgnoreProperties",
"com.fasterxml.jackson.annotation.JsonIgnoreProperties");
supportedLibraries.put("quarkus3", "Quarkus 3 framework");
}
@@ -100,6 +101,9 @@ public class QuarkusCodegen extends AbstractJavaCodegen
implements BeanValidatio
}
}
model.imports.add("QuarkusRegisterForReflection");
+ if (additionalProperties.containsKey("ignoreUnknownProperties")) {
+ model.imports.add("JsonIgnoreProperties");
+ }
}
@Override
diff --git
a/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/generatedAnnotation.mustache
b/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/generatedAnnotation.mustache
index bd62dcc664..6aa9a052e9 100644
---
a/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/generatedAnnotation.mustache
+++
b/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/generatedAnnotation.mustache
@@ -16,3 +16,4 @@
}}
{{^hideGenerationTimestamp}}@{{#jakarta}}jakarta{{/jakarta}}{{^jakarta}}javax{{/jakarta}}.annotation.Generated(value
= "{{generatorClass}}", date = "{{generatedDate}}"){{/hideGenerationTimestamp}}
@RegisterForReflection{{#serializableModel}}(serialization =
true){{/serializableModel}}
+{{#ignoreUnknownProperties}}@JsonIgnoreProperties(ignoreUnknown =
true){{/ignoreUnknownProperties}}
diff --git
a/extensions/rest-openapi/runtime/src/main/java/org/apache/camel/quarkus/rest/openapi/runtime/RestOpenApiBuildTimeConfig.java
b/extensions/rest-openapi/runtime/src/main/java/org/apache/camel/quarkus/rest/openapi/runtime/RestOpenApiBuildTimeConfig.java
index fbd83bbcab..5fce080cdc 100644
---
a/extensions/rest-openapi/runtime/src/main/java/org/apache/camel/quarkus/rest/openapi/runtime/RestOpenApiBuildTimeConfig.java
+++
b/extensions/rest-openapi/runtime/src/main/java/org/apache/camel/quarkus/rest/openapi/runtime/RestOpenApiBuildTimeConfig.java
@@ -77,5 +77,13 @@ public class RestOpenApiBuildTimeConfig {
*/
@ConfigItem(defaultValue = "false")
public boolean notNullJackson;
+
+ /**
+ * If `true`, use JsonIgnoreProperties(ignoreUnknown = true)
annotation in the generated model classes.
+ *
+ * @asciidoclet
+ */
+ @ConfigItem(defaultValue = "false")
+ public boolean ignoreUnknownProperties;
}
}
diff --git
a/integration-tests/rest-openapi/src/main/resources/application.properties
b/integration-tests/rest-openapi/src/main/resources/application.properties
index 59425bb75b..a16f53a6ab 100644
--- a/integration-tests/rest-openapi/src/main/resources/application.properties
+++ b/integration-tests/rest-openapi/src/main/resources/application.properties
@@ -17,5 +17,6 @@
quarkus.native.resources.includes=openapi.json,petstore.json,example.yaml
quarkus.camel.openapi.codegen.model-package=org.apache.camel.quarkus.component.rest.openapi.it.model
quarkus.camel.openapi.codegen.not-null-jackson=true
+quarkus.camel.openapi.codegen.ignore-unknown-properties=true
camel.rest.bindingMode=json
camel.rest.bindingPackageScan=${quarkus.camel.openapi.codegen.model-package}