Class ExtensionFunctionCall

    • Constructor Detail

      • ExtensionFunctionCall

        public ExtensionFunctionCall()
        Default constructor
    • Method Detail

      • init

        public void init​(int nameCode,
                         java.lang.Class theClass,
                         java.lang.reflect.AccessibleObject object,
                         Configuration config)
        Initialization: creates an ExtensionFunctionCall
        Parameters:
        nameCode - the name code of the function, for display purposes
        theClass - the Java class containing the method to be called
        object - the method, field, or constructor of the Java class to be called
      • preEvaluate

        public Expression preEvaluate​(StaticContext env)
        preEvaluate: this method suppresses compile-time evaluation by doing nothing (because the external function might have side-effects and might use the context)
        Overrides:
        preEvaluate in class FunctionCall
      • getIntrinsicDependencies

        public int getIntrinsicDependencies()
        Determine which aspects of the context the expression depends on. The result is a bitwise-or'ed value composed from constants such as XPathContext.VARIABLES and XPathContext.CURRENT_NODE
        Overrides:
        getIntrinsicDependencies in class ComputedExpression
        Returns:
        a set of bit-significant flags identifying the "intrinsic" dependencies. The flags are documented in class net.sf.saxon.value.StaticProperty
      • getTargetClass

        public java.lang.Class getTargetClass()
        Get the class containing the method being called
      • getTargetMethod

        public java.lang.reflect.AccessibleObject getTargetMethod()
        Get the target method (or field, or constructor) being called
      • getItemType

        public ItemType getItemType​(TypeHierarchy th)
        Determine the data type of the expression, if possible. All expressions return sequences, in general; this method determines the type of the items within the sequence, assuming that (a) this is known in advance, and (b) it is the same for all items in the sequence.

        This method will always return a result, though it may be the best approximation that is available at the time.

        Parameters:
        th -
        Returns:
        the item type
      • usesFocus

        public boolean usesFocus()
        Determine whether this method uses the focus. True if the first argument is of type XPathContext.
      • invokeConstructor

        protected java.lang.Object invokeConstructor​(java.lang.reflect.Constructor constructor,
                                                     java.lang.Object[] params)
                                              throws java.lang.InstantiationException,
                                                     java.lang.IllegalAccessException,
                                                     java.lang.reflect.InvocationTargetException
        Invoke a constructor. This method is provided separately so that it can be refined in a subclass. For example, a subclass might perform tracing of calls, or might trap exceptions.
        Parameters:
        constructor - The constructor to be invoked
        params - The parameters to be passed to the constructor
        Returns:
        The object returned by the constructor
        Throws:
        java.lang.InstantiationException - if the invocation throws an InstantiationException
        java.lang.IllegalAccessException - if the invocation throws an IllegalAccessException
        java.lang.reflect.InvocationTargetException - if the invocation throws an InvocationTargetException (which happens when the constructor itself throws an exception)
      • invokeMethod

        protected java.lang.Object invokeMethod​(java.lang.reflect.Method method,
                                                java.lang.Object instance,
                                                java.lang.Object[] params)
                                         throws java.lang.IllegalAccessException,
                                                java.lang.reflect.InvocationTargetException
        Invoke a method. This method is provided separately so that it can be refined in a subclass. For example, a subclass might perform tracing of calls, or might trap exceptions.
        Parameters:
        method - The method to be invoked
        instance - The object on which the method is to be invoked. This is set to null if the method is static.
        params - The parameters to be passed to the method
        Returns:
        The object returned by the method
        Throws:
        java.lang.IllegalAccessException - if the invocation throws an IllegalAccessException
        java.lang.reflect.InvocationTargetException - if the invocation throws an InvocationTargetException (which happens when the method itself throws an exception)
      • getField

        protected java.lang.Object getField​(java.lang.reflect.Field field,
                                            java.lang.Object instance)
                                     throws java.lang.IllegalAccessException
        Access a field. This method is provided separately so that it can be refined in a subclass. For example, a subclass might perform tracing of calls, or might trap exceptions.
        Parameters:
        field - The field to be retrieved
        instance - The object whose field is to be retrieved. This is set to null if the field is static.
        Returns:
        The value of the field
        Throws:
        java.lang.IllegalAccessException - if the invocation throws an IllegalAccessException