[jboss-cvs] JBossAS SVN: r74472 - 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
Thu Jun 12 05:29:11 EDT 2008


Author: alesj
Date: 2008-06-12 05:29:11 -0400 (Thu, 12 Jun 2008)
New Revision: 74472

Modified:
   projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/ReflectionUtils.java
Log:
Handle wrong target w/ member's declaring class #2.

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-06-12 09:10:49 UTC (rev 74471)
+++ projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/ReflectionUtils.java	2008-06-12 09:29:11 UTC (rev 74472)
@@ -24,7 +24,6 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,28 +41,6 @@
 public class ReflectionUtils
 {
    /**
-    * Check if member and target are ok.
-    *
-    * @param target the target
-    * @param member the member
-    * @param memberType member type info
-    * @throws Throwable for any error
-    */
-   protected static void checkMember(Object target, Member member, String memberType) throws Throwable
-   {
-      if (member == null)
-         throw new IllegalArgumentException("Null " + memberType);
-
-      if (target != null)
-      {
-         Class<?> declaringClass = member.getDeclaringClass();
-         if (declaringClass.isInstance(target) == false)
-            throw new IllegalArgumentException("Target (" + Strings.defaultToString(target) + ") doesn't match " + memberType + " 's (" + member + ") declaring class.");
-      }
-
-   }
-
-   /**
     * Invoke on a method
     * 
     * @param method the method
@@ -74,7 +51,8 @@
     */
    public static Object invoke(Method method, Object target, Object[] arguments) throws Throwable
    {
-      checkMember(target, method, "method");
+      if (method == null)
+         throw new IllegalArgumentException("Null method");
 
       try
       {
@@ -82,6 +60,12 @@
       }
       catch (Throwable t)
       {
+         if (target != null && t instanceof IllegalArgumentException)
+         {
+            Class<?> clazz = method.getDeclaringClass();
+            if (clazz.isInstance(target) == false)
+               throw new IllegalArgumentException("Wrong target. " + target.getClass().getName() + " is not a " + clazz.getName());
+         }
          throw handleErrors(method.getName(), Strings.defaultToString(target), method.getParameterTypes(), arguments, t);
       }
    }
@@ -180,7 +164,8 @@
     */
    public static Object getField(Field field, Object target) throws Throwable
    {
-      checkMember(target, field, "field");
+      if (field == null)
+         throw new IllegalArgumentException("Null field");
 
       try
       {
@@ -203,7 +188,8 @@
     */
    public static Object setField(Field field, Object target, Object value) throws Throwable
    {
-      checkMember(target, field, "field");
+      if (field == null)
+         throw new IllegalArgumentException("Null field");
 
       try
       {
@@ -371,18 +357,18 @@
          List<String> expected = new ArrayList<String>();
          if (parameters != null)
          {
-            for (int i = 0; i < parameters.length; ++i)
-               expected.add(parameters[i].getName());
+            for (Class<?> parameter : parameters)
+               expected.add(parameter.getName());
          }
          List<String> actual = new ArrayList<String>();
          if (arguments != null)
          {
-            for (int i = 0; i < arguments.length; ++i)
+            for (Object argument : arguments)
             {
-               if (arguments[i] == null)
+               if (argument == null)
                   actual.add(null);
                else
-                  actual.add(arguments[i].getClass().getName());
+                  actual.add(argument.getClass().getName());
             }
          }
          throw new IllegalArgumentException("Wrong arguments. " + context + " for target " + target + " expected=" + expected + " actual=" + actual);
@@ -409,6 +395,10 @@
    {
       if (t instanceof IllegalArgumentException)
       {
+         Class<?> clazz = field.getDeclaringClass();
+         if (clazz.isInstance(target) == false)
+            throw new IllegalArgumentException("Wrong target. " + target.getClass().getName() + " is not a " + clazz.getName());
+
          String valueType = null;
          if (value != null)
             valueType = value.getClass().getName();




More information about the jboss-cvs-commits mailing list