[rules-users] MVEL Expression causing NPE in MVEL optimizer

Wolfgang Laun wolfgang.laun at gmail.com
Sat Feb 11 03:52:32 EST 2012


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 at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120211/b73d0ede/attachment.html 


More information about the rules-users mailing list