[rules-users] NullPointerException in a simple test -- a Drools bug?
Edson Tirelli
tirelli at post.com
Fri Jul 27 10:10:37 EDT 2007
Christian,
Yes, looks like a bug. Can you please open a JIRA for it?
Thank you,
Edson
2007/7/27, Christian Spurk <Christian.Spurk at dfki.de>:
>
> Hi all,
>
> I'm trying to migrate my JBoss v3.0.6 rules to the latest v4.0.0
> release. I could already resolve some issues but now I'm already stuck
> for hours with a NullPointerException that I can't get rid of. I broke
> the problem down to a relatively small set of test files that I'd like
> to show you here:
>
>
> /* SimpleTest.java */
> package com.sample;
> // ... imports removed for brevity
> public class SimpleTest {
> public static final void main(String[] args) throws Exception {
> PackageBuilder builder = new PackageBuilder();
> builder.addPackageFromDrl(new InputStreamReader(SimpleTest.class
> .getResourceAsStream("/rf1.drl")));
> builder.addPackageFromDrl(new InputStreamReader(SimpleTest.class
> .getResourceAsStream("/rf2.drl")));
> RuleBase rb = RuleBaseFactory.newRuleBase();
> rb.addPackage(builder.getPackage());
> WorkingMemory wm = rb.newStatefulSession();
> wm.insert(new Task()); // <-- crashes here
> wm.fireAllRules();
> }
> }
>
>
> /* Task.java */
> package com.sample;
> public class Task {
> private String next = null;
> public String getNext() {
> return next;
> }
> public void setNext(String next) {
> this.next = next;
> }
> }
>
>
> // rf1.drl
> package com.sample
> rule "r0"
> when
> Task( next == null ); # <-- change to "x"
> then
> System.out.println("r0");
> end
> rule "r1"
> when
> Task( next == "1" );
> then
> System.out.println("r1");
> end
>
>
> // rf2.drl
> package com.sample
> rule "r2"
> when
> Task( next == "2" );
> then
> System.out.println("r1");
> end
>
>
> As you can see there are two Drools rule files and two Java classes. If
> I run the SimpleTest class, I get the following exception:
>
> Exception in thread "main" java.lang.NullPointerException
> at
> org.drools.reteoo.CompositeObjectSinkAdapter$HashKey.equals(
> CompositeObjectSinkAdapter.java:608)
> at
> org.drools.util.AbstractHashTable$EqualityEquals.equal(
> AbstractHashTable.java:345)
> at org.drools.util.ObjectHashMap.get(ObjectHashMap.java:86)
> at
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(
> CompositeObjectSinkAdapter.java:295)
> at org.drools.reteoo.ObjectTypeNode.assertObject(
> ObjectTypeNode.java:168)
> at org.drools.reteoo.Rete.assertObject(Rete.java:168)
> at org.drools.reteoo.ReteooRuleBase.assertObject(
> ReteooRuleBase.java:190)
> at
> org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java
> :70)
> at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java
> :848)
> at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java
> :822)
> at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java
> :623)
> at com.sample.SimpleTest.main(SimpleTest.java:22)
>
> I've marked the position in the source code at which the run crashes.
> Does anybody have an idea what's wrong here?
>
> Some more strange things relating to this problem:
> * If I change the 'null' in rf1.drl to '""' (empty string), the
> problem remains.
> * If I change the 'null' in rf1.drl to '"x"' (or some other non-empty
> string), then the exception is gone.
> * If I remove any of the two rule files, the exception is gone, too.
>
> Any ideas? Should I file a bug?
>
> Thanks in advance!
>
> Cheers,
> Christian
>
> _______________________________________________
> 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/20070727/cd4305f0/attachment.html
More information about the rules-users
mailing list