<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">+1<div><br></div><div>Naw....</div><div><br></div><div>+billion<br><br>--- On <b>Thu, 7/28/11, Edson Tirelli <i>&lt;ed.tirelli@gmail.com&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Edson Tirelli &lt;ed.tirelli@gmail.com&gt;<br>Subject: Re: [rules-users] Condition syntax to access Map<br>To: "Rules Users List" &lt;rules-users@lists.jboss.org&gt;<br>Date: Thursday, July 28, 2011, 1:13 PM<br><br><div id="yiv864855709"><div><br></div><div>&nbsp;&nbsp; All,</div><div><br></div><div>&nbsp;&nbsp; I think we need to differentiate paradigms here. When using rules, contrary to imperative code, what we are doing is pattern matching.</div><div><br></div><div>X( a.b.c == &lt;value&gt; )</div>
<div><br></div><div>&nbsp;&nbsp; In the above case, we are looking for Xs that make that whole constraint true (i.e. match). If a or b are null, the whole expression will be false, does not matter the value of c or the value it is being compared against. Raising a null pointer exception, IMO, brings no advantage at all to the table... on the contrary, makes writing rules more difficult.&nbsp;</div>
<div><br></div><div>&nbsp;&nbsp; Another example we had in the past:</div><div><br></div><div>class Circle implements Shape</div><div>class Square implements Shape</div><div><br></div><div>rule X</div><div>when</div><div>&nbsp;&nbsp; &nbsp;Circle() from $shapes</div>
<div>...</div><div><br></div><div>&nbsp;&nbsp; In the above example, $shapes is a list and the rule is clearly looking for Circles. If there are Squares in there, they will just not match. Raising a ClassCastException like it would happen in an imperative language brings no advantage to the table, IMO.</div>
<div><br></div><div>&nbsp;&nbsp; So, IMO, all property navigation should be null pointer safe in the LHS of the rules.&nbsp;</div><div><br></div><div>&nbsp;&nbsp; This is not what happens today, but I think it should be fixed.</div><div><br></div>
<div>&nbsp;&nbsp; Edson</div><div><br></div><div>&nbsp;&nbsp;</div>&nbsp;&nbsp;<br><br><div class="yiv864855709gmail_quote">2011/7/28 Vincent LEGENDRE <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:vincent.legendre@eurodecision.com" target="_blank" href="/mc/compose?to=vincent.legendre@eurodecision.com">vincent.legendre@eurodecision.com</a>&gt;</span><br>
<blockquote class="yiv864855709gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div style="font-family:Times New Roman;font-size:12pt;color:#000000;">Hi all,<br><br>I agree with W. : NPE should be the default, and "null" cases behaviour should be planned by programmers.<br>
But I am not sure about using a new operator in rules (and do the update in Guvnor ...). <br>Why not using some drools annotations on the getter specifying the behaviour of an eval on a null value returned by this getter ? <br>
And may be these annotation could be added to an existing POJO via the declared type syntax (just like event role in fusion) ?<br><font color="#888888"><br>Vincent.<br></font></div></div><br>_______________________________________________<br>

rules-users mailing list<br>
<a rel="nofollow" ymailto="mailto:rules-users@lists.jboss.org" target="_blank" href="/mc/compose?to=rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a rel="nofollow" target="_blank" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>&nbsp; Edson Tirelli<br>&nbsp; JBoss Drools Core Development<br>&nbsp; JBoss by Red Hat @ <a rel="nofollow" target="_blank" href="http://www.jboss.com">www.jboss.com</a><br>
</div><br>-----Inline Attachment Follows-----<br><br><div class="plainMail">_______________________________________________<br>rules-users mailing list<br><a ymailto="mailto:rules-users@lists.jboss.org" href="/mc/compose?to=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></div></blockquote></div></td></tr></table>