[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