[rules-users] RE: JavaConsequenceBuilder.buildNullPointerException
Edson Tirelli
tirelli at post.com
Wed Oct 31 12:32:14 EDT 2007
Michael,
The problem is you missed the "" on:
$result.addPassedRule(leaders in same location);
I will fix the parser code to not throw NPE for this anymore.
Thanks,
Edson
2007/10/31, Michael Fuller <mfuller at ihets.org>:
>
> Sure. Thanks
>
>
>
> package validActions;
>
> import myPackage.domain.leader.LeaderImpl;
>
> import myPackage.domain.location.LocationImpl;
>
> import myPackage.domain.leader.LeaderTypeImpl;
>
> import myPackage.rivoli.service.rules.RuleResult;
>
>
>
> rule "leaders in same location"
>
> salience 10
>
> when
>
> $result : RuleResult(rulesPassed not contains "leaders in same
> location")
>
> $loc : LocationImpl()
>
> $leaderName : String()
>
> $leader1 : LeaderImpl(name == $leaderName, location == $loc)
>
> $leader2 : LeaderImpl(name != $leaderName, this != $leader1, location
> == $loc)
>
> then
>
> $result.addPassedRule(leaders in same location);
>
> update($result);
>
> end
>
>
>
> rule "leaders king and heir"
>
> salience 10
>
> when
>
> $result : RuleResult(rulesPassed not contains "leaders king and heir")
>
> $leaderName : String()
>
> $king : LeaderTypeImpl(name == "King")
>
> $heir : LeaderTypeImpl(name == "Heir")
>
> $leader1 : LeaderImpl(name == $leaderName, leaderType == $king)
>
> $leader2 : LeaderImpl(name != $leaderName, this != $leader1,
> leaderType == $heir)
>
> then
>
> $result.addPassedRule("leaders king and heir");
>
> update($result);
>
> end
>
>
>
> rule "leader in capital"
>
> salience 10
>
> when
>
> $result : RuleResult(rulesPassed not contains "leader in capital")
>
> $loc : LocationImpl(capital == true)
>
> $leader1 : LeaderImpl(location == $loc)
>
> then
>
> $result.addPassedRule("leader in capital");
>
> update($result);
>
> end
>
>
>
> rule "leader in homeland"
>
> salience 10
>
> when
>
> $result : RuleResult(rulesPassed not contains "leader in homeland")
>
> $loc : LocationImpl(homeland == true)
>
> $leader1 : LeaderImpl(location == $loc)
>
> then
>
> $result.addPassedRule("leader in homeland");
>
> update($result);
>
> end
>
>
>
> rule "abdication allowed"
>
> when
>
> $result : RuleResult (rulesPassed not contains "abdication allowed"
>
> && rulesPassed contains "leaders in same location"
>
> && rulesPassed contains "leaders king and heir")
>
> then
>
> $result.addPassedRule("abdication allowed");
>
> update($result);
>
> end
>
>
> ------------------------------
>
> *From:* rules-users-bounces at lists.jboss.org [mailto:
> rules-users-bounces at lists.jboss.org] *On Behalf Of *Edson Tirelli
> *Sent:* Tuesday, October 30, 2007 2:31 PM
> *To:* Rules Users List
> *Subject:* Re: [rules-users] RE:
> JavaConsequenceBuilder.buildNullPointerException
>
>
>
> Michael,
>
> Can you show us your rule(s) please? it is raising the NPE when trying
> to get the list of variables you use in the consequence... as soon as we
> determine what the real problem is, I can fix the error message...
>
> []s
> Edson
>
> 2007/10/30, Michael Fuller <mfuller at ihets.org>:
>
> I have the following code: (note String[] ruleFiles contains only one
> string)
>
>
>
> public class Engine {
>
> private static RuleBase ruleBase;
>
>
>
> public void start(String[] ruleFiles) throws Exception {
>
> PackageBuilderConfiguration cfg = new
> PackageBuilderConfiguration();
>
> JavaDialectConfiguration javaConf = (JavaDialectConfiguration)
> cfg.getDialectConfiguration("java");
>
> javaConf.setCompiler(JavaDialectConfiguration.ECLIPSE);
>
> PackageBuilder builder = new PackageBuilder(cfg);
>
> for (String file : ruleFiles) {
>
> builder.addPackageFromDrl(new InputStreamReader(
> ClassLoader.getSystemResourceAsStream(file)));
>
> }
>
> Package pkg = builder.getPackage();
>
>
>
> PackageBuilderErrors errors = builder.getErrors();
>
> if (errors.getErrors().length != 0) {
>
> // do something
>
> }
>
>
>
> RuleBaseConfiguration conf = new RuleBaseConfiguration();
>
> conf.setAssertBehaviour(
> RuleBaseConfiguration.AssertBehaviour.EQUALITY);
>
>
>
> ruleBase = RuleBaseFactory.newRuleBase();
>
> ruleBase.addPackage(pkg);
>
> ruleBase.newStatefulSession(false);
>
>
>
> }
>
> }
>
>
>
> At the builder.addPackageFromDrl(new InputStreamReader(
> ClassLoader.getSystemResourceAsStream(file))); line I'm getting the
> following exception:
>
> java.lang.NullPointerException
>
> at
> org.drools.rule.builder.dialect.java.JavaConsequenceBuilder.build(
> JavaConsequenceBuilder.java:54)
>
> at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java
> :67)
>
> at org.drools.compiler.PackageBuilder.addRule(
> PackageBuilder.java:446)
>
> at org.drools.compiler.PackageBuilder.addPackage(
> PackageBuilder.java:304)
>
> at org.drools.compiler.PackageBuilder.addPackageFromDrl(
> PackageBuilder.java:167)
>
> at myPackage.rivoli.service.rules.Engine.start(Engine.java:33)
>
> at myPackage.rivoli.rules.LeaderKingAndHeirTest.setUp(
> LeaderKingAndHeirTest.java:26)
>
> at com.intellij.rt.execution.junit.JUnitStarter.main(
> JUnitStarter.java:40)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
>
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
>
> at com.intellij.rt.execution.application.AppMain.main(
> AppMain.java:90)
>
>
>
> I am using Drools 4.0.3
>
> I have the following jars in my class path:
>
> antlr-runtime-3.0.jar
>
> core-3.2.3.v_686_R32x.jar
>
> drools-compiler-4.0.3.jar
>
> drools-core-4.0.3.jar
>
> mvel14-1.2.10.jar
>
>
>
> Any ideas would be helpful. Thanks.
>
>
>
>
>
> Michael Fuller
>
>
>
> "In theory there is no difference between theory and practice. But, in
> practice, there is." - Jan L.A. van de Snepscheut
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> --
> Edson Tirelli
> Software Engineer - JBoss Rules Core Developer
> Office: +55 11 3529-6000
> Mobile: +55 11 9287-5646
> JBoss, a division of Red Hat @ www.jboss.com
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20071031/16e4a4b6/attachment.html
More information about the rules-users
mailing list