[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1438) FactTemplate Property Access leads to RuleBuilder Exception

greywind (JIRA) jira-events at lists.jboss.org
Mon Jan 28 02:02:21 EST 2008


    [ http://jira.jboss.com/jira/browse/JBRULES-1438?page=comments#action_12397128 ] 
            
greywind commented on JBRULES-1438:
-----------------------------------

When I try to access the property in the consequence itself I do get the following exception during fireAllRules:

template Settlement
	String InstrumentType
	String InstrumentName
end

rule "TestEntity"
dialect "mvel"
	when
		$s : Settlement(InstrumentType == "BOND")
	then 
		System.out.println("Found: " + $s.InstrumentName);
end

org.mvel.CompileException: unable to resolve property: InstrumentName
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:288)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
	at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:29)
	at org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:77)
	at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:26)
	at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)
	at org.mvel.ExecutableAccessor.getValue(ExecutableAccessor.java:45)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:521)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:260)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
	at org.mvel.ast.LiteralDeepPropertyNode.getReducedValueAccelerated(LiteralDeepPropertyNode.java:28)
	at org.mvel.MVELRuntime.execute(MVELRuntime.java:88)
	at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)
	at org.mvel.MVEL.executeExpression(MVEL.java:235)
	at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:47)
	at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
	at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
	at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:471)
	at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:433)
	at org.drools.entity.EntityTest.main(EntityTest.java:70)
Caused by: org.mvel.PropertyAccessException: unable to resolve property: InstrumentName
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:382)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:257)
	... 19 more
Exception in thread "main" org.drools.spi.ConsequenceException: org.mvel.CompileException: unable to resolve property: InstrumentName
	at org.drools.base.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:14)
	at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554)
	at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
	at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:471)
	at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:433)
	at org.drools.entity.EntityTest.main(EntityTest.java:70)
Caused by: org.mvel.CompileException: unable to resolve property: InstrumentName
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:288)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
	at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:29)
	at org.mvel.ast.PropertyASTNode.initializePropertyNode(PropertyASTNode.java:77)
	at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:26)
	at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21)
	at org.mvel.ExecutableAccessor.getValue(ExecutableAccessor.java:45)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:521)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:260)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:109)
	at org.mvel.ast.LiteralDeepPropertyNode.getReducedValueAccelerated(LiteralDeepPropertyNode.java:28)
	at org.mvel.MVELRuntime.execute(MVELRuntime.java:88)
	at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111)
	at org.mvel.MVEL.executeExpression(MVEL.java:235)
	at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:47)
	at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
	... 4 more
Caused by: org.mvel.PropertyAccessException: unable to resolve property: InstrumentName
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:382)
	at org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:257)
	... 19 more

As you can see the Property exists and from the original attachment you can also see that the property can be accessed in the rule itself....

> FactTemplate Property Access leads to RuleBuilder Exception
> -----------------------------------------------------------
>
>                 Key: JBRULES-1438
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1438
>             Project: JBoss Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Drl Parser/Builder
>    Affects Versions: 4.0.4
>            Reporter: greywind
>         Attachments: EntityTest.drl
>
>
> The only thing I do is to add the attached drl to a Package and do get the following exception:
> Exception in thread "main" org.mvel.CompileException: problem encountered at node [19] 5{1012,1042}: unable to resolve property: could not access property
> 	at org.mvel.TemplateInterpreter.execute(TemplateInterpreter.java:554)
> 	at org.mvel.TemplateInterpreter.parse(TemplateInterpreter.java:338)
> 	at org.drools.rule.builder.dialect.java.AbstractJavaBuilder.generatTemplates(AbstractJavaBuilder.java:120)
> 	at org.drools.rule.builder.dialect.java.JavaConsequenceBuilder.build(JavaConsequenceBuilder.java:118)
> 	at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:67)
> 	at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:446)
> 	at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:304)
> 	at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:167)
> 	at org.drools.entity.EntityTest.main(EntityTest.java:48)
> Caused by: org.mvel.PropertyAccessException: unable to resolve property: could not access property
> 	at org.mvel.PropertyAccessor.get(PropertyAccessor.java:170)
> 	at org.mvel.PropertyAccessor.get(PropertyAccessor.java:128)
> 	at org.mvel.ASTNode.getReducedValue(ASTNode.java:247)
> 	at org.mvel.ast.PropertyASTNode.getReducedValue(PropertyASTNode.java:36)
> 	at org.mvel.MVELInterpretedRuntime.parseAndExecuteInterpreted(MVELInterpretedRuntime.java:115)
> 	at org.mvel.MVELInterpretedRuntime.parse(MVELInterpretedRuntime.java:63)
> 	at org.mvel.TemplateInterpreter.execute(TemplateInterpreter.java:409)
> 	... 8 more
> Caused by: java.lang.reflect.InvocationTargetException
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.mvel.PropertyAccessor.getBeanProperty(PropertyAccessor.java:419)
> 	at org.mvel.PropertyAccessor.get(PropertyAccessor.java:153)
> 	... 14 more
> Caused by: org.drools.RuntimeDroolsException: This is a bug. Please report to development team: org.drools.facttemplates.FactTemplateFieldExtractor.getValue(java.lang.Object)
> 	at org.drools.facttemplates.FactTemplateFieldExtractor.getNativeReadMethod(FactTemplateFieldExtractor.java:82)
> 	at org.drools.rule.Declaration.getNativeReadMethod(Declaration.java:291)
> 	... 20 more
> Caused by: java.lang.NoSuchMethodException: org.drools.facttemplates.FactTemplateFieldExtractor.getValue(java.lang.Object)
> 	at java.lang.Class.getDeclaredMethod(Class.java:1909)
> 	at org.drools.facttemplates.FactTemplateFieldExtractor.getNativeReadMethod(FactTemplateFieldExtractor.java:79)
> 	... 21 more
> When I select dialect 'mvel' it does work however!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list