[
http://jira.jboss.com/jira/browse/JBRULES-1046?page=comments#action_12370565 ]
Edson Tirelli commented on JBRULES-1046:
----------------------------------------
Arjun,
I was not able to reproduce your problem. I added an integration test to the code base
anyway (look at the commits for the ticket to see it).
You need to be careful when debugging shadow proxies, because the attributes are lazy
cached, and it may appear that it is set to null but in fact it is not.
Can you please attach a complete self contained test case to this ticket that shows the
problem you are seeing?
Thanks.
Business Object returns null due to Shadow Fact, unless declared
final
----------------------------------------------------------------------
Key: JBRULES-1046
URL:
http://jira.jboss.com/jira/browse/JBRULES-1046
Project: JBoss Rules
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Reteoo
Affects Versions: 4.0.0.MR3, 4.0.0.GA
Environment: Windows, X86 based machine
Reporter: Arjun Dhar
Assigned To: Edson Tirelli
Fix For: 4.0.1
SCENARIO
-----------------
Define an Object 'BooleanConfiguration'
public class BooleanConfiguration extends BusinessObject {
String paramName; //with setter and getter
Boolean value; //with setter and getter
Client client; //with setter and getter -- Client is an object that composes of String
clientId;
}
*BusinessObject is just a generic Object that maintains a reference to the Assertion List
from where it came (Ref. to the container object, Collection).
Action(s):
-------------
1. initialize the object with a Parameter and Value (Hard code to test) -- Set
2. Execute against a Rule:
When
config: BooleanConfiguration(value==true)
Then
//Do something
end
EXECUTION NOTES:
-------------------------------
1. I asserted this object and the rule was not executing as I expected.
2. I put a break point in the object, and found that it set it correctly but
whenenver the rule engine called the get method the vaue of the object was null.
3. I traced this the place where it creates shadows in Rete.java.
I had observed a similar behaviour in version 3.1 or 3.6 (if there was a 3.6).
it was more prolific then.
4. I made the class 'final' (This prevents a shadow from being created), and
voila
my rule worked as expected.
Note: None of the other objects needed a final, but had comeplex associations.
But this particular object does not run, unless declared final.
--
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