Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 54EF610579 for ; Wed, 18 Sep 2013 13:47:11 +0000 (UTC) Received: (qmail 13727 invoked by uid 500); 18 Sep 2013 13:47:01 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 13650 invoked by uid 500); 18 Sep 2013 13:47:01 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 13567 invoked by uid 99); 18 Sep 2013 13:46:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Sep 2013 13:46:58 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Sep 2013 13:46:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 5981F238899C; Wed, 18 Sep 2013 13:46:34 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1524411 - in /cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util: ProxyClassLoader.java ProxyHelper.java Date: Wed, 18 Sep 2013 13:46:34 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130918134634.5981F238899C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Wed Sep 18 13:46:33 2013 New Revision: 1524411 URL: http://svn.apache.org/r1524411 Log: Make sure we return the EXACT class object for the names classes, check system classloader AFTER all the others. Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyClassLoader.java cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyHelper.java Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyClassLoader.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyClassLoader.java?rev=1524411&r1=1524410&r2=1524411&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyClassLoader.java (original) +++ cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyClassLoader.java Wed Sep 18 13:46:33 2013 @@ -28,16 +28,33 @@ import java.util.Set; * service class. */ public class ProxyClassLoader extends ClassLoader { - private Set loaders = new HashSet(); + private final Class classes[]; + private final Set loaders = new HashSet(); + private boolean checkSystem; + + public ProxyClassLoader() { + classes = null; + } + public ProxyClassLoader(Class[] cls) { + classes = cls; + } public void addLoader(ClassLoader loader) { if (loader == null) { - loader = getSystemClassLoader(); + checkSystem = true; + } else { + loaders.add(loader); } - loaders.add(loader); } public Class findClass(String name) throws ClassNotFoundException { + if (classes != null) { + for (Class c : classes) { + if (name.equals(c.getName())) { + return c; + } + } + } for (ClassLoader loader : loaders) { try { return loader.loadClass(name); @@ -47,6 +64,15 @@ public class ProxyClassLoader extends Cl // Try next } } + if (checkSystem) { + try { + return getSystemClassLoader().loadClass(name); + } catch (ClassNotFoundException cnfe) { + // Try next + } catch (NoClassDefFoundError cnfe) { + // Try next + } + } throw new ClassNotFoundException(name); } Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyHelper.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyHelper.java?rev=1524411&r1=1524410&r2=1524411&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyHelper.java (original) +++ cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/common/util/ProxyHelper.java Wed Sep 18 13:46:33 2013 @@ -58,7 +58,7 @@ public class ProxyHelper { if (canSeeAllInterfaces(loader, interfaces)) { return loader; } - ProxyClassLoader combined = new ProxyClassLoader(); + ProxyClassLoader combined = new ProxyClassLoader(interfaces); for (Class currentInterface : interfaces) { combined.addLoader(currentInterface.getClassLoader()); }