[jboss-jira] [JBoss JIRA] Reopened: (JBRULES-1433) java.lang.ClassCastException comparing BigDecimals (compareTo)

Mark Proctor (JIRA) jira-events at lists.jboss.org
Wed Mar 12 08:50:58 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBRULES-1433?page=all ]

Mark Proctor reopened JBRULES-1433:
-----------------------------------

             
My mistake, this is actually an MVEL issue. MVEL is used to evaluate the 'from' statement. Within it's scope of understand it thinks it can narrow the bigdecial to an integer without losing any precision. I'm not sure how to fix this one at the moment.

> java.lang.ClassCastException comparing BigDecimals (compareTo)
> --------------------------------------------------------------
>
>                 Key: JBRULES-1433
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1433
>             Project: JBoss Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.0.4, 4.0.3
>         Environment: java.runtime.name = Java(TM) SE Runtime Environment
> sun.boot.library.path = C:\Archivos de programa\Java\jre1.6.0_03\bin
> java.vm.version = 1.6.0_03-b05
> java.vm.vendor = Sun Microsystems Inc.
> java.vendor.url = http://java.sun.com/
> path.separator = ;
> java.vm.name = Java HotSpot(TM) Client VM
> file.encoding.pkg = sun.io
> user.country = ES
> sun.java.launcher = SUN_STANDARD
> sun.os.patch.level = Service Pack 2
> java.vm.specification.name = Java Virtual Machine Specification
> java.runtime.version = 1.6.0_03-b05
> java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
> java.endorsed.dirs = C:\Archivos de programa\Java\jre1.6.0_03\lib\endorsed
> os.arch = x86
> java.io.tmpdir = C:\DOCUME~1\Tito\CONFIG~1\Temp\
> line.separator = 
> java.vm.specification.vendor = Sun Microsystems Inc.
> user.variant = 
> os.name = Windows XP
> sun.jnu.encoding = Cp1252
> java.library.path = C:\Archivos de programa\Java\jre1.6.0_03\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Archivos de programa\Java\jre1.6.0_03\bin\client;C:\Archivos de programa\Java\jre1.6.0_03\bin;C:\Archivos de programa\Java\jre1.6.0_03\bin\client;C:\Archivos de programa\Java\jre1.6.0_03\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Archivos de programa\ATI Technologies\ATI Control Panel;C:\Java\maven-2.0.8\bin;C:\Archivos de programa\Java\jdk1.6.0_03\bin;c:\Archivos de programa\Microsoft SQL Server\90\Tools\binn\;C:\Archivos de programa\Microsoft SQL Server\80\Tools\BINN;C:\UnixUtils\usr\local\wbin;C:\Archivos de programa\MySQL\MySQL Server 5.0\bin
> java.specification.name = Java Platform API Specification
> java.class.version = 50.0
> sun.management.compiler = HotSpot Client Compiler
> os.version = 5.1
> user.home = C:\Documents and Settings\Tito
> user.timezone = 
> java.awt.printerjob = sun.awt.windows.WPrinterJob
> file.encoding = Cp1252
> java.specification.version = 1.6
> user.name = Tito
> java.class.path = D:\workspaces\ruleTest\target\classes;C:\Documents and Settings\Tito\.m2\repository\org\drools\drools-compiler\4.0.4\drools-compiler-4.0.4.jar;C:\Documents and Settings\Tito\.m2\repository\org\drools\drools-core\4.0.4\drools-core-4.0.4.jar;C:\Documents and Settings\Tito\.m2\repository\org\mvel\mvel14\1.2.21\mvel14-1.2.21.jar;C:\Documents and Settings\Tito\.m2\repository\org\antlr\antlr-runtime\3.0\antlr-runtime-3.0.jar;C:\Documents and Settings\Tito\.m2\repository\org\eclipse\jdt\core\3.2.3.v_686_R32x\core-3.2.3.v_686_R32x.jar;C:\Documents and Settings\Tito\.m2\repository\janino\janino\2.5.10\janino-2.5.10.jar;C:\Documents and Settings\Tito\.m2\repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;C:\Documents and Settings\Tito\.m2\repository\xerces\xercesImpl\2.4.0\xercesImpl-2.4.0.jar
> java.vm.specification.version = 1.0
> sun.arch.data.model = 32
> java.home = C:\Archivos de programa\Java\jre1.6.0_03
> java.specification.vendor = Sun Microsystems Inc.
> user.language = es
> awt.toolkit = sun.awt.windows.WToolkit
> java.vm.info = mixed mode, sharing
> java.version = 1.6.0_03
> java.ext.dirs = C:\Archivos de programa\Java\jre1.6.0_03\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
> sun.boot.class.path = C:\Archivos de programa\Java\jre1.6.0_03\lib\resources.jar;C:\Archivos de programa\Java\jre1.6.0_03\lib\rt.jar;C:\Archivos de programa\Java\jre1.6.0_03\lib\sunrsasign.jar;C:\Archivos de programa\Java\jre1.6.0_03\lib\jsse.jar;C:\Archivos de programa\Java\jre1.6.0_03\lib\jce.jar;C:\Archivos de programa\Java\jre1.6.0_03\lib\charsets.jar;C:\Archivos de programa\Java\jre1.6.0_03\classes
> java.vendor = Sun Microsystems Inc.
> file.separator = \
> java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgi
> sun.cpu.endian = little
> sun.io.unicode.encoding = UnicodeLittle
> sun.desktop = windows
> sun.cpu.isalist = pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
>            Reporter: José Arrarte
>         Assigned To: Mark Proctor
>         Attachments: ruleTest.zip
>
>
> Firing this rule:
> rule "Test Rule"
> 	when
> 		$dec : java.math.BigDecimal() from java.math.BigDecimal.TEN;
> 		eval( $dec.compareTo(java.math.BigDecimal.ONE) > 0 )
> 	then 
> 		System.out.println("OK!");		
> end
> Returns this error:
> org.drools.RuntimeDroolsException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal
> 	at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:76)
> 	at org.drools.reteoo.EvalConditionNode.assertTuple(EvalConditionNode.java:145)
> 	at org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(SingleTupleSinkAdapter.java:20)
> 	at org.drools.reteoo.FromNode.assertTuple(FromNode.java:90)
> 	at org.drools.reteoo.SingleTupleSinkAdapter.createAndPropagateAssertTuple(SingleTupleSinkAdapter.java:55)
> 	at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:116)
> 	at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)
> 	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)
> 	at org.drools.reteoo.Rete.assertObject(Rete.java:175)
> 	at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
> 	at org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction.execute(ReteooWorkingMemory.java:179)
> 	at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1315)
> 	at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:462)
> 	at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:433)
> 	at com.sample.DroolsTest.main(DroolsTest.java:33)
> Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal
> 	at com.sample.Rule_Test_Rule_0Eval0Invoker.evaluate(Rule_Test_Rule_0Eval0Invoker.java:12)
> 	at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:72)
> 	... 14 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       




More information about the jboss-jira mailing list