[jboss-jira] [JBoss JIRA] Closed: (JBRULES-548) NPT when binding a variable and comparing that variable to another property of the same object the variable was bound from

Edson Tirelli (JIRA) jira-events at jboss.com
Thu Nov 9 17:54:42 EST 2006


     [ http://jira.jboss.com/jira/browse/JBRULES-548?page=all ]

Edson Tirelli closed JBRULES-548.
---------------------------------

    Fix Version/s: 3.1-m1
       Resolution: Duplicate Issue

This is a duplicate of: http://jira.jboss.com/jira/browse/JBRULES-515

> NPT when binding a variable and comparing that variable to another property of the same object the variable was bound from 
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBRULES-548
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-548
>             Project: JBoss Rules
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Reteoo
>    Affects Versions: 3.0.4
>         Environment: Windows 2000
> Sun JDK 1.5.0_02
>            Reporter: ELCA SII
>         Assigned To: Mark Proctor
>             Fix For: 3.0.5, 3.1-m1
>
>
> I want to have a rule that compares one property of an object with another one of the same object.
> Sample Object:
> <snip>
> public class TestDomainObject {
> 	public TestDomainObject() {
> 	}
> 	public Integer getValueX() {
> 		return new Integer(200);
> 	}
> 	public Integer getValueY() {
> 		return new Integer(300);
> 	}
> }
> </snip>
> I have the following rule in NRL:
> <snip>
> rule "Rule2"
> 	when
> 		TestDomainObject( y : valueY, valueX < y )
> 	then
> 		System.out.println("valueX < valueY");
> end
> </snip>
> or XML:
> <snip>
>   <rule name="rule2.B">
> 	<lhs>
> 		<column object-type="TestDomainObject" identifier="p2">
> 			<field-binding field-name="valueY" identifier="v1"/>
> 			<bound-variable field-name="valueX" evaluator="&lt;=" identifier="v1"/>
> 		</column>
> 	</lhs>
> 	<rhs>
>  		System.out.println("rule 2.B valueX &lt;= valueY");
> 	</rhs>
>   </rule>
> </snip>
> And this leads to the following exception (3.0.4 and 3.0.x branch head):
> <snip>
> java.lang.NullPointerException
> 	at org.drools.rule.BoundVariableConstraint.isAllowed(BoundVariableConstraint.java:79)
> 	at org.drools.common.BetaNodeBinder.isAllowed(BetaNodeBinder.java:63)
> 	at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:142)
> 	at org.drools.reteoo.ObjectSource.propagateAssertObject(ObjectSource.java:119)
> 	at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:138)
> 	at org.drools.reteoo.ObjectSource.propagateAssertObject(ObjectSource.java:119)
> 	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:158)
> 	at org.drools.reteoo.Rete.assertObject(Rete.java:120)
> 	at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:180)
> 	at org.drools.reteoo.ReteooWorkingMemory.doAssertObject(ReteooWorkingMemory.java:69)
> 	at org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemory.java:538)
> 	at org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemory.java:374)
> 	...
> </snip>
> In the code at 
> - org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:142)
> the call
> - this.binder.isAllowed( handle, null, workingMemory )
> is made (in the case the binder is not null). For the second parameter (tuple), 'null' is passed explicitly.
> later in the calling stack at:
> - org.drools.rule.BoundVariableConstraint.isAllowed(BoundVariableConstraint.java:79)
> the following call is made: 
> - tuple.get(...)
> => But the for the 'tuple' 'null' was passed in beforehand

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list