Issue Details (XML | Word | Printable)

Key: JDO-414
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Minor Minor
Assignee: Michelle Caisse
Reporter: Marc Prud'hommeaux
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JDO

CallingJdoPreclear tries to add the same instance to multiple 1-M relations

Created: 30/Aug/06 07:46 AM   Updated: 14/Nov/06 11:25 PM
Return to search
Component/s: tck2
Affects Version/s: JDO 2 final
Fix Version/s: JDO 2 maintenance release 1

Time Tracking:
Not Specified

Resolution Date: 14/Nov/06 11:25 PM


 Description  « Hide
The CallingJdoPreclear test tries to add the same instance to multiple one-to-many relations in different instances, which may result in validation errors at commit time. The code that does this is:

        primaryObj.addChild(secondaryObj); // primaryObj contains one child; secondaryObj contains none. primaryObj is now dirty
        ...
        ternaryObj.addChild(secondaryObj);

Errors can be worked around by removing secondaryObj from primaryObj.children before adding it to ternaryObj. E.g.:

        primaryObj.addChild(secondaryObj); // primaryObj contains one child; secondaryObj contains none. primaryObj is now dirty
        primaryObj.children.remove(secondaryObj);

        ...
        ternaryObj.addChild(secondaryObj);

Alternately, the call to "primaryObj.addChild(secondaryObj);" can probably just be skipped ... it doesn't look like it would impact the test case.


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Michelle Caisse added a comment - 14/Nov/06 09:30 PM
I agree that we should simple delete the call to "primaryObj.addChild(secondaryObj)". It doesn't appear to be necessary.

Craig Russell added a comment - 14/Nov/06 10:08 PM
If you skip the call to "primaryObj.addChild(secondaryObj)", you have to make primaryObj dirty in some other way, or you are not testing what the test case claims to be testing: new, clean, and dirty instance callbacks.

Michelle Caisse added a comment - 14/Nov/06 10:16 PM
Oops. What I meant was to skip the call to ternaryObj.addChild(secondaryObj) in the following code snippet:

        InstanceCallbackClass ternaryObj = new InstanceCallbackClass("ternaryObj", stillLaterDate, 3, 3.3, (short)-30, '3', null);
        pm.makePersistent(ternaryObj);
        ternaryObj.addChild(secondaryObj); // SKIP THIS LINE!!
        ternaryObj.addChild(primaryObj);
        t.commit();

Craig Russell added a comment - 14/Nov/06 10:54 PM
Ok, sounds good.

Michelle Caisse added a comment - 14/Nov/06 11:25 PM
Fixed with revision: 475051