Hi,

please find the patch for JDO-47 attached.

As I pointed out in my previous mail, the meta data bug was already fixed by JDO-13. This patch fixes the non-transactional read requests in 3 of the 4 classes.

Regards,
Michael
--
-------------------------------------------------------------------
Michael Watzek                  [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]        Buelowstr. 66
Tel.:  ++49/30/235 520 36       10783 Berlin - Germany
Fax.:  ++49/30/217 520 12       http://www.spree.de/
-------------------------------------------------------------------
Index: 
test/java/org/apache/jdo/tck/lifecycle/ObjectIdNotModifiedWhenObjectIdInstanceModified.java
===================================================================
--- 
test/java/org/apache/jdo/tck/lifecycle/ObjectIdNotModifiedWhenObjectIdInstanceModified.java
 (revision 190413)
+++ 
test/java/org/apache/jdo/tck/lifecycle/ObjectIdNotModifiedWhenObjectIdInstanceModified.java
 (working copy)
@@ -67,23 +67,31 @@
     }
     
        public void test() throws Exception {
-               Extent extent = pm.getExtent(StateTransitionObj.class, false);
-               Iterator iter = extent.iterator();
-               if( !iter.hasNext() ){
-                       fail(ASSERTION_FAILED,
-                                "Extent for StateTransitionObj should not be 
empty");
-               }
-               extent.close(iter);
-
-               for (int i=0; i<NUM_OBJECTS; i++)
-               {
-                       Object objId=pm.getObjectId(obj[i]);
-                       mangleObject(objId);
-                       Object objId2 = pm.getObjectId(obj[i]); // get another 
ObjectId copy
-                       if (objId.equals(objId2))
-                               fail(ASSERTION_FAILED,
-                                        "object Id has been changed");
-               }
+        pm.currentTransaction().begin();
+        try {
+               Extent extent = pm.getExtent(StateTransitionObj.class, false);
+               Iterator iter = extent.iterator();
+               if( !iter.hasNext() ){
+                       fail(ASSERTION_FAILED,
+                                "Extent for StateTransitionObj should not be 
empty");
+               }
+               extent.close(iter);
+    
+               for (int i=0; i<NUM_OBJECTS; i++)
+               {
+                       Object objId=pm.getObjectId(obj[i]);
+                       mangleObject(objId);
+                       Object objId2 = pm.getObjectId(obj[i]); // get another 
ObjectId copy
+                       if (objId.equals(objId2))
+                               fail(ASSERTION_FAILED,
+                                        "object Id has been changed");
+               }
+            pm.currentTransaction().commit();
+        } finally {
+            if (pm!=null && pm.currentTransaction().isActive()) {
+                pm.currentTransaction().rollback();
+            }
+        }
        }
 
        private Object[] generatePersistentInstances()
Index: 
test/java/org/apache/jdo/tck/lifecycle/MultiplePMsReturnInstancesRepresentingSamePC.java
===================================================================
--- 
test/java/org/apache/jdo/tck/lifecycle/MultiplePMsReturnInstancesRepresentingSamePC.java
    (revision 190413)
+++ 
test/java/org/apache/jdo/tck/lifecycle/MultiplePMsReturnInstancesRepresentingSamePC.java
    (working copy)
@@ -78,7 +78,9 @@
                        pm2 = pmf.getPersistenceManager();
                        pm3 = pmf.getPersistenceManager();
 
-                       Extent extent = pm.getExtent(StateTransitionObj.class, 
false);
+            pm.currentTransaction().begin();
+
+            Extent extent = pm.getExtent(StateTransitionObj.class, false);
                        Iterator iter = extent.iterator();
                        if( !iter.hasNext() ){
                                fail(ASSERTION_FAILED,
@@ -110,8 +112,14 @@
                                                 "Object Ids are not equal. 
objId1=" + objId1 + " objId2= " + objId2 + " objId3= " + objId3);
                                }
                        }
+            
+            pm.currentTransaction().commit();
            }
            finally {
+            if (pm!=null && pm.currentTransaction().isActive())
+            {
+                pm.currentTransaction().rollback();
+            }
                if (pm2!=null && !pm2.isClosed())
                {
                    pm2.close();
Index: 
test/java/org/apache/jdo/tck/lifecycle/PMReturnsIdenticalInstancesForEqualObjIds.java
===================================================================
--- 
test/java/org/apache/jdo/tck/lifecycle/PMReturnsIdenticalInstancesForEqualObjIds.java
       (revision 190413)
+++ 
test/java/org/apache/jdo/tck/lifecycle/PMReturnsIdenticalInstancesForEqualObjIds.java
       (working copy)
@@ -67,25 +67,33 @@
     }
     
        public void test() {
-       Extent extent = pm.getExtent(StateTransitionObj.class, false);
-       Iterator iter = extent.iterator();
-       if( !iter.hasNext() ){
-               fail(ASSERTION_FAILED,
-                                "Extent for StateTransitionObj should not be 
empty");
-       }
-               extent.close(iter);
-
-               for (int i=0; i<NUM_OBJECTS; i++)
-               {
-                       Object objId=pm.getObjectId(obj[i]);
-                       // check that getObjectById returns identical instance
-                       Object obj2 = pm.getObjectById(objId, true);
-                       if (!(obj2==obj[i]))
-                       {
-                               fail(ASSERTION_FAILED,
-                                        "objects with OId = " + objId + " are 
not identical");
-                       }
-               }
+        pm.currentTransaction().begin();
+        try {
+               Extent extent = pm.getExtent(StateTransitionObj.class, false);
+               Iterator iter = extent.iterator();
+               if( !iter.hasNext() ){
+                       fail(ASSERTION_FAILED,
+                                "Extent for StateTransitionObj should not be 
empty");
+               }
+               extent.close(iter);
+    
+               for (int i=0; i<NUM_OBJECTS; i++)
+               {
+                       Object objId=pm.getObjectId(obj[i]);
+                       // check that getObjectById returns identical instance
+                       Object obj2 = pm.getObjectById(objId, true);
+                       if (!(obj2==obj[i]))
+                       {
+                               fail(ASSERTION_FAILED,
+                                        "objects with OId = " + objId + " are 
not identical");
+                       }
+               }
+            pm.currentTransaction().commit();
+        } finally {
+            if (pm!=null && pm.currentTransaction().isActive()) {
+                pm.currentTransaction().rollback();
+            }
+        }
        }
 
        private Object[] generatePersistentInstances()

Reply via email to