]
Mario Fusco commented on DROOLS-1266:
-------------------------------------
Fix cherry-picked to 6.5.x branch with
OOPath use with primitives does not return any match
----------------------------------------------------
Key: DROOLS-1266
URL:
https://issues.jboss.org/browse/DROOLS-1266
Project: Drools
Issue Type: Bug
Components: core engine
Reporter: Matteo Mortari
Assignee: Mario Fusco
Consider the following reproducer:
{code:java}
@Test
public void testPrimitives() {
String drl =
"import org.drools.compiler.xpath.*;\n" +
"global java.util.List list\n" +
"\n" +
"rule R when\n" +
" Adult( $x: /children.age )\n" +
"then\n" +
" list.add( $x );\n" +
"end\n";
System.out.println(drl);
KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
.build()
.newKieSession();
List<String> list = new ArrayList<String>();
ksession.setGlobal( "list", list );
Man bob = new Man( "Bob", 40 );
bob.addChild( new Child( "Charles", 12 ) );
bob.addChild( new Child( "Debbie", 8 ) );
ksession.insert( bob );
ksession.fireAllRules();
assertEquals(2, list.size());
}
{code}
these reproducer/test fails. Does not provide any match of the primitive type returned by
{{age}}.
Please note if the rule was instead:
{code:java}
rule R when
Adult( $x: /children.name )
then
...
{code}
the test would pass.
Hence appears OOPath is not matching on the primitive types?