### Eclipse Workspace Patch 1.0 #P jdo-tck Index: src/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java =================================================================== --- src/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java (revision 1715631) +++ src/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java (working copy) @@ -68,11 +68,15 @@ private VersionedPCPoint p3 = new VersionedPCPoint(3,3); // this will be deleted in tx1, updated in tx2 private VersionedPCPoint p4 = new VersionedPCPoint(4,4); // this will be deleted in tx1, deleted in tx2 private VersionedPCPoint p5 = new VersionedPCPoint(5,5); // this will be unchanged in tx1, updated in tx2, verified in tx3 + private VersionedPCPoint p6 = new VersionedPCPoint(6,6); // this will be marked new in tx1, updated in tx2, verified in tx3 + private VersionedPCPoint p7 = new VersionedPCPoint(7,7); // this will be marked new in tx1, deleted in tx2, verified in tx3 private Object p1oid = null; private Object p2oid = null; private Object p3oid = null; private Object p4oid = null; private Object p5oid = null; + private Object p6oid = null; + private Object p7oid = null; /** * @see JDO_Test#localSetUp() @@ -124,41 +128,56 @@ pm1.makePersistent(p3); pm1.makePersistent(p4); pm1.makePersistent(p5); + pm1.makePersistent(p6); + pm1.makePersistent(p7); p1oid = pm1.getObjectId(p1); p2oid = pm1.getObjectId(p2); p3oid = pm1.getObjectId(p3); p4oid = pm1.getObjectId(p4); p5oid = pm1.getObjectId(p5); + p6oid = pm1.getObjectId(p6); + p7oid = pm1.getObjectId(p7); tx1.commit(); // update/delete the instances in tx1 tx1.begin(); - VersionedPCPoint p1tx1 = (VersionedPCPoint)pm1.getObjectById(p1oid, true); - VersionedPCPoint p2tx1 = (VersionedPCPoint)pm1.getObjectById(p2oid, true); - VersionedPCPoint p3tx1 = (VersionedPCPoint)pm1.getObjectById(p3oid, true); - VersionedPCPoint p4tx1 = (VersionedPCPoint)pm1.getObjectById(p4oid, true); + VersionedPCPoint p1tx1 = (VersionedPCPoint)pm1.getObjectById(p1oid); + VersionedPCPoint p2tx1 = (VersionedPCPoint)pm1.getObjectById(p2oid); + VersionedPCPoint p3tx1 = (VersionedPCPoint)pm1.getObjectById(p3oid); + VersionedPCPoint p4tx1 = (VersionedPCPoint)pm1.getObjectById(p4oid); + VersionedPCPoint p6tx1 = (VersionedPCPoint)pm1.getObjectById(p6oid); + VersionedPCPoint p7tx1 = (VersionedPCPoint)pm1.getObjectById(p7oid); p1tx1.setX(101); p2tx1.setX(201); pm1.deletePersistent(p3tx1); pm1.deletePersistent(p4tx1); + p6tx1.setX(602); + pm1.deletePersistent(p7tx1); // update/delete the instances in tx2 tx2.begin(); - VersionedPCPoint p1tx2 = (VersionedPCPoint)pm2.getObjectById(p1oid, true); - VersionedPCPoint p2tx2 = (VersionedPCPoint)pm2.getObjectById(p2oid, true); - VersionedPCPoint p3tx2 = (VersionedPCPoint)pm2.getObjectById(p3oid, true); - VersionedPCPoint p4tx2 = (VersionedPCPoint)pm2.getObjectById(p4oid, true); - VersionedPCPoint p5tx2 = (VersionedPCPoint)pm2.getObjectById(p5oid, true); + VersionedPCPoint p1tx2 = (VersionedPCPoint)pm2.getObjectById(p1oid); + VersionedPCPoint p2tx2 = (VersionedPCPoint)pm2.getObjectById(p2oid); + VersionedPCPoint p3tx2 = (VersionedPCPoint)pm2.getObjectById(p3oid); + VersionedPCPoint p4tx2 = (VersionedPCPoint)pm2.getObjectById(p4oid); + VersionedPCPoint p5tx2 = (VersionedPCPoint)pm2.getObjectById(p5oid); + VersionedPCPoint p6tx2 = (VersionedPCPoint)pm2.getObjectById(p6oid); + VersionedPCPoint p7tx2 = (VersionedPCPoint)pm2.getObjectById(p7oid); p1tx2.setX(102); pm2.deletePersistent(p2tx2); p3tx2.setX(202); pm2.deletePersistent(p4tx2); p5tx2.setX(502); // this change must not be committed + pm2.makeTransient(p6tx2); //set state to p-new + pm2.makePersistent(p6tx2); + pm2.makeTransient(p7tx2); //set state to p-new + pm2.makePersistent(p7tx2); Set expectedFailedObjects = new HashSet(); expectedFailedObjects.add(p1tx2); expectedFailedObjects.add(p2tx2); expectedFailedObjects.add(p3tx2); expectedFailedObjects.add(p4tx2); + expectedFailedObjects.add(p6tx2); // commit tx1 (should succeed) tx1.commit(); @@ -214,9 +233,13 @@ VersionedPCPoint p1tx3 = (VersionedPCPoint)pm3.getObjectById(p1oid, true); VersionedPCPoint p2tx3 = (VersionedPCPoint)pm3.getObjectById(p2oid, true); VersionedPCPoint p5tx3 = (VersionedPCPoint)pm3.getObjectById(p5oid, true); + VersionedPCPoint p6tx3 = (VersionedPCPoint)pm3.getObjectById(p6oid, true); + VersionedPCPoint p7tx3 = (VersionedPCPoint)pm3.getObjectById(p7oid, true); verify(p1tx3, 101); verify(p2tx3, 201); verify(p5tx3, 5); + verify(p6tx3, 6); + verify(p7tx3, 7); tx3.commit(); tx3 = null; }