org.apache.xalan.extensions

Class MethodResolver

public class MethodResolver extends Object

Utility class to help resolve method overloading with Xalan XSLT argument types.
Field Summary
static intDYNAMIC
Specifies a Dynamic method search.
static intINSTANCE_ONLY
Specifies a search for instance methods only.
static intSTATIC_AND_INSTANCE
Specifies a search for both static and instance methods.
static intSTATIC_ONLY
Specifies a search for static methods only.
Method Summary
static voidconvertParams(Object[] argsIn, Object[][] argsOut, Class[] paramTypes, ExpressionContext exprContext)
Convert a set of parameters based on a set of paramTypes.
static ConstructorgetConstructor(Class classObj, Object[] argsIn, 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 MethodgetElementMethod(Class classObj, String name)
Given the name of a method, figure out the resolution of the Java Method
static MethodgetMethod(Class classObj, String name, Object[] argsIn, 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 intscoreMatch(Class[] javaParamTypes, int javaParamsStart, Object[] xsltArgs, int score)
Score the conversion of a set of XSLT arguments to a given set of Java parameters.

Field Detail

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.

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.

STATIC_ONLY

public static final int STATIC_ONLY
Specifies a search for static methods only.

Method Detail

convertParams

public static void convertParams(Object[] argsIn, Object[][] argsOut, Class[] paramTypes, ExpressionContext exprContext)
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.

getConstructor

public static Constructor getConstructor(Class classObj, Object[] argsIn, 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.

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.

getElementMethod

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

getMethod

public static Method getMethod(Class classObj, String name, Object[] argsIn, 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.

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.

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.

Copyright © 2005 Apache XML Project. All Rights Reserved.