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