X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Ftest%2Fpersistence%2FJpaBuilder.java;fp=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Ftest%2Fpersistence%2FJpaBuilder.java;h=dac2789b942e8f5a79442a6b5fb80e37d7bd8fe9;hb=26f08d01bde39cd0db85f956e99aaaca3a268266;hp=dbc88dc0ad19e6559ace9ae8b094834fe6710a00;hpb=60323e15f34709e99ca5c96584e5b84f6740b176;p=utils diff --git a/test/enterprise/src/main/java/org/wamblee/test/persistence/JpaBuilder.java b/test/enterprise/src/main/java/org/wamblee/test/persistence/JpaBuilder.java index dbc88dc0..dac2789b 100644 --- a/test/enterprise/src/main/java/org/wamblee/test/persistence/JpaBuilder.java +++ b/test/enterprise/src/main/java/org/wamblee/test/persistence/JpaBuilder.java @@ -66,8 +66,8 @@ public class JpaBuilder implements TransactionResource { private String user; private String password; private EntityManagerFactory factory; - private ThreadSpecificProxyFactory entityManager; - + private ThreadSpecificProxyFactory entityManager; + /** * Constructs the builder. * @@ -86,7 +86,8 @@ public class JpaBuilder implements TransactionResource { url = aUrl; user = aUser; password = aPassword; - entityManager = new ThreadSpecificProxyFactory(EntityManager.class); + entityManager = new ThreadSpecificProxyFactory( + EntityManager.class); } /** @@ -163,7 +164,7 @@ public class JpaBuilder implements TransactionResource { LOGGER.log(Level.WARNING, "Exception occured", e); rollback(em); throw e; - } + } } @Override @@ -188,19 +189,25 @@ public class JpaBuilder implements TransactionResource { @Override public void rollback(EntityManager aEntityManager) { try { - aEntityManager.getTransaction().rollback(); + EntityTransaction transaction = aEntityManager.getTransaction(); + if (transaction.isActive()) { + transaction.rollback(); + } } finally { - aEntityManager.close(); + if (aEntityManager.isOpen()) { + aEntityManager.close(); + } entityManager.set(null); } } - + /** - * Gets a contextual reference to an entity manager that delegates to the - * appropriate (current) one which is active for the current transaction. - * @return EntityManager. + * Gets a contextual reference to an entity manager that delegates to the + * appropriate (current) one which is active for the current transaction. + * + * @return EntityManager. */ - public EntityManager getContextualEntityManager() { - return entityManager.getProxy(); + public EntityManager getContextualEntityManager() { + return entityManager.getProxy(); } }