You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by rp...@apache.org on 2010/04/30 22:19:20 UTC

svn commit: r939801 - /openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java

Author: rpalache
Date: Fri Apr 30 20:19:20 2010
New Revision: 939801

URL: http://svn.apache.org/viewvc?rev=939801&view=rev
Log:
OpenJPA-1535 Applying patch to 1.1.x branch

Modified:
    openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java

Modified: openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=939801&r1=939800&r2=939801&view=diff
==============================================================================
--- openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ openjpa/branches/1.1.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Fri Apr 30 20:19:20 2010
@@ -140,7 +140,7 @@ public class MetaDataRepository
         new InheritanceOrderedMetaDataList();
     private final InheritanceOrderedMetaDataList _mapping =
         new InheritanceOrderedMetaDataList();
-    private final List _errs = new LinkedList();
+    private final List<RuntimeException> _errs = new LinkedList<RuntimeException>();
 
     // system listeners
     private LifecycleEventManager.ListenerList _listeners =
@@ -555,14 +555,19 @@ public class MetaDataRepository
                 err &= resolveMapping((ClassMetaData) 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)
-                re = (RuntimeException) _errs.get(0);
-            else
-                re = new MetaDataException(_loc.get("resolve-errs")).
-                    setNestedThrowables((Throwable[]) _errs.toArray
-                        (new Exception[_errs.size()]));
+            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()]));
+            }
             _errs.clear();
             throw re;
         }