[jboss-jira] [JBoss JIRA] Resolved: (JBRULES-2918) MVEL issue - inline with broken since 5.0.1
Mark Proctor (JIRA)
jira-events at lists.jboss.org
Wed May 18 02:07:01 EDT 2011
[ https://issues.jboss.org/browse/JBRULES-2918?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Proctor resolved JBRULES-2918.
-----------------------------------
Fix Version/s: 5.2.0.CR1
Resolution: Done
I updated some tests to follow your example, but they passed. I'm committing those to catch any future regressions.
> MVEL issue - inline with broken since 5.0.1
> -------------------------------------------
>
> Key: JBRULES-2918
> URL: https://issues.jboss.org/browse/JBRULES-2918
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: drools-compiler
> Affects Versions: 5.1.0.FINAL, 5.1.1.FINAL
> Reporter: Damon Horrell
> Assignee: Mark Proctor
> Fix For: 5.2.0.CR1
>
>
> Rules that used to compile in 5.0.1 no longer do in 5.1.1. The MVEL "inline with operator" now doesn't support accessing objects in an outer scope.
> I have tried using Drools 5.1.1 with MVEL 2.0.10 but the error is still the same so the problem seems to be in Drools not in MVEL.
> ------------
> rule "create person"
> dialect "mvel"
> when
> raw : Map();
> then
> person = new TestPerson().{
> name = raw["First Name"] + " " + raw["Last Name"],
> dateOfBirth = stringToDate(raw["DOB"])
> };
> insert(person);
> end
> ------------
> Caused by: [Error: unable to resolve method: au.com.rpdata.processor.data.TestPerson.raw() [arglength=0]]
> [Near : {... Unknown ....}]
> ^
> [Line: 1, Column: 0]
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:932)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:592)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getCollectionProperty(ReflectiveAccessorOptimizer.java:609)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:317)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:137)
> at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:137)
> at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:111)
> at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:111)
> at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:37)
> at org.mvel2.optimizers.impl.refl.nodes.WithAccessor.processWith(WithAccessor.java:64)
> at org.mvel2.optimizers.impl.refl.nodes.WithAccessor.getValue(WithAccessor.java:50)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getWithProperty(ReflectiveAccessorOptimizer.java:409)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:320)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileConstructor(ReflectiveAccessorOptimizer.java:1141)
> at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeObjectCreation(ReflectiveAccessorOptimizer.java:1070)
> at org.mvel2.ast.NewObjectNode.getReducedValueAccelerated(NewObjectNode.java:160)
> at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:37)
> at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:89)
> at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
> at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:104)
> at org.mvel2.MVEL.executeExpression(MVEL.java:1001)
> at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:103)
> at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:917)
> at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:856)
> at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1071)
> at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:785)
> at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:751)
> at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)
> at au.com.rpdata.processor.impl.DroolsMapTransformer.transform(DroolsMapTransformer.java:110)
> ... 29 more
> ------
> Can you please advise if there is a syntax workaround to inform the compiler that the object referred to is in a different scope?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list