<html dir="ltr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta content="MSHTML 6.00.6000.16609" name="GENERATOR">
<style title="owaParaStyle">P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
</style>
</head>
<body ocsi="x">
<div dir="ltr"><font face="Tahoma" color="#000000" size="2">Hi Edson,</font></div>
<div dir="ltr"><font face="Tahoma" size="2"></font>&nbsp;</div>
<div dir="ltr"><font face="Tahoma" size="2">I'll do my best. The rule uses a DSL, so I will post the specific rule and then the corresponding DSL file. I do believe it's happening inside the eval.</font></div>
<div dir="ltr"><font face="Tahoma" size="2"></font>&nbsp;</div>
<div dir="ltr"><font face="Tahoma" size="2">Rule:</font></div>
<div dir="ltr"><font face="Tahoma" size="2"></font>&nbsp;</div>
<div dir="ltr"><br>
rule &quot;awe&quot;<br>
dialect &quot;mvel&quot;<br>
ruleflow-group 'Validation'<br>
when<br>
A AReallyWonderfulAndCrappyTest entry has results where<br>
BasicMountFridayTest mountType IsEqualTo &quot;T&quot;<br>
then<br>
&nbsp;set BasicBlindFridayTest_JP rightwidht to 44<br>
end<br>
</div>
<div dir="ltr">DSL:</div>
<div dir="ltr">[condition][]A {TemplateName} entry has results where=$daObj : {TemplateName}()<br>
[condition][]{field} IsEqualTo {value}=eval ( {field} == {value} )<br>
[condition][]{field} LessThan {value}=eval ( {field} &lt; {value} )<br>
[condition][]{field} GreaterThan {value}=eval ( {field} &gt; {value} )<br>
[condition][]{field} LessThanOrrEqualTo {value}=eval ( {field} &lt;= {value} )<br>
[condition][]{field} GreaterThanOrrEqualTo {value}=eval ( {field} &gt;= {value} )<br>
[condition][]{field} NotEqualTo {value}=eval ( {field} != {value} )<br>
[condition][]A {TemplateName} entry is valid=$daObj : {TemplateName}()<br>
[consequence][]set {Field} {Member} to {Value}=$daObj.get{Field}().set{Member}({Value});<br>
[consequence][]Log {value}=LOG.info({value});<br>
[consequence][]set {GlobalVar} {Member} to {Value}={GlobalVar}.set{Member}({Value})<br>
[consequence][]set {Field} {Member1} to global {GlobalVar} {GlobalMember}=$daObj.get{Field}().set{Member}({GlobalVar}.get{GlobalMember}())<br>
[*][]set global {GlobalVar} {Member1} to global {GlobalVar} {Member2}={GlobalVar}.set{Member1}({GlobalVar}.get{Member2}())<br>
[consequence][]show {field} {Member1}=$daObj.get{field}().set{Member1}Visible(true);<br>
[consequence][]hide {field} {Member1}=$daObj.get{field}().set{Member1}Visible(false);<br>
[consequence][]show table {field}=$daObj.set{field}Visible(true);<br>
[consequence][]hide table {field}=$daObj.set{field}Visible(false);</div>
<div dir="ltr">&nbsp;</div>
<div dir="ltr">&nbsp;</div>
<div dir="ltr">&nbsp;</div>
<div id="divRpF900879" style="DIRECTION: ltr">
<hr tabindex="-1">
<font face="Tahoma" size="2"><b>From:</b> rules-users-bounces@lists.jboss.org [rules-users-bounces@lists.jboss.org] On Behalf Of Edson Tirelli [tirelli@post.com]<br>
<b>Sent:</b> Saturday, March 08, 2008 7:14 AM<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] Interesting null pointer exception when inserting a fact.<br>
</font><br>
</div>
<div></div>
<div><br>
&nbsp;&nbsp; Jason,<br>
<br>
&nbsp;&nbsp; Can you please isolate and show us the rule that is creating the problem? It is happening either in a eval() statement or in a nested property access.<br>
<br>
&nbsp;&nbsp;&nbsp; []s<br>
&nbsp;&nbsp;&nbsp; Edson<br>
<br>
<div><span class="gmail_quote">2008/3/7, Jason Partyka &lt;<a href="mailto:Jason.Partyka@hightowerinc.com">Jason.Partyka@hightowerinc.com</a>&gt;:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
Hi,<br>
<br>
This is in relation to drools 4.0.4<br>
<br>
I have an interesting problem. I am getting a null pointer exception when I am inserting a fact into a StatefulSession object. What is odd about this NPE is that, as far as I can tell (and I have inserted a breakpoint right before I insert the fact) that all
 the properties in the object are initialized, and there are no rules accessing any thing that could be null.<br>
<br>
So here's my exception trace (just first few lines to get context):<br>
<br>
Exception in thread &quot;AWT-EventQueue-0&quot; org.drools.RuntimeDroolsException: java.lang.NullPointerException<br>
&nbsp;&nbsp;at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:76)<br>
&nbsp;&nbsp;at org.drools.reteoo.EvalConditionNode.assertTuple(EvalConditionNode.java:145)<br>
&nbsp;&nbsp;at org.drools.reteoo.SingleTupleSinkAdapter.createAndPropagateAssertTuple(SingleTupleSinkAdapter.java:55)<br>
&nbsp;&nbsp;at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116)<br>
&nbsp;&nbsp;at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)<br>
&nbsp;&nbsp;at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)<br>
&nbsp;&nbsp;at org.drools.reteoo.Rete.assertObject(Rete.java:177)<br>
&nbsp;&nbsp;at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)<br>
&nbsp;&nbsp;at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)<br>
&nbsp;&nbsp;at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886)<br>
&nbsp;&nbsp;at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:858)<br>
&nbsp;&nbsp;at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:659)<br>
&nbsp;&nbsp;at com.hightower.drools.executablerules.Rules.setTemplate(Rules.java:112)<br>
....<br>
Caused by: java.lang.NullPointerException<br>
&nbsp;&nbsp;at org.drools.base.mvel.MVELEvalExpression.evaluate(MVELEvalExpression.java:39)<br>
&nbsp;&nbsp;at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:72)<br>
&nbsp;&nbsp;... 39 more<br>
<br>
<br>
(that setTemplate method is not a drools template)<br>
<br>
Any ideas?<br>
<br>
Thanks,<br>
Jason<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
&nbsp;&nbsp;Edson Tirelli<br>
&nbsp;&nbsp;JBoss Drools Core Development<br>
&nbsp;&nbsp;Office: &#43;55 11 3529-6000<br>
&nbsp;&nbsp;Mobile: &#43;55 11 9287-5646<br>
&nbsp;&nbsp;JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a>
</div>
</body>
</html>