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.

INSTANCE_ONLY

public static final int INSTANCE_ONLY
Specifies a search for instance methods only.

STATIC_AND_INSTANCE

public static final int STATIC_AND_INSTANCE
Specifies a search for both static and instance methods.

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.
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,
                                                           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.

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,
                                                 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.

getElementMethod

public static java.lang.reflect.Method getElementMethod(java.lang.Class classObj,
                                                        java.lang.String name)
                                                 throws java.lang.NoSuchMethodException,
                                                        java.lang.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.

convertParams

public static void convertParams(java.lang.Object[] argsIn,
                                 java.lang.Object[][] argsOut,
                                 java.lang.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(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 2006 Apache XML Project. All Rights Reserved.