[
https://issues.jboss.org/browse/JBRULES-3390?page=com.atlassian.jira.plug...
]
RH Bugzilla Integration commented on JBRULES-3390:
--------------------------------------------------
Justin Holmes <jholmes(a)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