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()