[
http://jira.jboss.com/jira/browse/JBRULES-1092?page=all ]
Edson Tirelli closed JBRULES-1092.
----------------------------------
Fix Version/s: 4.0.1
Resolution: Done
Problem was that Class.getName() method returns the binary name of the class and
Class.getCanonicalName() is a java 1.5 method.
Implemented a helper function to generate the canonical name for 1.4 classes.
Unit test and integration tests added.
Thanks for reporting and providing test case.
Invalid Java code generated from 'accumulate' function with
nested classes
--------------------------------------------------------------------------
Key: JBRULES-1092
URL:
http://jira.jboss.com/jira/browse/JBRULES-1092
Project: JBoss Rules
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 4.0.0.GA
Reporter: Alexandre Gattiker
Assigned To: Edson Tirelli
Fix For: 4.0.1
Steps to reproduce:
- Create a sample new project with the Eclipse plugin
- Add following rule to the .drl file
- Execute DroolsTest
rule "AccumulateTest"
no-loop true
when
$d: Double()
from accumulate ( m : Message( $value: status ),
init( double total = 0; ),
action( total += $status ),
result( total )
)
then
System.out.println( "ok" );
end
Exception is:
org.drools.rule.InvalidRulePackage: Rule Compilation error : [Rule name=AccumulateTest,
agendaGroup=MAIN, salience=0, no-loop=true]
com/sample/Rule_AccumulateTest_0.java (27:834) : The nested type
com.sample.DroolsTest$Message cannot be referenced using its binary name
com/sample/Rule_AccumulateTest_0.java (27:869) : The nested type
com.sample.DroolsTest$Message cannot be referenced using its binary name
com/sample/Rule_AccumulateTest_0.java (29:1027) : Syntax error, insert ";" to
complete Statement
com/sample/Rule_AccumulateTest_0.java (29:1027) : $status cannot be resolved
com/sample/Rule_AccumulateTest_0.java (39:1483) : The nested type
com.sample.DroolsTest$Message cannot be referenced using its binary name
com/sample/Rule_AccumulateTest_0.java (39:1518) : The nested type
com.sample.DroolsTest$Message cannot be referenced using its binary name
at org.drools.rule.Package.checkValidity(Package.java:408)
at org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java:288)
at com.sample.DroolsTest.readRule(DroolsTest.java:64)
at com.sample.DroolsTest.main(DroolsTest.java:21)
--
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