Author: dwoods
Date: Wed Oct 13 16:06:14 2010
New Revision: 1022161

URL: http://svn.apache.org/viewvc?rev=1022161&view=rev
Log:
add closeEM() helper which handles open transactions before closing the EM

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

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java?rev=1022161&r1=1022160&r2=1022161&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/AbstractPersistenceTestCase.java
 Wed Oct 13 16:06:14 2010
@@ -239,6 +239,23 @@ public abstract class AbstractPersistenc
     }
 
     /**
+     * Safely close the given EM
+     * 
+     * @param em
+     * @return
+     */
+    protected boolean closeEM(EntityManager em) {
+        if (em == null || !em.isOpen()) {
+            return false;
+        }
+        if (em.getTransaction().isActive()) {
+            em.getTransaction().rollback();
+        }
+        em.close();
+        return true;
+    }
+    
+    /**
      * Closes all open entity managers after first rolling back any open 
transactions.
      */
     protected void closeAllOpenEMs(EntityManagerFactory emf) {
@@ -249,10 +266,7 @@ public abstract class AbstractPersistenc
         for (Broker b : ((AbstractBrokerFactory) 
JPAFacadeHelper.toBrokerFactory(emf)).getOpenBrokers()) {
             if (b != null && !b.isClosed()) {
                 EntityManager em = JPAFacadeHelper.toEntityManager(b);
-                if (em.getTransaction().isActive()) {
-                    em.getTransaction().rollback();
-                }
-                em.close();
+                closeEM(em);
             }
         }
     }
@@ -327,10 +341,7 @@ public abstract class AbstractPersistenc
         } catch (Exception e) {
             // ignore
         } finally {
-            if (em.getTransaction().isActive()) {
-                em.getTransaction().rollback();
-            }
-            em.close();
+            closeEM(em);
         }
     }
 


Reply via email to