[rules-users] Regression with Drools 5.3.0-CR1

Edson Tirelli ed.tirelli at gmail.com
Mon Sep 26 14:02:10 EDT 2011


   Thomas,

   Thanks for reporting. I will look into it.

   Did you open a JIRA yet? Let me know or I will do it otherwise.

   Edson

2011/9/26 Swindells, Thomas <TSwindells at nds.com>

>  I’ve just tried upgrading from Drools 5.3.0-CR1 from the beta and I’ve
> hit a regression.****
>
> ** **
>
> JBoss seems to have been down for most of today so I haven’t been able to
> raise a Jira for it.****
>
> ** **
>
> 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.****
>
> Eg****
>
> Fact { Class<Object> classField}****
>
> ** **
>
> Rule “xyz”****
>
> When****
>
>                 Fact(classField != null)****
>
> Then****
>
> …****
>
> End****
>
> ** **
>
> This is giving the following exception****
>
> ** **
>
> Caused by: java.lang.ClassCastException:
> org.drools.base.field.ObjectFieldImpl cannot be cast to
> org.drools.base.field.ClassFieldImpl****
>
>                 at
> org.drools.base.evaluators.EqualityEvaluatorsDefinition$ClassEqualEvaluator.evaluate(EqualityEvaluatorsDefinition.java:1772)
> ****
>
>                 at
> org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:87)**
> **
>
>                 at
> org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:109)***
> *
>
>                 at
> org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:130)****
>
>                 at
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:451)
> ****
>
>                 at
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:369)
> ****
>
>                 at
> org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:134)****
>
>                 at
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:451)
> ****
>
>                 at
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:379)
> ****
>
>                 at
> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:204)****
>
>                 at
> org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:244)****
>
>                 at
> org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:330)****
>
>                 at
> org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:291)****
>
>                 at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:882)
> ****
>
>                 at
> org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:180)
> ****
>
>                 ... 149 more****
>
> ** **
>
> Wrapping the classField != null within an eval appears to be a work around.
> ****
>
> ** **
>
> This is in the suspect method:****
>
>         *public* *boolean* evaluate(InternalWorkingMemory workingMemory,**
> **
>
>                                 *final* InternalReadAccessor extractor,***
> *
>
>                                 *final* Object object1, *final* FieldValue
> object2) {****
>
>             Object value1 = extractor.getValue( workingMemory, object1 );*
> ***
>
>             Object value2 = object2.getValue();****
>
>             *if* ( value2 == *null* ) {****
>
>                 ClassFieldImpl classField = (ClassFieldImpl) object2;****
>
>                 value2 = classField.resolve( workingMemory );****
>
>             }****
>
>             *return* *comparator*.equals( value1, value2 );****
>
>         }****
>
> ** **
>
> 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!****
>
> ** **
>
> ** **
>
> Thomas****
>
> ------------------------------
>
>
> **************************************************************************************
> This message is confidential and intended only for the addressee. If you
> have received this message in error, please immediately notify the
> postmaster at nds.com 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.
>
> 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
>
> **************************************************************************************
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110926/ffe0efa4/attachment.html 


More information about the rules-users mailing list