Somebody please apply this patch. It implements better exception handling during persistence unit loading.

Thanks
Andrus


Index: geronimo-spec-jpa/src/main/java/javax/persistence/ Persistence.java
===================================================================
--- geronimo-spec-jpa/src/main/java/javax/persistence/ Persistence.java (revision 398209) +++ geronimo-spec-jpa/src/main/java/javax/persistence/ Persistence.java (working copy)
@@ -144,18 +144,29 @@
     static EntityManagerFactory createFactory(
             String providerName,
             String persistenceUnitName,
-            Map properties) {
+            Map properties)
+                       throws PersistenceException {
-        try {
- Class providerClass = Class.forName(providerName, true, Thread
-                    .currentThread()
-                    .getContextClassLoader());
- PersistenceProvider provider = (PersistenceProvider) providerClass
-                    .newInstance();
- return provider.createEntityManagerFactory (persistenceUnitName, properties);
-        }
-        catch (Exception e) {
-            return null;
-        }
-    }
+               Class providerClass;
+               try {
+                       providerClass = Class.forName(providerName, true, Thread
+                                       
.currentThread().getContextClassLoader());
+               }
+               catch (Exception e) {
+                       throw new PersistenceException(
+                                       "Invalid or inaccessible provider class: 
" + providerName,
+                                       e);
+               }
+
+               try {
+                       PersistenceProvider provider = (PersistenceProvider) 
providerClass
+                                       .newInstance();
+                       return 
provider.createEntityManagerFactory(persistenceUnitName,
+                                       properties);
+               }
+               catch (Exception e) {
+                       throw new PersistenceException("Provider error. Provider: 
"
+                                       + providerName, e);
+               }
+       }
}

Reply via email to