[jboss-jira] [JBoss JIRA] Assigned: (JBRULES-1006) NullPointerException when using "from collect"
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Sat Jul 14 11:42:12 EDT 2007
[ http://jira.jboss.com/jira/browse/JBRULES-1006?page=all ]
Edson Tirelli reassigned JBRULES-1006:
--------------------------------------
Assignee: Edson Tirelli (was: Mark Proctor)
> 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: Edson Tirelli
>
> 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