[rules-users] ArrayIndexOutOfBounds exception when predicate parameter is varArgs

Martin A wmlsub at gmail.com
Tue Jan 17 13:23:15 EST 2012


Hello, guys,

I've got a rule which states:

rule "quest_reach_level_1_in_any_category_accomplished"
    when
        $gsc : GameStateController(hasEventOccurred("eventId") &&
!hasEventOccurred("otherEventId") && hasAnyEventOccurred("param1",
"param2", "param3", "param4", "param5", "param6", "param7", "param8",
"param9", "param10", "param11", "param12"))
        $response : Response()
    then
        ... some business logic
end

which ends up with:

Caused by: org.drools.RuntimeDroolsException: Exception executing predicate
hasA
nyEventOccurred("level1_love", "level1_friendship", "level1_prosperity",
"level1
_charisma", "level1_willpower", "level1_wisdom", "level1_entertainment",
"level1
_adventure", "level1_inspiration", "level1_harmony",
"level1_lightheartedness",
"level1_confidence")
        at
org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:298)
        at org.drools.reteoo.AlphaNode.modifyObject(AlphaNode.java:145)
        at
org.drools.reteoo.SingleObjectSinkAdapter.propagateModifyObject(SingleObjectSinkAdapter.java:68)
        at org.drools.reteoo.AlphaNode.modifyObject(AlphaNode.java:149)
        at
org.drools.reteoo.SingleObjectSinkAdapter.propagateModifyObject(SingleObjectSinkAdapter.java:68)
        at org.drools.reteoo.AlphaNode.modifyObject(AlphaNode.java:149)
        at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:468)
        at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:436)
        at
org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:288)
        at
org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:271)
        at
org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:459)
        at
org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:363)
        at
org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:298)
        at
org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:306)
        at
org.drools.base.ModifyInterceptor.doAfter(ModifyInterceptor.java:59)
        at
org.mvel2.ast.InterceptorWrapper.getReducedValueAccelerated(InterceptorWrapper.java:38)
        at org.mvel2.MVELRuntime.execute(MVELRuntime.java:87)
        at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:122)
        at org.mvel2.MVEL.executeExpression(MVEL.java:930)
        at
org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:105)
        at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1091)
        ... 47 more
Caused by: java.lang.RuntimeException: cannot invoke method:
hasAnyEventOccurred
        at
org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.getValue(MethodAccessor.java:62)
        at
org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:106)
        at org.mvel2.MVELRuntime.execute(MVELRuntime.java:87)
        at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:122)
        at org.mvel2.MVEL.executeExpression(MVEL.java:930)
        at
org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:100)
        at
org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:291)
        ... 67 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 12
        at
org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.executeAll(MethodAccessor.java:148)
        at
org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.getValue(MethodAccessor.java:47)
        ... 73 more

I'm using Drools 5.3.0.Final and it fails when it comes to evaluating the
predicate hasAnyEventOccurred(String... varArgs).

Thanks,
Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120117/a2fe3534/attachment.html 


More information about the rules-users mailing list