Author: dwoods
Date: Thu Feb 25 16:28:54 2010
New Revision: 916338

URL: http://svn.apache.org/viewvc?rev=916338&view=rev
Log:
OPENJPA-1535 Inconsistency in exceptions thrown from 
MetaDataRepository.resolve().  Patch contributed by Hiroki Tateno.

Modified:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=916338&r1=916337&r2=916338&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
 Thu Feb 25 16:28:54 2010
@@ -631,14 +631,18 @@
                 err &= resolveMapping(resolved.get(i));
 
         // throw errors encountered
+        // OPENJPA-1535 Always throw a MetaDataException because callers
+        // of loadRegisteredClassMetaData expect only MetaDataException
+        // to be thrown.
         if (err && !_errs.isEmpty()) {
             RuntimeException re;
-            if (_errs.size() == 1)
+            if ((_errs.size() == 1) && (_errs.get(0) instanceof 
MetaDataException)) {
                 re = _errs.get(0);
-            else
-                re =
-                    new 
MetaDataException(_loc.get("resolve-errs")).setNestedThrowables((Throwable[]) 
_errs
-                        .toArray(new Exception[_errs.size()]));
+            } else {
+                re = new MetaDataException(_loc.get("resolve-errs"))
+                    .setNestedThrowables((Throwable[]) _errs
+                    .toArray(new Exception[_errs.size()]));
+            }
             _errs.clear();
             throw re;
         }


Reply via email to