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);
+ }
+ }
}