[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1006) NullPointerException when using "from collect"

Brian Stiles (JIRA) jira-events at lists.jboss.org
Fri Jul 13 18:41:03 EDT 2007


    [ http://jira.jboss.com/jira/browse/JBRULES-1006?page=comments#action_12368950 ] 
            
Brian Stiles commented on JBRULES-1006:
---------------------------------------

I misspoke slightly.

    It seems that using more than one rule with "from collect"

should read

    It seems that using a rule with more than one "from collect"


> NullPointerException when using "from collect"
> ----------------------------------------------
>
>                 Key: JBRULES-1006
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1006
>             Project: JBoss Rules
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>            Reporter: Brian Stiles
>         Assigned To: Mark Proctor
>
> It seems that using more than one rule with "from collect"--or possibly "from collect ( Foo() from someCall() )--causes Declaration.getPattern().getOffset() to be incorrect, resulting in a NullPointerException in ReteTuple.get(int).  This should be more clear after running the included code.
> The following test case demonstrates the problem.
> --
> package sample;
> import java.io.StringReader;
> import java.util.HashSet;
> import java.util.Set;
> 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 FromProblem {
>     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.util.ArrayList;"
>                 + "import sample.FromProblem;"
>                 + "global sample.FromProblem x;"
>                 + "\n"
>                 + "rule MyRule\n"
>                 + "    dialect \"java\"\n"
>                 + "\n"
>                 + "    when\n"
>                 + "        $i : ArrayList() from collect(Integer() from x.getIntegers())\n"
>                 + "        $k : ArrayList() from collect(Integer() from x.getIntegers())\n"
>                 + "    then \n"
>                 + "        System.out.println($i);\n"
>                 + "        System.out.println($k);\n"
>                 + "end \n"));
>         final RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration();
>         final RuleBase ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
>         ruleBase.addPackage(packageBuilder.getPackage());
>         final StatefulSession session = ruleBase.newStatefulSession();
>         session.setGlobal("x", new FromProblem());
>         session.fireAllRules();
>     }
>     public Set<Integer> getIntegers() {
>         final HashSet<Integer> set = new HashSet<Integer>();
>         set.add(1);
>         return set;
>     }
> }

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