[jboss-jira] [JBoss JIRA] Assigned: (JBRULES-1388) Eval error when using multiple declarations
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Thu Jan 10 12:55:45 EST 2008
[ http://jira.jboss.com/jira/browse/JBRULES-1388?page=all ]
Edson Tirelli reassigned JBRULES-1388:
--------------------------------------
Assignee: Edson Tirelli
> Eval error when using multiple declarations
> -------------------------------------------
>
> Key: JBRULES-1388
> URL: http://jira.jboss.com/jira/browse/JBRULES-1388
> Project: JBoss Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 4.0.3
> Reporter: Hao Chen
> Assigned To: Edson Tirelli
>
> Just started testing Drools 4.0.3, and found rules like the following will cause ClassCastException when invoked
> when
> t1 : T1()
> t2 : T2()
> eval(t2.f1>0)
> then
> ...
> end
> Looked into the source code and found that: in JavaEvalBuilder.java
> final Declaration[] declarations = new Declaration[usedIdentifiers[0].size()];
> for ( int i = 0, size = usedIdentifiers[0].size(); i < size; i++ ) {
> declarations[i] = context.getDeclarationResolver().getDeclaration( (String) usedIdentifiers[0].get( i ) );
> }
> This only retrieves the declarations used in the eval, which in the example include only t2. So the Drools generated code for the eval is like:
> ...
> T2 t2 = (T2) declarations[0].getValue( (org.drools.common.InternalWorkingMemory) workingMemory, ( (org.drools.common.InternalFactHandle) tuple.get( declarations[0] ) ).getObject() );
> ...
> which cause ClassCastException at runtime because the declarations[0] passed in is actually t1.
--
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