[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