[jboss-jira] [JBoss JIRA] Closed: (JBRULES-1428) ClassCastException when comparing BigDecimal fields

Michael Neale (JIRA) jira-events at lists.jboss.org
Wed Mar 12 21:45:58 EDT 2008


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

Michael Neale closed JBRULES-1428.
----------------------------------

    Resolution: Done

Fixed in trunk and 4.0.x. 

> ClassCastException when comparing BigDecimal fields
> ---------------------------------------------------
>
>                 Key: JBRULES-1428
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1428
>             Project: JBoss Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.0.4
>            Reporter: Alexandre Gattiker
>         Assigned To: Michael Neale
>            Priority: Critical
>             Fix For: 4.0.5, 5.0.0-M1
>
>
> Works on Drools 4.0.2 but not on Drools 4.0.4.
> java.lang.ClassCastException: java.lang.Long
> 	at org.drools.base.evaluators.BigDecimalFactory$BigDecimalGreaterEvaluator.evaluate(BigDecimalFactory.java:318)
> 	at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:61)
> 	at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:82)
> 	at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:132)
> 	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.doInsert(ReteooWorkingMemory.java:71)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682)
> 	at com.sample.DroolsTest.main(DroolsTest.java:27)
> package com.sample
> import com.sample.DroolsTest.Message;
> rule "rule1"
> 	when
> 		Message(value > 0)
> 	then
> end
> public class DroolsTest
> {
>     public static final void main(String[] args)
>     {
>         try
>         {
>             RuleBase ruleBase = readRule();
>             Message a = new Message();
>             a.setValue(new BigDecimal(0));
>             WorkingMemory workingMemory = ruleBase.newStatefulSession();
>             workingMemory.insert(a);
>             workingMemory.fireAllRules();
>         }
>         catch (Throwable t)
>         {
>             t.printStackTrace();
>         }
>     }
>     private static RuleBase readRule() throws Exception
>     {
>         Reader source = new InputStreamReader(DroolsTest.class.getResourceAsStream("/Sample.drl"));
>         PackageBuilder builder = new PackageBuilder();
>         builder.addPackageFromDrl(source);
>         Package pkg = builder.getPackage();
>         RuleBase ruleBase = RuleBaseFactory.newRuleBase();
>         ruleBase.addPackage(pkg);
>         return ruleBase;
>     }
>     public static class Message
>     {
>         private BigDecimal value;
>         public BigDecimal getValue()
>         {
>             return this.value;
>         }
>         public void setValue(BigDecimal value)
>         {
>             this.value = value;
>         }
>     }
> }

-- 
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