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=f83172ebffeda250f23741b7f5f0e0ca7186e346;hpb=8de36ff0206c996baf3ee4adc3e2293b12ff5f39;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 f83172eb..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 @@ -1,3 +1,18 @@ +/* + * Copyright 2005-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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; @@ -11,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; @@ -37,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; @@ -78,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; + } } /** @@ -107,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; } /**