[jboss-cvs] JBossAS SVN: r77014 - projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Aug 13 11:21:39 EDT 2008


Author: adrian at jboss.org
Date: 2008-08-13 11:21:39 -0400 (Wed, 13 Aug 2008)
New Revision: 77014

Modified:
   projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/ReflectionUtils.java
Log:
[JBREFLECT-33] - Optimize away NoSuchXXXException when searching for methods, etc. in super classes

Modified: projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/ReflectionUtils.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/ReflectionUtils.java	2008-08-13 15:10:24 UTC (rev 77013)
+++ projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/ReflectionUtils.java	2008-08-13 15:21:39 UTC (rev 77014)
@@ -227,13 +227,24 @@
       if (clazz == null)
          return null;
 
-      try
+      Method[] methods = clazz.getDeclaredMethods();
+      if (methods.length != 0)
       {
-         return clazz.getDeclaredMethod(name, parameterTypes);
+         for (Method method : methods)
+         {
+            if (method.getName().equals(name))
+            {
+               Class<?>[] methodParams = method.getParameterTypes();
+               if (methodParams.length != 0)
+               {
+                  if (Arrays.equals(methodParams, parameterTypes))
+                     return method;
+               }
+               else if (parameterTypes == null || parameterTypes.length == 0)
+                  return method;
+            }
+         }
       }
-      catch(Exception ignored)
-      {
-      }
       return findMethod(clazz.getSuperclass(), name, parameterTypes);
    }
 
@@ -268,13 +279,15 @@
       if (clazz == null)
          return null;
 
-      try
+      Field[] fields = clazz.getDeclaredFields();
+      if (fields.length != 0)
       {
-         return clazz.getDeclaredField(name);
+         for (Field field : fields)
+         {
+            if (field.getName().equals(name))
+               return field;
+         }
       }
-      catch(Exception ignored)
-      {
-      }
       return findField(clazz.getSuperclass(), name);
    }
 
@@ -308,13 +321,21 @@
       if (clazz == null)
          return null;
 
-      try
+      Constructor<?>[] constructors = clazz.getDeclaredConstructors();
+      if (constructors.length != 0)
       {
-         return clazz.getDeclaredConstructor(parameterTypes);
+         for (Constructor<?> constructor : constructors)
+         {
+            Class<?>[] constructorParams = constructor.getParameterTypes();
+            if (constructorParams.length != 0)
+            {
+               if (Arrays.equals(constructorParams, parameterTypes))
+                  return constructor;
+            }
+            else if (parameterTypes == null || parameterTypes.length == 0)
+               return constructor;
+         }
       }
-      catch(Exception ignored)
-      {
-      }
       return findConstructor(clazz.getSuperclass(), parameterTypes);
    }
 




More information about the jboss-cvs-commits mailing list