[jboss-svn-commits] JBoss Common SVN: r2106 - jbossxb/trunk/src/main/java/org/jboss/xb/binding/introspection

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Oct 5 08:00:33 EDT 2006


Author: adrian at jboss.org
Date: 2006-10-05 08:00:31 -0400 (Thu, 05 Oct 2006)
New Revision: 2106

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/introspection/FieldInfo.java
Log:
Some improvements to the error reporting.

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/introspection/FieldInfo.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/introspection/FieldInfo.java	2006-10-05 12:00:15 UTC (rev 2105)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/introspection/FieldInfo.java	2006-10-05 12:00:31 UTC (rev 2106)
@@ -24,6 +24,8 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+
 import org.jboss.util.Classes;
 import org.jboss.xb.binding.JBossXBRuntimeException;
 
@@ -89,7 +91,35 @@
          {
             public void set(Object owner, Object value) throws IllegalAccessException, InvocationTargetException
             {
-               m.invoke(owner, new Object[]{value});
+               Object[] arguments = new Object[] { value };
+               try
+               {
+                  m.invoke(owner, new Object[]{value});
+               }
+               catch (IllegalArgumentException e)
+               {
+                  if (owner == null)
+                     throw new IllegalArgumentException("Null target for " + m.getName());
+                  ArrayList expected = new ArrayList();
+                  Class[] parameters = m.getParameterTypes();
+                  if (parameters != null)
+                  {
+                     for (int i = 0; i < parameters.length; ++i)
+                        expected.add(parameters[i].getName());
+                  }
+                  ArrayList actual = new ArrayList();
+                  if (arguments != null)
+                  {
+                     for (int i = 0; i < arguments.length; ++i)
+                     {
+                        if (arguments[i] == null)
+                           actual.add(null);
+                        else
+                           actual.add(arguments[i].getClass().getName());
+                     }
+                  }
+                  throw new IllegalArgumentException("Wrong arguments. " + m.getName() + " for target " + owner + " expected=" + expected + " actual=" + actual);
+               }
             }
          };
       }
@@ -198,7 +228,7 @@
       catch(Exception e)
       {
          throw new JBossXBRuntimeException(
-            "Failed to get value of the property '" + name + "' defined in " + owner + " from instance " + owner
+            "Failed to get value of the property '" + name + "' defined in " + owner + " from instance " + owner, e
          );
       }
    }
@@ -220,7 +250,7 @@
       {
          throw new JBossXBRuntimeException(
             "Failed to set value '" + value + "' for property '" + name + "' defined in " +
-            owner + " on instance " + owner
+            owner + " on instance " + owner, e
          );
       }
    }




More information about the jboss-svn-commits mailing list