[jboss-jira] [JBoss JIRA] (JBRULES-3390) Drools java.lang.NullPointerException at org.drools.reteoo.RuleTerminalNode
RH Bugzilla Integration (JIRA)
jira-events at lists.jboss.org
Wed Mar 14 14:55:47 EDT 2012
[ https://issues.jboss.org/browse/JBRULES-3390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12676870#comment-12676870 ]
RH Bugzilla Integration commented on JBRULES-3390:
--------------------------------------------------
Justin Holmes <jholmes at redhat.com> made a comment on [bug 803460|https://bugzilla.redhat.com/show_bug.cgi?id=803460]
This bug is preventing our Client from adopting BRMS. I need a fix ASAP!
Description of problem:
NPE being thrown when compiled KnowledgdePackages are being added to a KnowledgeBase.
Version-Release number of selected component (if applicable):
5.3.0.BRMS-ER4; 5.3.1.Final
How reproducible:
Bug can be reliably reproduced when two variables are bound on the LHS and are in separate OR conditions and then both bound variables are referenced in the RHS. If you find a case where it happens, it will happen everytime. See the community bug for a simpler case. My case in pseudocode is below:
import org.A;
import org.B;
import org.C;
When
$A : A(id==1) &&
( B(id==1) ||
( B(id==2) && $B : B (id==3) )
)
Then
insert new C($A.id, $B.id)
End
Actual results:
NPE when building KnowledgeBase
Expected results:
KnowledgeBase builds successfully.
> Drools java.lang.NullPointerException at org.drools.reteoo.RuleTerminalNode
> ---------------------------------------------------------------------------
>
> Key: JBRULES-3390
> URL: https://issues.jboss.org/browse/JBRULES-3390
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 5.3.0.Final
> Environment: eclipse 3.6, Drools 5.3, jdk1.6.0_25_x64
> Reporter: Alberto Rugnone
> Assignee: Mark Proctor
>
> My application has to monitor when a magnetic contact is activated and when it is contact released event has to be retracted. And viceversa. Here is my rule and the big null pointer I have. Any helps will be very appreciated! Thank you a lot!!
> rule "contact activated vs contact released" salience 0 no-loop true
> when
> $contact_activated : Event(type == EventType.CONTACT_ACTIVATED) ||
>
> $contact_released : Event(type == EventType.CONTACT_RELEASED)
> then
>
> if($contact_activated!= null) {
> retract($contact_activated);
> } else {
> retract($contact_released);
> }
> end
> and
> I have
> java.lang.NullPointerException
> at org.drools.reteoo.RuleTerminalNode$SortDeclarations.compare(RuleTerminalNode.java:477)
> at org.drools.reteoo.RuleTerminalNode$SortDeclarations.compare(RuleTerminalNode.java:473)
> at java.util.Arrays.mergeSort(Arrays.java:1270)
> at java.util.Arrays.sort(Arrays.java:1210)
> at org.drools.reteoo.RuleTerminalNode.<init>(RuleTerminalNode.java:119)
> at org.drools.RuleActivationListenerFactory.createActivationListener(RuleActivationListenerFactory.java:21)
> at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:157)
> at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:123)
> at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:110)
> at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:441)
> at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:821)
> at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:555)
> at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:458)
> at org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:150)
> at it.ipiu.pch.sel.RuleTest.before(RuleTest.java:1272)
> 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:597)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
> at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list