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 33cd4a4740 [Fix #4121] Handling raw response (#4122)
33cd4a4740 is described below

commit 33cd4a4740271651fecaee41773f0c740a235050
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Fri Nov 7 18:03:21 2025 +0100

    [Fix #4121] Handling raw response (#4122)
    
    * [Fix #4121] Handling raw response
    
    If the openapi generated method return response, we convert the embedded
    java object to json.
    
    Signed-off-by: fjtirado <[email protected]>
    
    * [Fix #4121] Failing test
    
    Signed-off-by: fjtirado <[email protected]>
    
    ---------
    
    Signed-off-by: fjtirado <[email protected]>
---
 .../workflow/openapi/WorkflowOpenApiHandlerGenerator.java |  3 +--
 .../workflow/openapi/OpenApiWorkItemHandler.java          | 15 ++++++++++++---
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/quarkus/addons/openapi/deployment/src/main/java/org/kie/kogito/quarkus/serverless/workflow/openapi/WorkflowOpenApiHandlerGenerator.java
 
b/quarkus/addons/openapi/deployment/src/main/java/org/kie/kogito/quarkus/serverless/workflow/openapi/WorkflowOpenApiHandlerGenerator.java
index d24547e714..12c252294c 100644
--- 
a/quarkus/addons/openapi/deployment/src/main/java/org/kie/kogito/quarkus/serverless/workflow/openapi/WorkflowOpenApiHandlerGenerator.java
+++ 
b/quarkus/addons/openapi/deployment/src/main/java/org/kie/kogito/quarkus/serverless/workflow/openapi/WorkflowOpenApiHandlerGenerator.java
@@ -54,7 +54,6 @@ import 
io.quarkiverse.openapi.generator.annotations.GeneratedMethod;
 import io.quarkiverse.openapi.generator.annotations.GeneratedParam;
 
 import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.ws.rs.core.Response;
 
 import static com.github.javaparser.StaticJavaParser.parseClassOrInterfaceType;
 import static 
org.kie.kogito.serverless.workflow.utils.ServerlessWorkflowUtils.getValidIdentifier;
@@ -95,7 +94,7 @@ public class WorkflowOpenApiHandlerGenerator extends 
ClassAnnotatedWorkflowHandl
         BlockStmt body = executeMethod.createBody();
         MethodCallExpr methodCallExpr = new MethodCallExpr(new 
NameExpr(OPEN_API_REF), m.name());
         final NameExpr parameters = new NameExpr(WORK_ITEM_PARAMETERS);
-        if 
(m.returnType().name().equals(DotName.createSimple(Response.class.getName())) 
|| (m.returnType() instanceof VoidType)) {
+        if (m.returnType() instanceof VoidType) {
             body.addStatement(methodCallExpr).addStatement(new ReturnStmt(new 
NullLiteralExpr()));
         } else {
             body.addStatement(new ReturnStmt(methodCallExpr));
diff --git 
a/quarkus/addons/openapi/runtime/src/main/java/org/kie/kogito/serverless/workflow/openapi/OpenApiWorkItemHandler.java
 
b/quarkus/addons/openapi/runtime/src/main/java/org/kie/kogito/serverless/workflow/openapi/OpenApiWorkItemHandler.java
index daa6dbe298..a927ed3b5f 100644
--- 
a/quarkus/addons/openapi/runtime/src/main/java/org/kie/kogito/serverless/workflow/openapi/OpenApiWorkItemHandler.java
+++ 
b/quarkus/addons/openapi/runtime/src/main/java/org/kie/kogito/serverless/workflow/openapi/OpenApiWorkItemHandler.java
@@ -80,24 +80,33 @@ public abstract class OpenApiWorkItemHandler<T> extends 
WorkflowWorkItemHandler
             }
         }, Integer.MIN_VALUE).register((ResponseExceptionMapper) response -> 
new WebApplicationException(fromResponse(response), 
response.getStatus())).build(clazz);
         try {
-            return internalExecute(ref, parameters);
+            Object result = internalExecute(ref, parameters);
+            if (result instanceof Response response) {
+                result = objectFromResponse(response);
+            }
+            return result;
         } catch (WebApplicationException ex) {
             throw new 
WorkItemExecutionException(Integer.toString(ex.getResponse().getStatus()), 
ex.getMessage());
         }
     }
 
-    private String fromResponse(Response response) {
+    private Object objectFromResponse(Response response) {
         Object entity = response.getEntity();
         if (entity instanceof ByteArrayInputStream input) {
             if 
(MediaType.APPLICATION_JSON_TYPE.equals(response.getMediaType())) {
                 try {
-                    return 
ObjectMapperFactory.get().readTree(input).toString();
+                    return ObjectMapperFactory.get().readTree(input);
                 } catch (IOException e) {
                     logger.warn("Error parsing json error response {}", 
e.toString());
                 }
             }
             return new String(input.readAllBytes());
         }
+        return entity != null ? entity.toString() : null;
+    }
+
+    private String fromResponse(Response response) {
+        Object entity = objectFromResponse(response);
         return entity != null ? entity.toString() : 
response.getStatusInfo().getReasonPhrase();
     }
 


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

Reply via email to