]
Mario Fusco resolved JBRULES-3392.
----------------------------------
Resolution: Done
Fixed in MVEL
strict mode evaluation taking interface instead of class
--------------------------------------------------------
Key: JBRULES-3392
URL:
https://issues.jboss.org/browse/JBRULES-3392
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: drools-compiler (expert)
Affects Versions: 5.3.1.Final
Environment: java 1.6.0_29 on windows 7
Reporter: Lubos Pechac
Assignee: Mario Fusco
Fix For: 5.3.2.Final, 5.4.0.Final
Attachments: DroolsTest.zip
I am getting a compilation error with my drl, that worked in 5.0.1:
Unable to Analyse Expression las.id == $las.id:
[Error: unable to resolve method using strict-mode: piag.entityinterface.ILink.id()]
[Near : {... las.id == $las.id ....}]
^
[Line: 42, Column: 30] : [Rule name='rule1']
here's the rule:
rule "rule1"
when
$las : Link(name == "GA1")
$pi : PayItem(las.id == $las.id, amount > 0, comparisonType == "ECHT")
then ...
interface ILink is empty:
public interface ILink { }
class Link extends ILink adds a few attributes including id, name, amount,
comparisonType...
interface IPayItem has this getter:
public ILink getLas();
class PayItem overrides this getter:
@Override
public Link getLas() {
return this.las;
}
It seems like drools is incorrectly treating $pi as IPayItem. IPayItem.getLas() returns
ILink which does not have method id(), as the message says. But PayItem.getLas() returns
Link which does have attribute id.
I didn't specify anywhere that $pi is IPayItem so why does it do this?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: