[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