[jboss-jira] [JBoss JIRA] Updated: (JBRULES-2975) Cannot use constant from Enum declared in class any more

Mark Proctor (JIRA) jira-events at lists.jboss.org
Thu Sep 29 03:05:34 EDT 2011


     [ https://issues.jboss.org/browse/JBRULES-2975?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mark Proctor updated JBRULES-2975:
----------------------------------

    Assignee: Edson Tirelli  (was: Mark Proctor)


> Cannot use constant from Enum declared in class any more 
> ---------------------------------------------------------
>
>                 Key: JBRULES-2975
>                 URL: https://issues.jboss.org/browse/JBRULES-2975
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: drools-compiler
>    Affects Versions: 5.2.0.M2
>            Reporter: Wolfgang Laun
>            Assignee: Edson Tirelli
>            Priority: Critical
>
> Note that this was running with a build made around 2011-02-10!
> Given the class 
> public class Triangle {
>     public enum Type {
>         INCOMPLETE, UNCLASSIFIED,
>         EQUILATERAL, ISOSCELES, RECTANGLED, ISOSCELES_RECTANGLED, ACUTE, OBTUSE;
>     }
>     private int alpha;
>     private int beta;
>     private int gamma;
>     private Type type;
>     public Triangle( int alpha, int beta ) {
>         this.alpha = alpha;
>         this.beta = beta;
>         this.type = Type.UNCLASSIFIED;
>     }
>      // getters, setter,...
> }
> and the rule
> rule equilateral
> when
>     $t: Triangle( type == Triangle.Type.UNCLASSIFIED,
>                   alpha == beta && == gamma )
> then
>     modify( $t ){ setType( Triangle.Type.EQUILATERAL ) }
> end
> this fails with
> Exception in thread "main" org.drools.RuntimeDroolsException: [Error: object is not an instance of declaring class]
> [Near : {... Triangle.Type.UNCLASSIFIED ....}]
>              ^
> [Line: 1, Column: 1]
> 	at org.drools.rule.ReturnValueRestriction.isAllowed(ReturnValueRestriction.java:258)
> 	at org.drools.rule.VariableConstraint.isAllowed(VariableConstraint.java:103)
> 	at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:134)
> 	at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)
> 	at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378)
> 	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:185)
> 	at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:143)
> 	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:332)
> 	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:293)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:905)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:864)
> 	at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:251)
> 	at rss.drools.setup.Application.insert(Application.java:141)
> 	at ex4.Main.makeFacts(Main.java:35)
> 	at rss.drools.setup.Application.execute(Application.java:83)
> 	at ex4.Main.main(Main.java:40)
> Caused by: [Error: object is not an instance of declaring class]
> [Near : {... Triangle.Type.UNCLASSIFIED ....}]
>              ^
> [Line: 1, Column: 1]
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:427)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:140)
> 	at org.mvel2.ast.ASTNode.optimize(ASTNode.java:158)
> 	at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115)
> 	at org.mvel2.MVELRuntime.execute(MVELRuntime.java:87)
> 	at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:125)
> 	at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:118)
> 	at org.mvel2.MVEL.executeExpression(MVEL.java:954)
> 	at org.drools.base.mvel.MVELReturnValueExpression.evaluate(MVELReturnValueExpression.java:88)
> 	at org.drools.rule.ReturnValueRestriction.isAllowed(ReturnValueRestriction.java:247)
> 	... 15 more
> Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:616)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:514)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:335)
> 	... 24 more

--
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