This is an automated email from the ASF dual-hosted git repository.

fjtiradosarti pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new 065134d38a [Fix #4132] Fixing Json Schema generation (#4133)
065134d38a is described below

commit 065134d38a041f74f715ec5be1fd11ff5fadda63
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Wed Nov 26 14:19:57 2025 +0100

    [Fix #4132] Fixing Json Schema generation (#4133)
    
    Signed-off-by: fjtirado <[email protected]>
---
 .../workflow/parser/schema/JsonSchemaImpl.java     | 19 ++++---------
 .../parser/schema/OpenApiModelSchemaGenerator.java | 33 +++++++++++++---------
 2 files changed, 25 insertions(+), 27 deletions(-)

diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/JsonSchemaImpl.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/JsonSchemaImpl.java
index 73cb98abcf..96dfc362c4 100644
--- 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/JsonSchemaImpl.java
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/JsonSchemaImpl.java
@@ -46,28 +46,21 @@ public class JsonSchemaImpl extends SchemaImpl {
 
     private Map<String, Schema> defs;
 
-    private List<Schema.SchemaType> type;
-
     @JsonSetter("type")
     public void setType(JsonNode typeNode) {
+        List<Schema.SchemaType> types = new ArrayList<>();
         if (typeNode.isArray()) {
-            List<Schema.SchemaType> types = new ArrayList<>();
             for (JsonNode node : typeNode) {
-                
types.add(Schema.SchemaType.valueOf(node.asText().toUpperCase()));
+                types.add(from(node));
             }
-            this.type = types;
         } else if (typeNode.isTextual()) {
-            this.type = new ArrayList<>();
-            
this.type.add(Schema.SchemaType.valueOf(typeNode.asText().toUpperCase()));
+            types.add(from(typeNode));
         }
+        super.setType(types);
     }
 
-    public List<Schema.SchemaType> getType() {
-        return type;
-    }
-
-    public void setType(List<Schema.SchemaType> type) {
-        this.type = type;
+    private static SchemaType from(JsonNode node) {
+        return Schema.SchemaType.valueOf(node.asText().toUpperCase());
     }
 
     @JsonSetter("$defs")
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
index 38f4c71217..6e0fd92b72 100644
--- 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/serverless/workflow/parser/schema/OpenApiModelSchemaGenerator.java
@@ -132,26 +132,31 @@ public final class OpenApiModelSchemaGenerator {
         return id + suffix;
     }
 
+    private final static String PROCESS_PREFIX = "Process - ";
+
     private static void processOperation(Map<String, Schema> schemas, 
Operation operation) {
         if (operation != null) {
             List<String> tags = operation.getTags();
             if (tags != null) {
                 for (String tag : tags) {
-                    if (operation.getRequestBody() != null) {
-                        Schema schema = schemas.get(getSchemaName(tag, 
INPUT_SUFFIX));
-                        if (schema != null) {
-                            
getMediaTypes(operation.getRequestBody().getContent()).stream().filter(OpenApiModelSchemaGenerator::isInput).forEach(mediaType
 -> mediaType.setSchema(schema));
+                    if (tag.startsWith(PROCESS_PREFIX)) {
+                        String processName = 
tag.substring(PROCESS_PREFIX.length());
+                        if (operation.getRequestBody() != null) {
+                            Schema schema = 
schemas.get(getSchemaName(processName, INPUT_SUFFIX));
+                            if (schema != null) {
+                                
getMediaTypes(operation.getRequestBody().getContent()).stream().filter(OpenApiModelSchemaGenerator::isInput).forEach(mediaType
 -> mediaType.setSchema(schema));
+                            }
                         }
-                    }
-                    if (operation.getResponses() != null && 
operation.getResponses().getAPIResponses() != null) {
-                        Schema schema = schemas.get(getSchemaName(tag, 
OUTPUT_SUFFIX));
-                        if (schema != null) {
-                            for (APIResponse response : 
operation.getResponses().getAPIResponses().values()) {
-                                Content content = response.getContent();
-                                if (content == null) {
-                                    
response.setContent(OASFactory.createContent().addMediaType("application/json", 
OASFactory.createMediaType().schema(schema)));
-                                } else {
-                                    
getMediaTypes(content).stream().filter(OpenApiModelSchemaGenerator::isOutput).forEach(mediaType
 -> mediaType.setSchema(schema));
+                        if (operation.getResponses() != null && 
operation.getResponses().getAPIResponses() != null) {
+                            Schema schema = 
schemas.get(getSchemaName(processName, OUTPUT_SUFFIX));
+                            if (schema != null) {
+                                for (APIResponse response : 
operation.getResponses().getAPIResponses().values()) {
+                                    Content content = response.getContent();
+                                    if (content == null) {
+                                        
response.setContent(OASFactory.createContent().addMediaType("application/json", 
OASFactory.createMediaType().schema(schema)));
+                                    } else {
+                                        
getMediaTypes(content).stream().filter(OpenApiModelSchemaGenerator::isOutput).forEach(mediaType
 -> mediaType.setSchema(schema));
+                                    }
                                 }
                             }
                         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to