Note that <a href="https://issues.jboss.org/browse/JBRULES-2995">https://issues.jboss.org/browse/JBRULES-2995</a> reported against  <span id="versions-val" class="value"><span style="padding: 0px; display: block;" class="shorten" id="versions-field"><span title="5.2.0.CR1 ">5.2.0.CR1 and still open might be related.<br>
<br>-W</span></span></span> <span id="versions-val" class="value"><span style="padding: 0px; display: block;" class="shorten" id="versions-field"><span title="5.2.0.CR1 "></span></span></span><span id="versions-val" class="value"><span style="padding: 0px; display: block;" class="shorten" id="versions-field"><span title="5.2.0.CR1 "></span></span></span><span id="versions-val" class="value"><span style="padding: 0px; display: block;" class="shorten" id="versions-field"><span title="5.2.0.CR1 "></span></span></span><br>
<br><div class="gmail_quote">2011/9/26 Edson Tirelli <span dir="ltr">&lt;<a href="mailto:ed.tirelli@gmail.com">ed.tirelli@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><br></div>   Thomas,<div><br></div><div>   Thanks for reporting. I will look into it. </div><div><br></div><div>   Did you open a JIRA yet? Let me know or I will do it otherwise.</div><div><br></div><div>   Edson<br>
<br>
<div class="gmail_quote">2011/9/26 Swindells, Thomas <span dir="ltr">&lt;<a href="mailto:TSwindells@nds.com" target="_blank">TSwindells@nds.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">







<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal">I’ve just tried upgrading from Drools 5.3.0-CR1 from the beta and I’ve hit a regression.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">JBoss seems to have been down for most of today so I haven’t been able to raise a Jira for it.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">In our model we have Facts which contain fields of java.lang.class, we then have a rule which checks that they aren’t null.<u></u><u></u></p>
<p class="MsoNormal">Eg<u></u><u></u></p>
<p class="MsoNormal">Fact { Class&lt;Object&gt; classField}<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Rule “xyz”<u></u><u></u></p>
<p class="MsoNormal">When<u></u><u></u></p>
<p class="MsoNormal">                Fact(classField != null)<u></u><u></u></p>
<p class="MsoNormal">Then<u></u><u></u></p>
<p class="MsoNormal">…<u></u><u></u></p>
<p class="MsoNormal">End<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">This is giving the following exception<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Caused by: java.lang.ClassCastException: org.drools.base.field.ObjectFieldImpl cannot be cast to org.drools.base.field.ClassFieldImpl<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.base.evaluators.EqualityEvaluatorsDefinition$ClassEqualEvaluator.evaluate(EqualityEvaluatorsDefinition.java:1772)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:87)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:109)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:130)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:451)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:369)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:134)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:451)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:379)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:204)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:244)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:330)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:291)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:882)<u></u><u></u></p>
<p class="MsoNormal">                at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:180)<u></u><u></u></p>
<p class="MsoNormal">                ... 149 more<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Wrapping the classField != null within an eval appears to be a work around.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">This is in the suspect method:<u></u><u></u></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">       
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">public</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;">
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">boolean</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;"> evaluate(InternalWorkingMemory workingMemory,</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">                               
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">final</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;"> InternalReadAccessor extractor,</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">                               
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">final</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;"> Object object1,
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">final</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;"> FieldValue object2) {</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">            Object value1 = extractor.getValue( workingMemory, object1 );</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">            Object value2 = object2.getValue();</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">           
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">if</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;"> ( value2 ==
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">null</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;"> ) {</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">                ClassFieldImpl classField = (ClassFieldImpl) object2;</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">                value2 = classField.resolve( workingMemory );</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">            }</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: Consolas; color: black;">           
</span><b><span style="font-size: 10pt; font-family: Consolas; color: rgb(127, 0, 85);">return</span></b><span style="font-size: 10pt; font-family: Consolas; color: black;">
</span><i><span style="font-size: 10pt; font-family: Consolas; color: rgb(0, 0, 192);">comparator</span></i><span style="font-size: 10pt; font-family: Consolas; color: black;">.equals( value1, value2 );</span><span style="font-size: 10pt; font-family: Consolas;"><u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size: 10pt; font-family: Consolas; color: black;">        }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Consolas; color: black;"><u></u> <u></u></span></p>
<p class="MsoNormal">I think the if statement just needs an instanceof check as well or some other way to track the fact that null may be a valid value to be comparing with!<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thomas<u></u><u></u></p>
</div>
<br>
<hr>
<font face="Arial" size="1" color="Gray"><br>
**************************************************************************************<br>
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the <a href="mailto:postmaster@nds.com" target="_blank">postmaster@nds.com</a> and delete it from your system as well as any copies. The content of e-mails as well as traffic data
 may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.<br>
<br>
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00<br>
**************************************************************************************<br>
</font>
</div>

<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>
<br></blockquote></div><font color="#888888"><br><br clear="all"><div><br></div>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>

</font></div>
<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>
<br></blockquote></div><br>