[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1046) Business Object returns null due to Shadow Fact, unless declared final
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Tue Jul 31 09:50:49 EDT 2007
[ 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
More information about the jboss-jira
mailing list