com.icl.saxon.expr
Class FunctionProxy
public class FunctionProxy
This class acts as a proxy for an extension function defined as a method
in a user-defined class
FunctionProxy() - Constructor: creates an uncommitted FunctionProxy
|
containsReferences , display , enumerate , evaluate , evaluateAsBoolean , evaluateAsNodeSet , evaluateAsNumber , evaluateAsString , getDataType , getDependencies , getStaticContext , indent , isContextDocumentNodeSet , make , outputStringValue , reduce , setStaticContext , simplify , usesCurrent |
FunctionProxy
public FunctionProxy()
Constructor: creates an uncommitted FunctionProxy
convertJavaObjectToXPath
public static Value convertJavaObjectToXPath(Object result,
Controller controller)
throws XPathException
Convert a Java object to an XPath value. This method is called to handle the result
of an external function call (but only if the required type is not known),
and also to process global parameters passed to the stylesheet.
evaluate
public Value evaluate(Context context)
throws XPathException
Evaluate the function.
- evaluate in interface Expression
context
- The context in which the function is to be evaluated
- a Value representing the result of the function.
getBestFit
public Object getBestFit(Value[] argValues)
throws XPathException
Get the best fit amongst all the candidate methods or constructors
- the result is either a Method or a Constructor. In JDK 1.2 these
have a common superclass, AccessibleObject, but this is not available
in JDK 1.1, which we still support.
getDataType
public int getDataType()
Determine the data type of the expression, if possible
- getDataType in interface Expression
- Value.ANY (meaning not known in advance)
getDependencies
public int getDependencies()
Determine which aspects of the context the expression depends on. The result is
a bitwise-or'ed value composed from constants such as Context.VARIABLES and
Context.CURRENT_NODE
- getDependencies in interface Expression
getName
public String getName()
Get the name of the function
- getName in interface Function
reduce
public Expression reduce(int dependencies,
Context context)
throws XPathException
Perform a partial evaluation of the expression, by eliminating specified dependencies
on the context.
- reduce in interface Expression
dependencies
- The dependencies to be removedcontext
- The context to be used for the partial evaluation
- a new expression that does not have any of the specified
dependencies
setFunctionName
public boolean setFunctionName(Class reqClass,
String localName)
setFunctionName: locates the external class and the method (or candidate methods)
to which this function relates. At this
stage addArguments() will have normally been called, so the number of arguments is known. If no
method of the required name is located, an exception is saved, but it is not thrown until
an attempt is made to evaluate the function. All methods that match the required number of
arguments are saved in a list (candidateMethods), a decision among these methods is made
at run-time when the types of the actual arguments are known.
The method is also used while calling
function-available(). In this case the number of arguments is not known (it will be
set to zero). We return true if a match was found, regardless of the number of arguments.
reqClass
- The Java class namelocalName
- The local name used in the XPath function call
- true if the function is available (with some number of arguments).