Package 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 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 Description MethodResolver()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method 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 Methodstatic 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.
-
-
-
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
-
-
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.
-
-