Hi, I am getting a very puzzling NullPointerException when I call modify() on my object in working memory. I have the following rule:

rule "Assign awardable activity to default context"
	ruleflow-group "select qualified activity"
	when
		$context : ResultContext( activity != null &&
			activity.qualifiedActivity == null )
		$candidate : CandidateMatch( member != null && 
			match != null &&
			$awardable : match &&
			eval( match instanceof QualifiedActivity) &&
			eval(((QualifiedActivity)$awardable).isAwardable()))
		$qa : QualifiedActivity() from $candidate.match
	then
		modify($context){
			getActivity().setQualifiedActivity($qa);
		}		
end

The NullPointerException happens right at modify($context). I can clearly see the $context object in working memory and this rule wouldn't fire without this object having a value anyway.

Here is some activation info for what it's worth:

[Activation rule=Assign awardable activity to default context, tuple=[fact 0:129:21218203:1244484333:141:QualifiedActivity[groupID=TRGT41,activityID=OHC.Self.Physical,evaluateGoal=false,shared=false,awardable=true]] [fact 0:54:30003599:-98318528:138:com.biperf.optumhealth.domain.CandidateMatch@fa2943b2] [fact 0:1:24821875:24821875:1:com.biperf.optumhealth.rules.ResultContext@17ac073] ]

Stacktrace:

org.drools.runtime.rule.ConsequenceException: java.lang.NullPointerException at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:980) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:917) at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1126) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:697) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:663) at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:200) at com.biperf.optumhealth.service.impl.RuleEngineSession.execute(RuleEngineSession.java:89) at com.biperf.optumhealth.rules.qualifiedactivity.TestQualifiedActivity.testFindQualifiedActivity(TestQualifiedActivity.java:88) 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.internal.runners.TestMethod.invoke(TestMethod.java:59) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 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) Caused by: java.lang.NullPointerException at org.drools.reteoo.RightInputAdapterNode.retractLeftTuple(RightInputAdapterNode.java:153) at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:131) at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:42) at org.drools.reteoo.ExistsNode.retractLeftTuple(ExistsNode.java:356) at org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateRetractLeftTuple(CompositeLeftTupleSinkAdapter.java:159) at org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateRetractLeftTupleDestroyRightTuple(CompositeLeftTupleSinkAdapter.java:80) at org.drools.reteoo.FromNode.retractLeftTuple(FromNode.java:176) at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:131) at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateRetractLeftTupleDestroyRightTuple(SingleLeftTupleSinkAdapter.java:54) at org.drools.reteoo.FromNode.retractLeftTuple(FromNode.java:176) at org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:234) at org.drools.reteoo.EntryPointNode.retractObject(EntryPointNode.java:195) at org.drools.common.AbstractWorkingMemory.modifyRetract(AbstractWorkingMemory.java:1296) at org.drools.base.DefaultKnowledgeHelper.modifyRetract(DefaultKnowledgeHelper.java:184) at org.drools.base.DefaultKnowledgeHelper.modifyRetract(DefaultKnowledgeHelper.java:180) at com.biperf.optumhealth.Rule_Assign_awardable_activity_to_default_context_0.consequence(Rule_Assign_awardable_activity_to_default_context_0.java:21) at com.biperf.optumhealth.Rule_Assign_awardable_activity_to_default_context_0ConsequenceInvoker.evaluate(Rule_Assign_awardable_activity_to_default_context_0ConsequenceInvoker.java:28) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:971) ... 29 more


View this message in context: NullPointerException @ modify()
Sent from the Drools - User mailing list archive at Nabble.com.