OPENJPA-1157 improved EMF cleanup

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@792135 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Donald Woods 2009-07-08 13:41:44 +00:00
parent dcaa13461e
commit ba49a316e7
1 changed files with 24 additions and 26 deletions

View File

@ -21,6 +21,7 @@ import org.apache.openjpa.conf.OpenJPAConfiguration;
import org.apache.openjpa.lib.log.Log; import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.persistence.OpenJPAEntityManager; import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory; import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
import org.apache.openjpa.persistence.OpenJPAPersistence; import org.apache.openjpa.persistence.OpenJPAPersistence;
import org.apache.openjpa.persistence.test.SingleEMFTestCase; import org.apache.openjpa.persistence.test.SingleEMFTestCase;
@ -142,8 +143,8 @@ public class TestConstraints extends SingleEMFTestCase {
// Part 1 - Create an invalid entity // Part 1 - Create an invalid entity
// create our EMF w/ props // create our EMF w/ props
OpenJPAEntityManagerFactory emf = OpenJPAPersistence OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
.createEntityManagerFactory( OpenJPAPersistence.createEntityManagerFactory(
"null-none-mode", "null-none-mode",
"org/apache/openjpa/integration/validation/persistence.xml"); "org/apache/openjpa/integration/validation/persistence.xml");
assertNotNull(emf); assertNotNull(emf);
@ -167,19 +168,16 @@ public class TestConstraints extends SingleEMFTestCase {
getLog().trace("testNullDeleteIgnored() Part 1 of 2 failed"); getLog().trace("testNullDeleteIgnored() Part 1 of 2 failed");
fail("Caught unexpected exception = " + e); fail("Caught unexpected exception = " + e);
} finally { } finally {
if ((em != null) && em.isOpen()) { if (em.getTransaction().isActive()) {
if (em.getTransaction().isActive()) em.getTransaction().rollback();
em.getTransaction().rollback();
em.close();
}
if ((emf != null) && emf.isOpen()) {
emf.close();
} }
cleanup(emf);
} }
// Part 2 - Verify delete using default group does not cause Validation // Part 2 - Verify delete using default group does not cause Validation
// create our EMF w/ validation mode=CALLBACK // create our EMF w/ validation mode=CALLBACK
emf = OpenJPAPersistence.createEntityManagerFactory( emf = (OpenJPAEntityManagerFactorySPI)OpenJPAPersistence
.createEntityManagerFactory(
"null-callback-mode", "null-callback-mode",
"org/apache/openjpa/integration/validation/persistence.xml"); "org/apache/openjpa/integration/validation/persistence.xml");
assertNotNull(emf); assertNotNull(emf);
@ -203,14 +201,10 @@ public class TestConstraints extends SingleEMFTestCase {
getLog().trace("testNullDeleteIgnored() Part 2 of 2 failed"); getLog().trace("testNullDeleteIgnored() Part 2 of 2 failed");
fail("Caught unexpected exception = " + e); fail("Caught unexpected exception = " + e);
} finally { } finally {
if ((em != null) && em.isOpen()) { if (em.getTransaction().isActive()) {
if (em.getTransaction().isActive()) em.getTransaction().rollback();
em.getTransaction().rollback();
em.close();
}
if ((emf != null) && emf.isOpen()) {
emf.close();
} }
cleanup(emf);
} }
} }
@ -222,8 +216,8 @@ public class TestConstraints extends SingleEMFTestCase {
public void testNullConstraintIgnored() { public void testNullConstraintIgnored() {
getLog().trace("testNullConstraintIgnored() started"); getLog().trace("testNullConstraintIgnored() started");
// create our EMF w/ props // create our EMF w/ props
OpenJPAEntityManagerFactory emf = OpenJPAPersistence OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
.createEntityManagerFactory( OpenJPAPersistence.createEntityManagerFactory(
"null-none-mode", "null-none-mode",
"org/apache/openjpa/integration/validation/persistence.xml"); "org/apache/openjpa/integration/validation/persistence.xml");
assertNotNull(emf); assertNotNull(emf);
@ -247,14 +241,10 @@ public class TestConstraints extends SingleEMFTestCase {
getLog().trace("testNullConstraintIgnored() failed"); getLog().trace("testNullConstraintIgnored() failed");
fail("Caught unexpected exception = " + e); fail("Caught unexpected exception = " + e);
} finally { } finally {
if ((em != null) && em.isOpen()) { if (em.getTransaction().isActive()) {
if (em.getTransaction().isActive()) em.getTransaction().rollback();
em.getTransaction().rollback();
em.close();
}
if ((emf != null) && emf.isOpen()) {
emf.close();
} }
cleanup(emf);
} }
} }
@ -900,6 +890,14 @@ public class TestConstraints extends SingleEMFTestCase {
} }
} }
/**
* Helper method to remove entities and close the emf an any open em's.
* @param emf
*/
private void cleanup(OpenJPAEntityManagerFactorySPI emf) {
clear(emf);
closeEMF(emf);
}
/** /**
* Internal convenience method for getting the OpenJPA logger * Internal convenience method for getting the OpenJPA logger