[
https://issues.jboss.org/browse/DROOLS-1404?page=com.atlassian.jira.plugi...
]
Matteo Mortari updated DROOLS-1404:
-----------------------------------
Comment: was deleted
(was: -Further analysis confirms suspects as per discussion with Mario, there are actually
two issues, one a false alpha node sharing, another a problem with the indexing.-
-Placing the following in the Misc2Test will manifest the two issues separately-
previous tests were in conflict with the contract of the alpha nodes.
Even while evaluating a (static) function, the value should be expected constant; there is
no functionality to instruct the engine a function has changed in value, as it is per the
alpha node contract memoized. Therefore previous test broke this contract and not valid
test.)
Alpha node not shared with static function evaluation
-----------------------------------------------------
Key: DROOLS-1404
URL:
https://issues.jboss.org/browse/DROOLS-1404
Project: Drools
Issue Type: Bug
Components: core engine
Reporter: Matteo Mortari
Assignee: Matteo Mortari
The following code when placed in Misc2Test exhibit the problem
{code:java}
public static class TestStaticUtils {
public static int return1() {
return 1;
}
}
@Test
public void testCheck2() {
String drl = "package c;\n" + // <<- keep this package name
"\n" +
"import " + TestObject.class.getCanonicalName() +
"\n" +
"\n" +
"rule fileBrule1 when\n" +
" TestObject(value == 1)\n" +
"then\n" +
"end"
;
String drl2 = "package iTransiberian;\n" + // <<- keep this
package name
"\n" +
"import " + TestObject.class.getCanonicalName() +
"\n" +
"import " + TestStaticUtils.class.getCanonicalName() +
"\n" +
"\n" +
"rule fileArule1 when\n" +
" $t : String()\n" +
" TestObject(value == TestStaticUtils.return1() )\n" +
"then\n" +
"end\n"+
"rule fileArule2 when\n" + // <<- keep this rule
" $t : String()\n" +
" TestObject(value == 0 )\n" +
"then\n" +
"end\n" +
""
;
KieSession kieSession = new KieHelper()
.addContent(drl2, ResourceType.DRL)
.addContent(drl, ResourceType.DRL)
.build().newKieSession();
ReteDumper.dumpRete(kieSession);
System.out.println(drl);
System.out.println(drl2);
kieSession.addEventListener(new DebugAgendaEventListener());
kieSession.insert("test");
kieSession.insert(new TestObject(1));
assertEquals(2, kieSession.fireAllRules() );
}
{code}
Conducting further analysis...
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)