Issue Details (XML | Word | Printable)

Key: JDO-427
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Minor Minor
Assignee: Craig Russell
Reporter: Marc Prud'hommeaux
Votes: 0
Watchers: 0
Operations

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

StateTransitionsReturnedObjects incorrectly expects detachCopy() to allow passing a detached instance

Created: 16/Sep/06 01:42 AM   Updated: 10/Oct/06 07:44 PM
Return to search
Component/s: tck2
Affects Version/s: JDO 2 final
Fix Version/s: JDO 2 TCK challenge fixes

Time Tracking:
Not Specified

Resolution Date: 10/Oct/06 07:44 PM


 Description  « Hide
Element 11 (0-based) of the "detachCopy with active tx" array in org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java asserts that a detached instance passed to detachCopy() should result in its state being unchanged. However, section 12.6.8 of the JDO 2 spec explicitly states: "If the parameter instance is detached, then JDOUserException is thrown."

To fix it to check for the correct behavior, element 11 should be changed from "UNCHANGED" to "ERROR".

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Marc Prud'hommeaux added a comment - 17/Sep/06 07:05 AM
The same goes for element 12, which is the same as above, except that it is testing that a detached-dirty instance will transition to detached-clean. The fix is to change element 11 from "DETACHED_CLEAN" to "ERROR"

Craig Russell added a comment - 04/Oct/06 02:50 AM
This is a spec bug. The sentence "If the parameter instance is detached, then JDOUserException is thrown." should be read as part of the previous paragraph that describes the behavior if a transaction is not active. In this case, detached and transient instances cannot be made persistent before detach because makePersistent requires an active transaction.

The operative behavior is "If a detachCopy method is called with an active transaction, the parameter Collection of instances is first made persistent, and the reachability algorithm is run on the instances. "

I'd like to resolve this issue as invalid, since the intent is to only throw an exception if detached and transient instances in the reachability graph cannot be made persistent (if there is no active transaction). The maintenance release will clarify the intent.

Craig Russell added a comment - 10/Oct/06 05:47 PM
Since the spec is ambiguous, I'll change the test to UNSPECIFIED for element 11 and 12, for the branches/2.0.1 but not for the trunk.

The maintenance release will move the sentence "If the parameter instance is detached, then JDOUserException is thrown" into the description of detach without an active transaction. And the test will verify that a detached-clean instance is returned as detached-clean, and a detached-dirty instance is returned as detached-clean.

Craig Russell added a comment - 10/Oct/06 07:44 PM
svn commit src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
Sending src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
Transmitting file data .
Committed revision 462525.