[jboss-jira] [JBoss JIRA] Closed: (JBRULES-1517) NumberFormatException in ObjectEqualsComparator.equals

Edson Tirelli (JIRA) jira-events at lists.jboss.org
Wed Apr 30 15:05:22 EDT 2008


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

Edson Tirelli closed JBRULES-1517.
----------------------------------

    Fix Version/s: 4.0.7
                   5.0.0-M1
       Resolution: Done

Fixed.

Thanks for reporting and for providing suggestions.

> NumberFormatException in ObjectEqualsComparator.equals 
> -------------------------------------------------------
>
>                 Key: JBRULES-1517
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1517
>             Project: JBoss Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.0.5
>            Reporter: Brian Stiles
>         Assigned To: Edson Tirelli
>             Fix For: 4.0.7, 5.0.0-M1
>
>
> It's not clear to me whether the ObjectFactory.ObjectEqualsComparator.equals implementation is incorrect or whether it is being used incorrectly, but it assumes that if the first argument is a Number and the second is a String, the second must be a number encoded as a string.  From the following example, you can see that this leads to a NumberFormatException in a valid rule.
> --
> package sample;
> import java.io.StringReader;
> import org.drools.RuleBase;
> import org.drools.RuleBaseConfiguration;
> import org.drools.RuleBaseFactory;
> import org.drools.StatefulSession;
> import org.drools.compiler.PackageBuilder;
> import org.drools.compiler.PackageBuilderConfiguration;
> public class EqualsProblem {
>     public static class Foo {
>         private final Object _prop;
>         public Foo(Object value) {
>             _prop = value;
>         }
>         public Object getProp() {
>             return _prop;
>         }
>     }
>     public static void main(String[] args) throws Exception {
>         final PackageBuilderConfiguration packageBuilderConfiguration =
>                 new PackageBuilderConfiguration();
>         final PackageBuilder packageBuilder = new PackageBuilder(packageBuilderConfiguration);
>         packageBuilder.addPackageFromDrl(new StringReader("\n"
>                 + "package sample\n"
>                 + "\n"
>                 + "import java.lang.Integer;\n"
>                 + "import sample.EqualsProblem.Foo;\n"
>                 + "\n"
>                 + "rule MyRule\n"
>                 + "\n"
>                 + "    when\n"
>                 + "        $f : Foo(prop == \"\")\n"
>                 + "    then \n"
>                 + "        System.out.println($f);\n"
>                 + "end \n"));
>         final RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration();
>         final RuleBase ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
>         ruleBase.addPackage(packageBuilder.getPackage());
>         final StatefulSession session = ruleBase.newStatefulSession();
>         session.insert(new Foo(3));
>         session.fireAllRules();
>     }
> }

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