X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsupport%2Fpersistence%2FJpaBuilder.java;h=8356ea2e52019b1d707df0d9d79ab4189a4eff76;hb=9ceca02f8774188df9159b703dd38a31783ed956;hp=4e824093b14d61c816f9c4a1d8daa8b964b45a65;hpb=17775e14ecfb286e59f67117e5cee7e21e95ab1f;p=utils diff --git a/test/enterprise/src/main/java/org/wamblee/support/persistence/JpaBuilder.java b/test/enterprise/src/main/java/org/wamblee/support/persistence/JpaBuilder.java index 4e824093..8356ea2e 100644 --- a/test/enterprise/src/main/java/org/wamblee/support/persistence/JpaBuilder.java +++ b/test/enterprise/src/main/java/org/wamblee/support/persistence/JpaBuilder.java @@ -12,7 +12,7 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.support.persistence; import java.util.Map; @@ -26,6 +26,7 @@ import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; +import javax.persistence.PersistenceException; import javax.sql.DataSource; import org.wamblee.support.jndi.StubInitialContextFactory; @@ -52,13 +53,13 @@ public class JpaBuilder { /** * Executes the unit of work. A transaction has been started. * - * @param em + * @param aEm * Entity manager. * @return Result of the execute method. If you don't want to return * anything use Void for the return type and return * null from the implementation. */ - T execute(EntityManager em); + T execute(EntityManager aEm) throws Exception; } private PersistenceUnitDescription persistenceUnit; @@ -93,12 +94,17 @@ public class JpaBuilder { throw new RuntimeException("JNDI problem", e); } factory = createFactory(); - execute(new JpaUnitOfWork() { - public Void execute(EntityManager em) { - // Empty, just to trigger database schema creation. - return null; - } - }); + try { + execute(new JpaUnitOfWork() { + public Void execute(EntityManager aEm) { + // Empty, just to trigger database schema creation. + return null; + } + }); + } catch (PersistenceException e) { + factory.close(); + throw e; + } } /** @@ -122,11 +128,11 @@ public class JpaBuilder { // jpaProps.put("javax.persistence.provider", // HibernatePersistence.class.getName()); - EntityManagerFactory factory = Persistence.createEntityManagerFactory( + EntityManagerFactory emf = Persistence.createEntityManagerFactory( persistenceUnit.getUnitName(), jpaProps); - LOGGER.info("Using " + factory.getClass()); - return factory; + LOGGER.info("Using " + emf.getClass()); + return emf; } /**