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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

    Constructors
    Constructor and Description
    `MethodResolver()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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 © 2023 Apache XML Project. All Rights Reserved.