## org.apache.xalan.extensions
Class MethodResolver

    java.lang.Object
      org.apache.xalan.extensions.MethodResolver

    public class MethodResolver

extends java.lang.Object

Utility class to help resolve method overloading with Xalan XSLT argument types.

Field Summary
`static int` `DYNAMIC` Specifies a Dynamic method search.
`static int` `INSTANCE_ONLY` Specifies a search for instance methods only.
`static int` `STATIC_AND_INSTANCE` Specifies a search for both static and instance methods.
`static int` `STATIC_ONLY` Specifies a search for static methods only.

Constructor Summary
`MethodResolver()`

Method Summary
`static void` `convertParams(java.lang.Object[] argsIn, java.lang.Object[][] argsOut, java.lang.Class[] paramTypes, ExpressionContext exprContext)` Convert a set of parameters based on a set of paramTypes.
`static java.lang.reflect.Constructor` `getConstructor(java.lang.Class classObj, java.lang.Object[] argsIn, java.lang.Object[][] argsOut, ExpressionContext exprContext)` Given a class, figure out the resolution of the Java Constructor from the XSLT argument types, and perform the conversion of the arguments.
`static java.lang.reflect.Method` `getElementMethod(java.lang.Class classObj, java.lang.String name)` Given the name of a method, figure out the resolution of the Java Method
`static java.lang.reflect.Method` `getMethod(java.lang.Class classObj, java.lang.String name, java.lang.Object[] argsIn, java.lang.Object[][] argsOut, ExpressionContext exprContext, int searchMethod)` Given the name of a method, figure out the resolution of the Java Method from the XSLT argument types, and perform the conversion of the arguments.
`static int` `scoreMatch(java.lang.Class[] javaParamTypes, int javaParamsStart, java.lang.Object[] xsltArgs, int score)` Score the conversion of a set of XSLT arguments to a given set of Java parameters.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### STATIC_ONLY

    public static final int STATIC_ONLY

  Specifies a search for static methods only.

  See Also:
    Constant Field Values

### INSTANCE_ONLY

    public static final int INSTANCE_ONLY

  Specifies a search for instance methods only.

  See Also:
    Constant Field Values

### STATIC_AND_INSTANCE

    public static final int STATIC_AND_INSTANCE

  Specifies a search for both static and instance methods.

  See Also:
    Constant Field Values

### DYNAMIC

    public static final int DYNAMIC

  Specifies a Dynamic method search. If the method being evaluated is a static method, all arguments are used. Otherwise, it is an instance method and only arguments beginning with the second argument are used.

  See Also:
    Constant Field Values

Constructor Detail

### MethodResolver

    public MethodResolver()

Method Detail

### getConstructor

    public static java.lang.reflect.Constructor getConstructor(java.lang.Class classObj,
                                                               java.lang.Object[] argsIn,
                                                               java.lang.Object[][] argsOut,
                                                               ExpressionContext exprContext)
                                                        throws java.lang.NoSuchMethodException,
                                                               java.lang.SecurityException,
                                                               javax.xml.transform.TransformerException

  Given a class, figure out the resolution of the Java Constructor from the XSLT argument types, and perform the conversion of the arguments.

  Parameters:
    `classObj` - the Class of the object to be constructed.
    `argsIn` - An array of XSLT/XPath arguments.
    `argsOut` - An array of the exact size as argsIn, which will be populated with converted arguments if a suitable method is found.
  Returns:
    A constructor that will work with the argsOut array.
  Throws:
    `javax.xml.transform.TransformerException` - may be thrown for Xalan conversion exceptions.
    `java.lang.NoSuchMethodException`
    `java.lang.SecurityException`

### getMethod

    public static java.lang.reflect.Method getMethod(java.lang.Class classObj,
                                                     java.lang.String name,
                                                     java.lang.Object[] argsIn,
                                                     java.lang.Object[][] argsOut,
                                                     ExpressionContext exprContext,
                                                     int searchMethod)
                                              throws java.lang.NoSuchMethodException,
                                                     java.lang.SecurityException,
                                                     javax.xml.transform.TransformerException

  Given the name of a method, figure out the resolution of the Java Method from the XSLT argument types, and perform the conversion of the arguments.

  Parameters:
    `classObj` - The Class of the object that should have the method.
    `name` - The name of the method to be invoked.
    `argsIn` - An array of XSLT/XPath arguments.
    `argsOut` - An array of the exact size as argsIn, which will be populated with converted arguments if a suitable method is found.
  Returns:
    A method that will work with the argsOut array.
  Throws:
    `javax.xml.transform.TransformerException` - may be thrown for Xalan conversion exceptions.
    `java.lang.NoSuchMethodException`
    `java.lang.SecurityException`

### getElementMethod

    public static java.lang.reflect.Method getElementMethod(java.lang.Class classObj,
                                                            java.lang.String name)
                                                     throws java.lang.NoSuchMethodException,
                                                            java.lang.SecurityException,
                                                            javax.xml.transform.TransformerException

  Given the name of a method, figure out the resolution of the Java Method

  Parameters:
    `classObj` - The Class of the object that should have the method.
    `name` - The name of the method to be invoked.
  Returns:
    A method that will work to be called as an element.
  Throws:
    `javax.xml.transform.TransformerException` - may be thrown for Xalan conversion exceptions.
    `java.lang.NoSuchMethodException`
    `java.lang.SecurityException`

### convertParams

    public static void convertParams(java.lang.Object[] argsIn,
                                     java.lang.Object[][] argsOut,
                                     java.lang.Class[] paramTypes,
                                     ExpressionContext exprContext)
                              throws javax.xml.transform.TransformerException

  Convert a set of parameters based on a set of paramTypes.

  Parameters:
    `argsIn` - An array of XSLT/XPath arguments.
    `argsOut` - An array of the exact size as argsIn, which will be populated with converted arguments.
    `paramTypes` - An array of class objects, of the exact same size as argsIn and argsOut.
  Throws:
    `javax.xml.transform.TransformerException` - may be thrown for Xalan conversion exceptions.

### scoreMatch

    public static int scoreMatch(java.lang.Class[] javaParamTypes,
                                 int javaParamsStart,
                                 java.lang.Object[] xsltArgs,
                                 int score)

  Score the conversion of a set of XSLT arguments to a given set of Java parameters. If any invocations of this function for a method with the same name return the same positive value, then a conflict has occured, and an error should be signaled.

  Parameters:
    `javaParamTypes` - Must be filled with valid class names, and of the same length as xsltArgs.
    `xsltArgs` - Must be filled with valid object instances, and of the same length as javeParamTypes.
  Returns:
    -1 for no allowed conversion, or a positive score that is closer to zero for more preferred, or further from zero for less preferred.

Copyright © 2005 Apache XML Project. All Rights Reserved.