You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by ga...@apache.org on 2011/05/04 19:29:03 UTC
svn commit: r1099531 - in /geronimo/xbean/trunk/xbean-reflect: pom.xml
src/main/java/org/apache/xbean/recipe/ReflectionUtil.java
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 @@
<artifactId>xbean-reflect</artifactId>
<packaging>bundle</packaging>
<name>Apache XBean :: Reflect</name>
- <description>xbean-reflect provides very flexible ways to creat objects and graphs of objects for DI frameworks</description>
+ <description>xbean-reflect provides very flexible ways to create objects and graphs of objects for DI frameworks</description>
<dependencies>
<dependency>
<groupId>asm</groupId>
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<? extends ParameterNameLoader> 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<Option> options) {
if (typeClass == null) throw new NullPointerException("typeClass is null");
if (propertyName == null) throw new NullPointerException("name is null");