Return-Path: X-Original-To: apmail-geronimo-xbean-scm-archive@minotaur.apache.org Delivered-To: apmail-geronimo-xbean-scm-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 962623A85 for ; Wed, 4 May 2011 17:29:27 +0000 (UTC) Received: (qmail 86788 invoked by uid 500); 4 May 2011 17:29:27 -0000 Delivered-To: apmail-geronimo-xbean-scm-archive@geronimo.apache.org Received: (qmail 86763 invoked by uid 500); 4 May 2011 17:29:27 -0000 Mailing-List: contact xbean-scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: xbean-scm@geronimo.apache.org Delivered-To: mailing list xbean-scm@geronimo.apache.org Received: (qmail 86750 invoked by uid 99); 4 May 2011 17:29:27 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 04 May 2011 17:29:27 +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, 04 May 2011 17:29:24 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 710B9238896F; Wed, 4 May 2011 17:29:03 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1099531 - in /geronimo/xbean/trunk/xbean-reflect: pom.xml src/main/java/org/apache/xbean/recipe/ReflectionUtil.java Date: Wed, 04 May 2011 17:29:03 -0000 To: xbean-scm@geronimo.apache.org From: gawor@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110504172903.710B9238896F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gawor Date: Wed May 4 17:29:02 2011 New Revision: 1099531 URL: http://svn.apache.org/viewvc?rev=1099531&view=rev Log: GERONIMO-5946: Check for the available asm classes directly (asm or xbean-asm) Modified: geronimo/xbean/trunk/xbean-reflect/pom.xml geronimo/xbean/trunk/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java Modified: geronimo/xbean/trunk/xbean-reflect/pom.xml URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-reflect/pom.xml?rev=1099531&r1=1099530&r2=1099531&view=diff ============================================================================== --- geronimo/xbean/trunk/xbean-reflect/pom.xml (original) +++ geronimo/xbean/trunk/xbean-reflect/pom.xml Wed May 4 17:29:02 2011 @@ -30,7 +30,7 @@ xbean-reflect bundle Apache XBean :: Reflect - xbean-reflect provides very flexible ways to creat objects and graphs of objects for DI frameworks + xbean-reflect provides very flexible ways to create objects and graphs of objects for DI frameworks asm Modified: geronimo/xbean/trunk/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java?rev=1099531&r1=1099530&r2=1099531&view=diff ============================================================================== --- geronimo/xbean/trunk/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java (original) +++ geronimo/xbean/trunk/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java Wed May 4 17:29:02 2011 @@ -41,21 +41,27 @@ import static org.apache.xbean.recipe.Re public final class ReflectionUtil { private static ParameterNameLoader parameterNamesLoader; + static { - String[] impls = {"org.apache.xbean.recipe.XbeanAsmParameterNameLoader", "org.apache.xbean.recipe.AsmParameterNameLoader"}; - for (String impl : impls) { - try { - Class loaderClass = ReflectionUtil.class.getClassLoader().loadClass(impl).asSubclass(ParameterNameLoader.class); - parameterNamesLoader = loaderClass.newInstance(); - break; - } catch (Throwable ignored) { - } + if (isClassAvailable("org.apache.xbean.asm.ClassReader")) { + parameterNamesLoader = new XbeanAsmParameterNameLoader(); + } else if (isClassAvailable("org.objectweb.asm.ClassReader")) { + parameterNamesLoader = new AsmParameterNameLoader(); } } - + private ReflectionUtil() { } + private static boolean isClassAvailable(String className) { + try { + ReflectionUtil.class.getClassLoader().loadClass(className); + return true; + } catch (Throwable ignored) { + return false; + } + } + public static Field findField(Class typeClass, String propertyName, Object propertyValue, Set