[rules-users] Throws NPE when comparing one property to another of the same bean class

Wolfgang Laun wolfgang.laun at gmail.com
Tue May 24 04:18:43 EDT 2011


This is a bug; it is fixed in 5.2.x and later.

As a workaround, use an eval, e.g.,
   eval( b.getDbl() > b.getLo() || b.getI() == a.getI() )

-W

2011/5/24 Miles Wen <miles.wy.1 at gmail.com>

> That's almost all the details in the mail subject; When I am running this
> rule in drools 5.1.0:
>
> package com.sample
>
> import com.sample.Msg;
> import java.util.Date;
>
> rule "Hello World"
>     when
>         m1:Msg()
>         m:Msg(dbl > lo || m1.in == in)
>     then
> end
>
> The java bean named 'Msg' definition:
>
> package com.sample;
>
> import java.util.Date;
> import java.util.HashSet;
> import java.util.Set;
>
> public class Msg {
>     private Long lo = 5l;
>     private double dbl = 5.5;
>     private Date date = new Date();
>     private int in = 4;
>     private boolean bool;
>     private Set<String> set = new HashSet<String>();
> ... // getter and setters ignored
>
> then it throws exception :
>
> java.lang.NullPointerException
>     at org.drools.reteoo.LeftTuple.get(LeftTuple.java:399)
>     at org.drools.reteoo.LeftTuple.get(LeftTuple.java:434)
>     at
> org.drools.rule.VariableRestriction$DoubleVariableContextEntry.updateFromTuple(VariableRestriction.java:563)
>     at
> org.drools.rule.AbstractCompositeConstraint$MultiFieldConstraintContextEntry.updateFromTuple(AbstractCompositeConstraint.java:306)
>     at
> org.drools.common.SingleBetaConstraints.updateFromTuple(SingleBetaConstraints.java:123)
>     at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:77)
>     at
> org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
>     at
> org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:138)
>     at
> org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:148)
>     at
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)
>     at
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378)
>     at
> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)
>     at
> org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)
>     at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1174)
>     at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1123)
>     at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:917)
>     at
> org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:251)
>     at com.sample.DroolsTest.main(DroolsTest.java:43)
>
> I think I am doing nothing wrong with the code, is this a bug or something?
> Or just comparing properties in the same bean class is illegal?
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110524/af76e8be/attachment.html 


More information about the rules-users mailing list