Return-Path: Delivered-To: apmail-incubator-open-jpa-commits-archive@locus.apache.org Received: (qmail 62813 invoked from network); 15 Sep 2006 22:13:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 15 Sep 2006 22:13:39 -0000 Received: (qmail 67640 invoked by uid 500); 15 Sep 2006 22:13:39 -0000 Delivered-To: apmail-incubator-open-jpa-commits-archive@incubator.apache.org Received: (qmail 67598 invoked by uid 500); 15 Sep 2006 22:13:39 -0000 Mailing-List: contact open-jpa-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: open-jpa-dev@incubator.apache.org Delivered-To: mailing list open-jpa-commits@incubator.apache.org Received: (qmail 67589 invoked by uid 99); 15 Sep 2006 22:13:39 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Sep 2006 15:13:39 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Sep 2006 15:13:38 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 478771A981A; Fri, 15 Sep 2006 15:12:06 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Fri, 15 Sep 2006 22:12:06 -0000 To: open-jpa-commits@incubator.apache.org From: mprudhom@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20060915221206.478771A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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 \