This is an automated email from the ASF dual-hosted git repository.
mariofusco pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
The following commit(s) were added to refs/heads/main by this push:
new 3f65da3b0a [DROOLS-6340] preserve order of used declaration traversing
method expressions recursively (#6344)
3f65da3b0a is described below
commit 3f65da3b0a7be27d0bd93d96b0cc4787711a12c4
Author: Mario Fusco <[email protected]>
AuthorDate: Wed May 14 17:43:05 2025 +0200
[DROOLS-6340] preserve order of used declaration traversing method
expressions recursively (#6344)
---
.../codegen/execmodel/generator/DrlxParseUtil.java | 17 ++++++++++-------
.../model/codegen/execmodel/MixedArgumentTest.java | 9 ++++-----
.../drools/model/codegen/execmodel/domain/Person.java | 4 ++++
3 files changed, 18 insertions(+), 12 deletions(-)
diff --git
a/drools-model/drools-model-codegen/src/main/java/org/drools/model/codegen/execmodel/generator/DrlxParseUtil.java
b/drools-model/drools-model-codegen/src/main/java/org/drools/model/codegen/execmodel/generator/DrlxParseUtil.java
index e66d84bc0c..9612dd1075 100644
---
a/drools-model/drools-model-codegen/src/main/java/org/drools/model/codegen/execmodel/generator/DrlxParseUtil.java
+++
b/drools-model/drools-model-codegen/src/main/java/org/drools/model/codegen/execmodel/generator/DrlxParseUtil.java
@@ -895,15 +895,18 @@ public class DrlxParseUtil {
}
public static List<String> collectUsedDeclarationsInExpression(Expression
expr) {
- Stream<NameExpr> namesStream = expr instanceof MethodCallExpr
methodCallExpr ?
+ return exprToOrderedNameExprStream(expr)
+ .map(NameExpr::getName)
+ .map(SimpleName::getIdentifier)
+ .distinct()
+ .collect(toList());
+ }
+
+ private static Stream<NameExpr> exprToOrderedNameExprStream(Expression
expr) {
+ return expr instanceof MethodCallExpr methodCallExpr ?
Stream.concat(methodCallExpr.getScope().stream(),
methodCallExpr.getArguments().stream())
- .flatMap(e -> e.findAll(NameExpr.class).stream()) :
+ .flatMap(DrlxParseUtil::exprToOrderedNameExprStream) :
expr.findAll(NameExpr.class).stream();
-
- return namesStream.map(NameExpr::getName)
- .map(SimpleName::getIdentifier)
- .distinct()
- .collect(toList());
}
public static Optional<java.lang.reflect.Type>
safeResolveType(TypeResolver typeResolver, String typeName) {
diff --git
a/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/MixedArgumentTest.java
b/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/MixedArgumentTest.java
index 6c8a87e0c4..dca1d8062c 100644
---
a/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/MixedArgumentTest.java
+++
b/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/MixedArgumentTest.java
@@ -24,10 +24,6 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.kie.api.runtime.KieSession;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
@@ -48,15 +44,18 @@ public class MixedArgumentTest extends BaseModelTest {
" $person2 : Person(age == 40)\n" +
" $child2 : Child(age == 5 && parent == \"Bob\")\n" +
" $personNo : Integer() from doNothing($person1,
$child1.getName, $child2.getName, $person2.getName)\n" +
+ " $person_method : Integer() from
doNothingAgain($person1.addAges($child1.getAge, $child2.getAge))\n" +
"then \n" +
" result.add($personNo); \n " +
"end \n" +
"\n" +
"function Integer doNothing(Person person, String firstName,
String secondName, String thirdName) {\n" +
" return 1; \n" +
+ "}\n" +
+ "function Integer doNothingAgain(int age) {\n" +
+ " return 1; \n" +
"}";
-
@ParameterizedTest
@MethodSource("parameters")
void mixedArgumentsTest(RUN_TYPE runType){
diff --git
a/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/domain/Person.java
b/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/domain/Person.java
index 2e17db7495..47b889b530 100644
---
a/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/domain/Person.java
+++
b/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/domain/Person.java
@@ -329,4 +329,8 @@ public class Person extends AbstractReactiveObject {
public static boolean isEvenFloat( float i ){
return (i % 2) == 0;
}
+
+ public int addAges(int age1, int age2) {
+ return age1 + age2;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]