Has the global (?) addressManager been initialized *before* inserting the fact?

Does findFirstAddressByTypeByPerson(..) return something != null in this (every) case?

-W 

On 10 February 2012 20:08, womuji <cmregister@gmail.com> wrote:
Hi,

I kept getting NPE for the following MVEL express in Drools rule:
---------------------------------------
rule "my Rule"
   ruleflow-group "myGroup"
   no-loop true
   when
       not Field(id=="meetingNotes")
       $student : Student()
       $homeAddress : Address() from
addressManager.findFirstAddressByTypeByPerson( new ReferenceCode("xyz"),
$student )
   then
       eventFields.put("meetingNotes",new
Field("meetingNotes",AbstractFieldConverter.formatFullAddress($homeAddress)));
end
---------------------------------------
the stack trace is:
---------------------------------------
[Error: null pointer: addressManager.findFirstAddressByTypeByPerson( new
ReferenceCode("xyz"), $student )]
[Near : {... addressManager.findFirstAddres ....}]
            ^
[Line: 1, Column: 1]
       at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:434)
       at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:141)
       at org.mvel2.ast.ASTNode.optimize(ASTNode.java:157)
       at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:113)
       at org.mvel2.MVELRuntime.execute(MVELRuntime.java:87)
       at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:122)
       at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:115)
       at org.mvel2.MVEL.executeExpression(MVEL.java:942)
       at
org.drools.base.dataproviders.MVELDataProvider.getResults(MVELDataProvider.java:111)
       at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:140)
       at
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:197)
       at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:72)
       at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:161)
       at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:458)
       at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:386)
       at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:215)
       at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:244)
       at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:330)
       at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:291)
       at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886)
       at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:845)
       at
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)
       at
org.drools.command.runtime.rule.InsertObjectCommand.execute(InsertObjectCommand.java:84)
       at
org.drools.command.runtime.rule.InsertObjectCommand.execute(InsertObjectCommand.java:38)
       at
org.drools.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:155)
       at
org.drools.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:76)
       at
org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:264)
---------------------------------------

I'm using Drools5.3.0.Final, which in turn depends on MVEL2.1.0

Anything wrong with my MVEL expression?

Thanks in advance.


--
View this message in context: http://drools.46999.n3.nabble.com/MVEL-Expression-causing-NPE-in-MVEL-optimizer-tp3733427p3733427.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users