(no commit message)
[utils] / test / enterprise / src / main / java / org / wamblee / support / persistence / JpaBuilder.java
index 4d1921f5abf5a7c8f7d06d5bbd0f1824f4f96b02..8356ea2e52019b1d707df0d9d79ab4189a4eff76 100644 (file)
@@ -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;
@@ -93,12 +94,17 @@ public class JpaBuilder {
             throw new RuntimeException("JNDI problem", e);
         }
         factory = createFactory();
-        execute(new JpaUnitOfWork<Void>() {
-            public Void execute(EntityManager aEm) {
-                // Empty, just to trigger database schema creation.
-                return null;
-            }
-        });
+        try {
+            execute(new JpaUnitOfWork<Void>() {
+                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;
     }
 
     /**