[
http://jira.jboss.com/jira/browse/JBRULES-1046?page=comments#action_12370812 ]
Arjun Dhar commented on JBRULES-1046:
-------------------------------------
Thanks Edson. Will do some more analysis to ensure I can reproduce the problem for you.
There is a lot of code so cant send it all, so will try and find it.
This is not a forum so wont ask a question, but related to you comment "lazy
cached", even if it is lazy cached, it cant afford to be that lazy that when an
object is called by the Rule, it still returns null. :o) Could that be the problem?
For now we are good. Thank you, appreciate it.
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