Return-Path: Delivered-To: apmail-openwebbeans-commits-archive@www.apache.org Received: (qmail 24647 invoked from network); 1 Jul 2010 17:37:17 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 1 Jul 2010 17:37:17 -0000 Received: (qmail 24398 invoked by uid 500); 1 Jul 2010 17:37:17 -0000 Delivered-To: apmail-openwebbeans-commits-archive@openwebbeans.apache.org Received: (qmail 24363 invoked by uid 500); 1 Jul 2010 17:37:17 -0000 Mailing-List: contact commits-help@openwebbeans.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openwebbeans.apache.org Delivered-To: mailing list commits@openwebbeans.apache.org Received: (qmail 24355 invoked by uid 99); 1 Jul 2010 17:37:17 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Jul 2010 17:37:17 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.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; Thu, 01 Jul 2010 17:37:14 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 122D723888D1; Thu, 1 Jul 2010 17:35:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r959732 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/WebBeansFinder.java util/ClassUtil.java Date: Thu, 01 Jul 2010 17:35:51 -0000 To: commits@openwebbeans.apache.org From: gerdogdu@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100701173551.122D723888D1@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gerdogdu Date: Thu Jul 1 17:35:50 2010 New Revision: 959732 URL: http://svn.apache.org/viewvc?rev=959732&view=rev Log: Update how our loading classes for singletons. Using Class.forName instead of loadClass Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java?rev=959732&r1=959731&r2=959732&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java (original) +++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java Thu Jul 1 17:35:50 2010 @@ -19,10 +19,13 @@ package org.apache.webbeans.config; import java.util.HashMap; +import java.util.IdentityHashMap; import java.util.Map; +import java.util.Map.Entry; import org.apache.webbeans.exception.WebBeansException; import org.apache.webbeans.util.Asserts; +import org.apache.webbeans.util.ClassUtil; import org.apache.webbeans.util.WebBeansUtil; /** @@ -39,6 +42,8 @@ public final class WebBeansFinder * Values --> Maps of singleton class name with object */ private static Map> singletonMap = new HashMap>(); + + private static Map objectToClassLoaderMap = new IdentityHashMap(); /** * No instantiate. @@ -85,13 +90,20 @@ public final class WebBeansFinder try { //Load class - Class clazz = classLoader.loadClass(singletonName); + Class clazz = ClassUtil.getClassFromName(singletonName); + if(clazz == null) + { + throw new ClassNotFoundException("Class with name: " + singletonName + " is not found in the system"); + } //Create instance object = clazz.newInstance(); //Save it managerMap.put(singletonName, object); + + //Save it object --> classloader + objectToClassLoaderMap.put(object, classLoader); } catch (InstantiationException e) @@ -145,8 +157,34 @@ public final class WebBeansFinder Asserts.assertNotNull(classLoader, "classloader is null"); synchronized (singletonMap) { - singletonMap.remove(classLoader); + Map objects = singletonMap.remove(classLoader); + if(objects != null) + { + for(Entry entry : objects.entrySet()) + { + objectToClassLoaderMap.remove(entry.getValue()); + } + } + } + } + + /** + * Gets classloader with given singelton instance. + * @param object singleton instance + * @return the classloader that instance is created within + */ + public static ClassLoader getSingletonClassLoader(Object object) + { + Asserts.assertNotNull(object, "object is null"); + synchronized (objectToClassLoaderMap) + { + if(objectToClassLoaderMap.containsKey(object)) + { + return objectToClassLoaderMap.get(object); + } } + + return null; } } \ No newline at end of file Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=959732&r1=959731&r2=959732&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java (original) +++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java Thu Jul 1 17:35:50 2010 @@ -185,12 +185,11 @@ public final class ClassUtil public static Class getClassFromName(String name) { Class clazz = null; - + ClassLoader loader = null; try { - ClassLoader loader = WebBeansUtil.getCurrentClassLoader(); - clazz = loader.loadClass(name); - + loader = WebBeansUtil.getCurrentClassLoader(); + clazz = Class.forName(name, true , loader); return clazz; } @@ -198,7 +197,8 @@ public final class ClassUtil { try { - clazz = ClassUtil.class.getClassLoader().loadClass(name); + loader = ClassUtil.class.getClassLoader(); + clazz = Class.forName(name, true , loader); return clazz; @@ -207,7 +207,8 @@ public final class ClassUtil { try { - clazz = ClassLoader.getSystemClassLoader().loadClass(name); + loader = ClassLoader.getSystemClassLoader(); + clazz = Class.forName(name, true , loader); return clazz;