[jboss-jira] [JBoss JIRA] Updated: (JBRULES-3130) Regression. Rule misfires due to constraint list[0].field1/2 in two rules
Mark Proctor (JIRA)
jira-events at lists.jboss.org
Thu Sep 29 03:05:30 EDT 2011
[ https://issues.jboss.org/browse/JBRULES-3130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Proctor updated JBRULES-3130:
----------------------------------
Assignee: Edson Tirelli (was: Mark Proctor)
> Regression. Rule misfires due to constraint list[0].field1/2 in two rules
> -------------------------------------------------------------------------
>
> Key: JBRULES-3130
> URL: https://issues.jboss.org/browse/JBRULES-3130
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 5.2.0.Final
> Reporter: Wolfgang Laun
> Assignee: Edson Tirelli
> Priority: Critical
> Fix For: 5.2.1.Final
>
>
> A pair of constraints suich as list[0].a == null and list[0].b == null in two different rules causes one of the rules not to fire and the other one to fire erroneously (see results at the end).
> Java:
> ------------------------------------------------------------
> public class Three {
> private String a;
> private String b;
> private String c;
> public Three( String a, String b, String c ){
> this.a = a;
> this.b = b;
> this.c = c;
> }
> public String getA(){ return a; }
> public String getB(){ return b; }
> public String getC(){ return c; }
> }
> ---------------------------------------------------------------
> import java.util.*;
> public class ListOfThree {
> private List<Three> list;
> private Class<?> clazz;
> public ListOfThree( Three three, Class<?> clazz ){
> list = new ArrayList<Three>();
> list.add( three );
> this.clazz = clazz;
> }
> public List<Three> getList(){ return list; }
> public Class<?> getClazz(){ return clazz; }
> }
> ----------------------------------------------------------------
> // Insertion of facts
> Three three = new Three( "a", "b", "c" );
> ListOfThree listof3 = new ListOfThree( three, java.lang.Object.class );
> kSession.insert( listof3 );
> three = new Three( "x", null, "z" );
> listof3 = new ListOfThree( three, java.lang.String.class );
> kSession.insert( listof3 );
> three = new Three( null, "q", "r" );
> listof3 = new ListOfThree( three, java.lang.Integer.class );
> kSession.insert( listof3 );
> --------------------------------------------------------------------------
> rule 'rule1'
> // dialect "mvel" // does not matter
> when
> ListOfThree( list[0].a == null, $c: clazz );
> then
> System.out.println( "rule1 " + $c.getSimpleName() );
> end
> rule 'rule2'
> // dialect "mvel" // does not matter
> when
> ListOfThree( list[0].b == null, $c: clazz );
> then
> System.out.println( "rule2 " + $c.getSimpleName() );
> end
> ---------------------------------------------------------------
> Results:
> rule2 Integer
> rule1 Integer
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list