[rules-users] ClassCastException when comparing date type with literal
Zeke
xanadu860122 at gmail.com
Thu Mar 29 05:39:10 EDT 2012
Hi, guys:
I meet a strange issue and need your help again... I am using Drools
4.0.7.
When my rule condition is as *Message( date > "Mar-01-2012" )*,
everything is OK. But if I change it to be as below:
*$msg : Message()
Order ( $msg.date > "Mar-01-2012" )*
I will meet "java.lang.String cannot be cast to java.util.Date"
ClassCastException. "Order" is another fact. I attach the exception call
stack. Please check it. It looks like a bug to me. Do we fix it in later
release? If so, can you tell me which release contains the fix? Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120329/1c8b13d3/attachment.html
-------------- next part --------------
[ObjectInserted: handle=[fid:1:1:org.drools.examples.HelloWorldExample$Message at 6490832e]; object=org.drools.examples.HelloWorldExample$Message at 6490832e]
Exception in thread "main" org.drools.RuntimeDroolsException: Exception executing predicate eval( $msg.date > "Mar-01-2012" )
at org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:255)
at org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaConstraints.java:131)
at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:154)
at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:162)
at org.drools.reteoo.Rete.assertObject(Rete.java:175)
at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:911)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:883)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:684)
at org.drools.reteoo.ReteooStatelessSession.executeWithResults(ReteooStatelessSession.java:213)
at org.drools.examples.HelloWorldExample.main(HelloWorldExample.java:101)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
at java.util.Date.compareTo(Date.java:112)
at org.mvel.math.IEEEFloatingPointMath.doOperationNonNumeric(IEEEFloatingPointMath.java:124)
at org.mvel.math.IEEEFloatingPointMath._doOperations(IEEEFloatingPointMath.java:103)
at org.mvel.math.IEEEFloatingPointMath.doOperation(IEEEFloatingPointMath.java:43)
at org.mvel.util.ParseTools.doOperations(ParseTools.java:844)
at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)
at org.mvel.MVELRuntime.execute(MVELRuntime.java:90)
at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)
at org.mvel.MVEL.executeExpression(MVEL.java:234)
at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:45)
at org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:248)
... 12 more
More information about the rules-users
mailing list