Class MethodResolver

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

public class MethodResolver extends Object
Utility class to help resolve method overloading with Xalan XSLT argument types.
  • Field Details

    • STATIC_ONLY

      public static final int STATIC_ONLY
      Specifies a search for static methods only.
      See Also:
    • INSTANCE_ONLY

      public static final int INSTANCE_ONLY
      Specifies a search for instance methods only.
      See Also:
    • STATIC_AND_INSTANCE

      public static final int STATIC_AND_INSTANCE
      Specifies a search for both static and instance methods.
      See Also:
    • 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:
  • Constructor Details

    • MethodResolver

      public MethodResolver()
  • Method Details

    • getConstructor

      public static Constructor getConstructor(Class classObj, Object[] argsIn, Object[][] argsOut, ExpressionContext exprContext) throws NoSuchMethodException, SecurityException, 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:
      TransformerException - may be thrown for Xalan conversion exceptions.
      NoSuchMethodException
      SecurityException
    • getMethod

      public static Method getMethod(Class classObj, String name, Object[] argsIn, Object[][] argsOut, ExpressionContext exprContext, int searchMethod) throws NoSuchMethodException, SecurityException, 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:
      TransformerException - may be thrown for Xalan conversion exceptions.
      NoSuchMethodException
      SecurityException
    • getElementMethod

      public static Method getElementMethod(Class classObj, String name) throws NoSuchMethodException, SecurityException, 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:
      TransformerException - may be thrown for Xalan conversion exceptions.
      NoSuchMethodException
      SecurityException
    • convertParams

      public static void convertParams(Object[] argsIn, Object[][] argsOut, Class[] paramTypes, ExpressionContext exprContext) throws 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:
      TransformerException - may be thrown for Xalan conversion exceptions.
    • scoreMatch

      public static int scoreMatch(Class[] javaParamTypes, int javaParamsStart, 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.