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

womuji cmregister at gmail.com
Fri Feb 10 14:08:25 EST 2012


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.



More information about the rules-users mailing list