Author: dwoods
Date: Mon Oct 18 20:47:43 2010
New Revision: 1024002

URL: http://svn.apache.org/viewvc?rev=1024002&view=rev
Log:
help testcases cleanup EMs they created but didn't close

Modified:
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractCachedEMFTestCase.java

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractCachedEMFTestCase.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractCachedEMFTestCase.java?rev=1024002&r1=1024001&r2=1024002&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractCachedEMFTestCase.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractCachedEMFTestCase.java
 Mon Oct 18 20:47:43 2010
@@ -18,9 +18,16 @@
  */
 package org.apache.openjpa.persistence.test;
 
+import java.lang.reflect.Modifier;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.kernel.AbstractBrokerFactory;
+import org.apache.openjpa.kernel.Broker;
+import org.apache.openjpa.meta.ClassMetaData;
+import org.apache.openjpa.persistence.JPAFacadeHelper;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
 
 /**
@@ -81,6 +88,19 @@ public abstract class AbstractCachedEMFT
                 // if the eldest should be removed, then try to close it first
                 if (oemf != null && oemf.isOpen()) {
                     try {
+                        // same code as 
AbstractPersistenceTestCase.closeAllOpenEMs()
+                        for (Broker 
b:((AbstractBrokerFactory)JPAFacadeHelper.toBrokerFactory(oemf)).getOpenBrokers())
 {
+                            if (b != null && !b.isClosed()) {
+                                EntityManager em = 
JPAFacadeHelper.toEntityManager(b);
+                                if (em == null || !em.isOpen()) {
+                                    continue;
+                                }
+                                if (em.getTransaction().isActive()) {
+                                    em.getTransaction().rollback();
+                                }
+                                em.close();
+                            }
+                        }
                         oemf.close();
                     } catch (Exception e) {
                         // no-op - eat it


Reply via email to