|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.xalan.extensions.MethodResolver
public class MethodResolver
Utility class to help resolve method overloading with Xalan XSLT argument types.
Nested Class Summary | |
---|---|
(package private) static class |
MethodResolver.ConversionInfo
Simple class to hold information about allowed conversions and their relative scores, for use by the table below. |
Field Summary | |
---|---|
static int |
DYNAMIC
Specifies a Dynamic method search. |
static int |
INSTANCE_ONLY
Specifies a search for instance methods only. |
private static MethodResolver.ConversionInfo[] |
m_booleanConversions
Specification of conversions from XSLT type CLASS_BOOLEAN to allowed Java types. |
private static MethodResolver.ConversionInfo[][] |
m_conversions
Order is significant in the list below, based on XObject.CLASS_XXX values. |
private static MethodResolver.ConversionInfo[] |
m_javaObjConversions
Specification of conversions from XSLT type CLASS_UNKNOWN (i.e. |
private static MethodResolver.ConversionInfo[] |
m_nodesetConversions
Specification of conversions from XSLT type CLASS_NODESET to allowed Java types. |
private static MethodResolver.ConversionInfo[] |
m_numberConversions
Specification of conversions from XSLT type CLASS_NUMBER to allowed Java types. |
private static MethodResolver.ConversionInfo[] |
m_rtfConversions
Specification of conversions from XSLT type CLASS_RTREEFRAG to allowed Java types. |
private static MethodResolver.ConversionInfo[] |
m_stringConversions
Specification of conversions from XSLT type CLASS_STRING to allowed Java types. |
private static int |
SCOREBASE
|
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 | |
---|---|
(package private) static java.lang.Object |
convert(java.lang.Object xsltObj,
java.lang.Class javaClass)
Convert the given XSLT object to an object of the given class. |
(package private) static java.lang.Object |
convertDoubleToNumber(double num,
java.lang.Class javaClass)
Do a standard conversion of a double to the specified type. |
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. |
private static java.lang.String |
errArgs(java.lang.Object[] xsltArgs,
int startingArg)
|
private static java.lang.String |
errString(java.lang.String callType,
java.lang.String searchType,
java.lang.Class classObj,
java.lang.String funcName,
int searchMethod,
java.lang.Object[] xsltArgs)
Format the message for the NoSuchMethodException containing all the information about the method we're looking for. |
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. |
private static java.lang.String |
replaceDash(java.lang.String name)
To support EXSLT extensions, convert names with dash to allowable Java names: e.g., convert abc-xyz to abcXyz. |
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 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int STATIC_ONLY
public static final int INSTANCE_ONLY
public static final int STATIC_AND_INSTANCE
public static final int DYNAMIC
private static final int SCOREBASE
private static final MethodResolver.ConversionInfo[] m_javaObjConversions
private static final MethodResolver.ConversionInfo[] m_booleanConversions
private static final MethodResolver.ConversionInfo[] m_numberConversions
private static final MethodResolver.ConversionInfo[] m_stringConversions
private static final MethodResolver.ConversionInfo[] m_rtfConversions
private static final MethodResolver.ConversionInfo[] m_nodesetConversions
private static final MethodResolver.ConversionInfo[][] m_conversions
Constructor Detail |
---|
public MethodResolver()
Method Detail |
---|
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
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.
javax.xml.transform.TransformerException
- may be thrown for Xalan conversion
exceptions.
java.lang.NoSuchMethodException
java.lang.SecurityException
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
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.
javax.xml.transform.TransformerException
- may be thrown for Xalan conversion
exceptions.
java.lang.NoSuchMethodException
java.lang.SecurityException
private static java.lang.String replaceDash(java.lang.String name)
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
classObj
- The Class of the object that should have the method.name
- The name of the method to be invoked.
javax.xml.transform.TransformerException
- may be thrown for Xalan conversion
exceptions.
java.lang.NoSuchMethodException
java.lang.SecurityException
public static void convertParams(java.lang.Object[] argsIn, java.lang.Object[][] argsOut, java.lang.Class[] paramTypes, ExpressionContext exprContext) throws javax.xml.transform.TransformerException
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.
javax.xml.transform.TransformerException
- may be thrown for Xalan conversion
exceptions.public static int scoreMatch(java.lang.Class[] javaParamTypes, int javaParamsStart, java.lang.Object[] xsltArgs, int score)
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.
static java.lang.Object convert(java.lang.Object xsltObj, java.lang.Class javaClass) throws javax.xml.transform.TransformerException
xsltObj
- The XSLT object that needs conversion.javaClass
- The type of object to convert to.
javax.xml.transform.TransformerException
- may be thrown for Xalan conversion
exceptions.static java.lang.Object convertDoubleToNumber(double num, java.lang.Class javaClass)
num
- The number to be converted.javaClass
- The class type to be converted to.
private static java.lang.String errString(java.lang.String callType, java.lang.String searchType, java.lang.Class classObj, java.lang.String funcName, int searchMethod, java.lang.Object[] xsltArgs)
private static java.lang.String errArgs(java.lang.Object[] xsltArgs, int startingArg)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |