[jboss-jira] [JBoss JIRA] Resolved: (JBRULES-1032) NPE in HashKey.equals when LHS checks for null object, the object is null, and there are more than 3 rules
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Mon Jul 30 17:27:54 EDT 2007
[ http://jira.jboss.com/jira/browse/JBRULES-1032?page=all ]
Edson Tirelli resolved JBRULES-1032.
------------------------------------
Fix Version/s: 4.0.1
Resolution: Duplicate Issue
Assignee: Edson Tirelli (was: Mark Proctor)
Fixed in: http://jira.jboss.com/jira/browse/JBRULES-1034
Thanks for reporting and providing test case/fix.
> NPE in HashKey.equals when LHS checks for null object, the object is null, and there are more than 3 rules
> ----------------------------------------------------------------------------------------------------------
>
> Key: JBRULES-1032
> URL: http://jira.jboss.com/jira/browse/JBRULES-1032
> Project: JBoss Rules
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 4.0.0.GA
> Environment: Testing 4.0.0 on Windows XP, the released version.
> Reporter: Andrew Harris
> Assigned To: Edson Tirelli
> Fix For: 4.0.1
>
> Attachments: Hash Error Case.zip
>
>
> I have a rule that checks for an object field being null as below
> when
> m : Message( statusMessage == null )
> When the field is null, and there are three or more rules in the rule file, then I get a NPE at
> org.drools.reteoo.CompositeObjectSinkAdapter$HashKey.equals(CompositeObjectSinkAdapter.java:608)
> This line is
> return (this.index == other.index) && (this.ovalue.equals( otherValue ));
> and ovalue.equals is null, causing the NullPointerException.
> This only happens if there are 3 or more rules, because the default configuration says that the HASH_THRESHOLD_SYSTEM_PROPERTY is 3.
> The full stack trace is below, and I have attached a simple test case. Note that the test case was originally tested in 3.0.6 and works fine there.
> 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.DroolsTest.runTest(Unknown Source)
> at com.sample.DroolsTest.testRules(Unknown Source)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:421)
> at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:912)
> at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:766)
--
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