You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mp...@apache.org on 2006/09/16 00:12:06 UTC
svn commit: r446769 - in /incubator/openjpa/trunk/openjpa-kernel/src/main:
java/org/apache/openjpa/kernel/BrokerImpl.java
resources/org/apache/openjpa/kernel/localizer.properties
Author: mprudhom
Date: Fri Sep 15 15:12:05 2006
New Revision: 446769
URL: http://svn.apache.org/viewvc?view=rev&rev=446769
Log:
Add a better error message when casting an instance to PersistenceCapable fails due to the PersistenceCapable interface being loaded by two separate ClassLoaders
Modified:
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
incubator/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/localizer.properties
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java?view=diff&rev=446769&r1=446768&r2=446769
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java Fri Sep 15 15:12:05 2006
@@ -4140,6 +4140,18 @@
if (obj instanceof PersistenceCapable)
return (PersistenceCapable) obj;
+ // check for difference instances of the PersistenceCapable interface
+ // and throw a better error that mentions the class loaders
+ Class[] intfs = obj.getClass().getInterfaces();
+ for (int i = 0; intfs != null && i < intfs.length; i++) {
+ if (intfs[i].getName().equals(PersistenceCapable.class.getName())) {
+ throw new UserException(_loc.get("pc-loader-different",
+ Exceptions.toString(obj),
+ PersistenceCapable.class.getClassLoader(),
+ intfs[i].getClassLoader())).setFailedObject(obj);
+ }
+ }
+
// not enhanced
throw new UserException(_loc.get("pc-cast",
Exceptions.toString(obj))).setFailedObject(obj);
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/localizer.properties
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/localizer.properties?view=diff&rev=446769&r1=446768&r2=446769
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/localizer.properties (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/localizer.properties Fri Sep 15 15:12:05 2006
@@ -48,6 +48,10 @@
marked for rollback only. The transaction will be rolled back instead.
refresh-flushed: You cannot refresh an instance that has been flushed to the \
data store.
+pc-loader-different: Attempt to cast instance "{0}" to PersistenceCapable failed. \
+ The object implemented org.apache.openjpa.enhance.PersistenceCapable, \
+ but the instance of that interface was loaded by two different ClassLoaders: \
+ "{1}" and "{2}".
pc-cast: Attempt to cast instance "{0}" to PersistenceCapable failed. Ensure \
that it has been enhanced.
del-instance: The instance of type "{0}" with oid "{1}" no longer exists in \