these patches change digester to use beanutils MethodUtil.
this fixes the IllegalAccessException problem in my test harness and
passes the unit tests on my machine.
- robert
Index: digester/src/java/org/apache/commons/digester/CallMethodRule.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/CallMethodRule.java,v
retrieving revision 1.10
diff -u -r1.10 CallMethodRule.java
--- digester/src/java/org/apache/commons/digester/CallMethodRule.java 2001/11/14
18:57:01 1.10
+++ digester/src/java/org/apache/commons/digester/CallMethodRule.java 2001/12/11
+22:19:26
@@ -66,7 +66,9 @@
import java.lang.reflect.Method;
import java.lang.ClassLoader;
import org.xml.sax.Attributes;
+
import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.MethodUtils;
/**
@@ -307,8 +309,8 @@
sb.append(")");
digester.log(sb.toString());
}
- Method method = top.getClass().getMethod(methodName, paramTypes);
- method.invoke(top, paramValues);
+
+ MethodUtils.invokeExactMethod(top, methodName, paramValues, paramTypes);
}
Index: digester/src/java/org/apache/commons/digester/SetNextRule.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/SetNextRule.java,v
retrieving revision 1.7
diff -u -r1.7 SetNextRule.java
--- digester/src/java/org/apache/commons/digester/SetNextRule.java 2001/11/14
18:54:19 1.7
+++ digester/src/java/org/apache/commons/digester/SetNextRule.java 2001/12/11
+22:19:47
@@ -67,7 +67,9 @@
import java.lang.reflect.Method;
import org.xml.sax.Attributes;
+import org.apache.commons.beanutils.MethodUtils;
+
/**
* Rule implementation that calls a method on the (top-1) (parent)
* object, passing the top object (child) as an argument. It is
@@ -161,12 +163,12 @@
digester.getClassLoader().loadClass(paramType);
else
paramTypes[0] = child.getClass();
- Method method = parent.getClass().getMethod(methodName, paramTypes);
- method.invoke(parent, new Object[] { child });
+
+ MethodUtils.invokeExactMethod(parent, methodName, new Object [] {child} ,
+paramTypes );
}
-
+
/**
* Render a printable version of this Rule.
*/
Index: digester/src/java/org/apache/commons/digester/SetTopRule.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/SetTopRule.java,v
retrieving revision 1.7
diff -u -r1.7 SetTopRule.java
--- digester/src/java/org/apache/commons/digester/SetTopRule.java 2001/11/14
18:54:19 1.7
+++ digester/src/java/org/apache/commons/digester/SetTopRule.java 2001/12/11
+22:20:11
@@ -67,6 +67,7 @@
import java.lang.reflect.Method;
import org.xml.sax.Attributes;
+import org.apache.commons.beanutils.MethodUtils;
/**
* Rule implementation that calls a method on the top (parent)
@@ -160,8 +161,8 @@
digester.getClassLoader().loadClass(paramType);
else
paramTypes[0] = child.getClass();
- Method method = parent.getClass().getMethod(methodName, paramTypes);
- method.invoke(parent, new Object[] { child });
+
+ MethodUtils.invokeExactMethod(parent, methodName, new Object [] {child} ,
+paramTypes );
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>