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 0c2a53478d Fix #6736 no need to add RegisterForReflection annotation
on array type Class (#6737)
0c2a53478d is described below
commit 0c2a53478d063abbf43badd27c94e03df1925d0c
Author: Zheng Feng <[email protected]>
AuthorDate: Fri Nov 1 20:08:38 2024 +0800
Fix #6736 no need to add RegisterForReflection annotation on array type
Class (#6737)
---
.../rest/openapi/deployment/QuarkusCodegen.java | 16 +++++
.../resources/handlebars/Quarkus/pojo.mustache | 2 +
.../rest-openapi/src/main/openapi/petstore.json | 75 ++++++++++++++++++++++
3 files changed, 93 insertions(+)
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 42618f4517..6680167d78 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
@@ -18,6 +18,7 @@
package org.apache.camel.quarkus.component.rest.openapi.deployment;
import java.io.File;
+import java.util.Map;
import io.swagger.codegen.v3.CodegenModel;
import io.swagger.codegen.v3.CodegenProperty;
@@ -26,6 +27,7 @@ import io.swagger.codegen.v3.SupportingFile;
import io.swagger.codegen.v3.generators.features.BeanValidationFeatures;
import io.swagger.codegen.v3.generators.features.NotNullAnnotationFeatures;
import io.swagger.codegen.v3.generators.java.AbstractJavaCodegen;
+import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.BooleanUtils;
import static io.swagger.codegen.v3.CodegenConstants.IS_ENUM_EXT_NAME;
@@ -62,6 +64,18 @@ public class QuarkusCodegen extends AbstractJavaCodegen
implements BeanValidatio
return "Quarkus";
}
+ @Override
+ public CodegenModel fromModel(String name, Schema schema, Map<String,
Schema> allSchemas) {
+ CodegenModel model = super.fromModel(name, schema, allSchemas);
+ if (schema != null && "array".equals(schema.getType())) {
+ additionalProperties.put("useQuarkusRegisterForReflection", false);
+ }
+ if (additionalProperties.containsKey("ignoreUnknownProperties")) {
+ model.imports.add("JsonIgnoreProperties");
+ }
+ return model;
+ }
+
@Override
public void processOpts() {
if ("quarkus3".equals(library)) {
@@ -81,6 +95,7 @@ public class QuarkusCodegen extends AbstractJavaCodegen
implements BeanValidatio
if (additionalProperties.containsKey("jackson")) {
supportingFiles.add(new
SupportingFile("RFC3339DateFormat.mustache", invokerFolder,
"RFC3339DateFormat.java"));
}
+
}
@Override
@@ -101,6 +116,7 @@ public class QuarkusCodegen extends AbstractJavaCodegen
implements BeanValidatio
}
}
model.imports.add("QuarkusRegisterForReflection");
+ additionalProperties.put("useQuarkusRegisterForReflection", true);
if (additionalProperties.containsKey("ignoreUnknownProperties")) {
model.imports.add("JsonIgnoreProperties");
}
diff --git
a/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/pojo.mustache
b/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/pojo.mustache
index f03c1e3980..2944857ff6 100644
---
a/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/pojo.mustache
+++
b/extensions/rest-openapi/deployment/src/main/resources/handlebars/Quarkus/pojo.mustache
@@ -22,7 +22,9 @@
{{#notNullJacksonAnnotation}}
@JsonInclude(JsonInclude.Include.NON_NULL)
{{/notNullJacksonAnnotation}}
+{{#useQuarkusRegisterForReflection}}
@RegisterForReflection{{#serializableModel}}(serialization =
true){{/serializableModel}}
+{{/useQuarkusRegisterForReflection}}
{{#ignoreUnknownProperties}}
@JsonIgnoreProperties(ignoreUnknown = true)
{{/ignoreUnknownProperties}}
diff --git a/integration-tests/rest-openapi/src/main/openapi/petstore.json
b/integration-tests/rest-openapi/src/main/openapi/petstore.json
index b03f018744..9120395d95 100644
--- a/integration-tests/rest-openapi/src/main/openapi/petstore.json
+++ b/integration-tests/rest-openapi/src/main/openapi/petstore.json
@@ -303,6 +303,58 @@
]
}
},
+ "/pets": {
+ "get": {
+ "summary": "List all pets",
+ "operationId": "listPets",
+ "tags": [
+ "pets"
+ ],
+ "parameters": [
+ {
+ "name": "limit",
+ "in": "query",
+ "description": "How many items
to return at one time (max 100)",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "maximum": 100,
+ "format": "int32"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A paged array
of pets",
+ "headers": {
+ "x-next": {
+ "description":
"A link to the next page of responses",
+ "schema": {
+ "type":
"string"
+ }
+ }
+ },
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/Pets"
+ }
+ }
+ }
+ },
+ "default": {
+ "description": "unexpected
error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/Error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"/pet/{petId}": {
"get": {
"tags": [
@@ -1168,6 +1220,29 @@
"name": "pet"
}
},
+ "Pets": {
+ "type": "array",
+ "maxItems": 100,
+ "items": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "Error": {
+ "type": "object",
+ "required": [
+ "code",
+ "message"
+ ],
+ "properties": {
+ "code": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
"ApiResponse": {
"type": "object",
"properties": {