garyp 00/10/18 11:54:46
Modified: src/org/apache/xalan/xpath XSLTJavaClassEngine.java
Log:
Improve error message when method not found.
Contributed by Benoit Cerrina.
Revision Changes Path
1.10 +21 -6
xml-xalan/src/org/apache/xalan/xpath/XSLTJavaClassEngine.java
Index: XSLTJavaClassEngine.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/XSLTJavaClassEngine.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- XSLTJavaClassEngine.java 2000/09/26 13:36:37 1.9
+++ XSLTJavaClassEngine.java 2000/10/18 18:54:46 1.10
@@ -142,10 +142,12 @@
// determine the argument types as they are given
Class[] argTypes = null;
+ int lNbArgType = 0;
if (methodArgs != null)
{
argTypes = new Class[methodArgs.length];
- for (int i = 0; i < argTypes.length; i++)
+ lNbArgType = argTypes.length;
+ for (int i = 0; i < lNbArgType; i++)
{
argTypes[i] = (methodArgs[i]!=null) ? methodArgs[i].getClass() :
null;
}
@@ -170,7 +172,7 @@
{
if (!toggled)
{
- for (int i = 0; i < argTypes.length; i++)
+ for (int i = 0; i < lNbArgType; i++)
{
Class cl = argTypes[i];
if (cl != null)
@@ -214,7 +216,7 @@
}
else
{
- for (int i = 0; i < argTypes.length; i++)
+ for (int i = 0; i < lNbArgType; i++)
{
Class cl = argTypes[i];
if (cl != null)
@@ -275,9 +277,22 @@
}
else
{
- Method m =
MethodUtils.getMethod (object, method, argTypes);
- //Method m =
ReflectionUtils.getMethod (object, method, argTypes);
- return m.invoke (object, methodArgs);
+ try
+ {
+ Method m =
MethodUtils.getMethod (object, method, argTypes);
+ //Method m =
ReflectionUtils.getMethod (object, method, argTypes);
+ return m.invoke (object, methodArgs);
+ }
+ catch (NullPointerException e)
+ {
+ //build the message
+ String lMessage = "Method with
signature " + method + "(";
+ for (int i = 0; i < lNbArgType-1; i++)
+ lMessage +=
argTypes[i].toString() + ",";
+ lMessage += argTypes[lNbArgType-1].toString();
+
+ throw (new BSFException(lMessage + ")
could not be found"));
+ }
}
}
catch (NoSuchMethodException e)