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) 
  
  
  

Reply via email to