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

mweiler 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 39cb7b0458 [incubator-kie-issues#2004] Handle scripts that end with a 
comment line (#3956)
39cb7b0458 is described below

commit 39cb7b04588faabc1dfb09a1bd4a452505ff1296
Author: Martin Weiler <[email protected]>
AuthorDate: Mon Jul 14 09:12:07 2025 -0600

    [incubator-kie-issues#2004] Handle scripts that end with a comment line 
(#3956)
---
 .../jbpm/compiler/canonical/ActionNodeVisitor.java |  2 +-
 .../builtin/JavaConstraintEvaluatorBuilder.java    |  2 +-
 .../process/builder/action/JavaActionCompiler.java |  2 +-
 .../canonical/ProcessToExecModelGeneratorTest.java | 37 ++++++++++++++++++++++
 4 files changed, 40 insertions(+), 3 deletions(-)

diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
index 0028588d28..f48bca064e 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/ActionNodeVisitor.java
@@ -103,7 +103,7 @@ public class ActionNodeVisitor extends 
AbstractNodeVisitor<ActionNode> {
                             .map(ActionNodeVisitor::makeAssignment)
                             .forEach(actionBody::addStatement);
 
-                    BlockStmt blockStmt = StaticJavaParser.parseBlock("{" + 
consequence + "}");
+                    BlockStmt blockStmt = StaticJavaParser.parseBlock("{" + 
consequence + "\n}");
                     
blockStmt.getStatements().forEach(actionBody::addStatement);
                 }
                 LambdaExpr lambda = new LambdaExpr(
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
index ae82b5fb7e..53d10bb707 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/builtin/JavaConstraintEvaluatorBuilder.java
@@ -61,7 +61,7 @@ public class JavaConstraintEvaluatorBuilder implements 
ReturnValueEvaluatorBuild
         }
 
         if (blockStmt == null) {
-            blockStmt = StaticJavaParser.parseBlock("{" + expression + "}");
+            blockStmt = StaticJavaParser.parseBlock("{" + expression + "\n}");
         }
         Set<NameExpr> identifiers = new 
HashSet<>(blockStmt.findAll(NameExpr.class));
 
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/action/JavaActionCompiler.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/action/JavaActionCompiler.java
index f2762126f2..2fca4e8a7c 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/action/JavaActionCompiler.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/process/builder/action/JavaActionCompiler.java
@@ -57,7 +57,7 @@ public class JavaActionCompiler implements ActionCompiler {
     @Override
     public Expression buildAction(NodeImpl nodeImpl, String script) {
         BlockStmt newDroolsConsequenceActionExpression = new BlockStmt();
-        newDroolsConsequenceActionExpression = StaticJavaParser.parseBlock("{" 
+ script + "}");
+        newDroolsConsequenceActionExpression = StaticJavaParser.parseBlock("{" 
+ script + "\n}");
         Set<NameExpr> identifiers = new 
HashSet<>(newDroolsConsequenceActionExpression.findAll(NameExpr.class));
         for (NameExpr identifier : identifiers) {
             VariableScope scope = (VariableScope) 
nodeImpl.resolveContext(VariableScope.VARIABLE_SCOPE, 
identifier.getNameAsString());
diff --git 
a/jbpm/jbpm-flow-builder/src/test/java/org/jbpm/compiler/canonical/ProcessToExecModelGeneratorTest.java
 
b/jbpm/jbpm-flow-builder/src/test/java/org/jbpm/compiler/canonical/ProcessToExecModelGeneratorTest.java
index eec5facfaf..b4643e801c 100644
--- 
a/jbpm/jbpm-flow-builder/src/test/java/org/jbpm/compiler/canonical/ProcessToExecModelGeneratorTest.java
+++ 
b/jbpm/jbpm-flow-builder/src/test/java/org/jbpm/compiler/canonical/ProcessToExecModelGeneratorTest.java
@@ -162,4 +162,41 @@ public class ProcessToExecModelGeneratorTest {
         ProcessMetaData processMetadata = 
ProcessToExecModelGenerator.INSTANCE.generate(process);
         assertThat(processMetadata).as("Dumper should return non null class 
for process").isNotNull();
     }
+
+    @Test
+    public void testScriptsWithTrailingComment() {
+
+        RuleFlowProcessFactory factory = 
RuleFlowProcessFactory.createProcess("demo.orders");
+        factory
+                .variable("order", new 
ObjectDataType("com.myspace.demo.Order"))
+                .variable("approver", new StringDataType(), "john", 
Collections.singletonMap("customTags", null))
+                .variable("age", new IntegerDataType(), "1", 
Collections.singletonMap("customTags", null))
+                .name("orders")
+                .packageName("com.myspace.demo")
+                .dynamic(false)
+                .version("1.0")
+                .actionNode(one)
+                .name("Dump order")
+                .action("java", "System.out.println();\n// this is a comment")
+                .done()
+                .stateNode(two)
+                .name("OnEntry")
+                .onEntryAction("java", "System.out.println();\n// this is a 
comment")
+                .done()
+                .endNode(three)
+                .name("end")
+                .terminate(false)
+                .done()
+                .startNode(four)
+                .name("start")
+                .done()
+                .connection(two, one)
+                .connection(four, two)
+                .connection(one, three);
+
+        WorkflowProcess process = factory.validate().getProcess();
+
+        ProcessMetaData processMetadata = 
ProcessToExecModelGenerator.INSTANCE.generate(process);
+        assertThat(processMetadata).as("Dumper should return non null class 
for process").isNotNull();
+    }
 }


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

Reply via email to