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 made changes - 04/Oct/06 02:49 AM
Field Original Value New Value
Assignee Craig Russell [ clr ]
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 made changes - 04/Oct/06 09:20 PM
Affects Version/s JDO 2 final [ 12310830 ]
Fix Version/s JDO 2 maintenance release 1 [ 12310923 ]
Fix Version/s JDO 2.0 TCK challenge fixes [ 12312093 ]
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.

Repository Revision Date User Message
ASF #462525 Tue Oct 10 19:43:35 UTC 2006 clr JDO-427 JDO-429 JDO-431
StateTransitionsReturnedObjects.java is modified to make several state transitions
UNSPECIFIED, since the specification is ambiguous.
These changes apply only to the branches/2.0.1, as we intend to clarify the
specification for JDO 2.1 maintenance release.
Files Changed
MODIFY /db/jdo/branches/2.0.1/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java

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.

Craig Russell made changes - 10/Oct/06 07:44 PM
Status Open [ 1 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]
Fix Version/s JDO 2 maintenance release 1 [ 12310923 ]