Class FunctionCallExpression

  • All Implemented Interfaces:
    Expression
    Direct Known Subclasses:
    BooleanFunctionCallExpr

    public class FunctionCallExpression
    extends Object
    implements Expression
    Function call expression for use in selector expressions. Includes an extensible interface to allow custom functions to be added without changes to the core.

    Use registerFunction() to register new function implementations for use in selectors.

    • Method Detail

      • registerFunction

        public static boolean registerFunction​(String name,
                                               FilterFunction impl)
        Register the function with the specified name.
        Parameters:
        name - - the function name, as used in selector expressions. Case Sensitive.
        impl - - class which implements the function interface, including parse-time and evaluation-time operations.
        Returns:
        true - if the function is successfully registered; false - if a function with the same name is already registered.
      • deregisterFunction

        public static void deregisterFunction​(String name)
        Remove the registration of the function with the specified name.

        Note that parsed expressions using this function will still access its implementation after this call.

        Parameters:
        name - - name of the function to remove.
      • createFunctionCall

        public static FunctionCallExpression createFunctionCall​(String func_name,
                                                                List<Expression> args)
                                                         throws FunctionCallExpression.invalidFunctionExpressionException
        Create a function call expression for the named function and argument list, returning a Boolean function call expression if the function returns a boolean value so that it may be used in boolean contexts. Used by the parser when a function call is identified. Note that the function call is created after all argument expressions so that the function call can properly detect whether it evaluates to a Boolean value.
        Parameters:
        func_name - - name of the function, as used in selectors.
        args - - list of argument expressions passed to the function.
        Returns:
        an instance of a BooleanFunctionCallExpr if the function returns a boolean value in this call, or a FunctionCallExpression otherwise.
        Throws:
        invalidFunctionExpression - - if the function name is not valid, or the given argument list is not valid for the function.
        FunctionCallExpression.invalidFunctionExpressionException
      • getNumArguments

        public int getNumArguments()
        Retrieve the number of arguments for the function call defined in this expression.
        Returns:
        the number of arguments being passed to the function.
      • getArgument

        public Expression getArgument​(int which)
        Retrieve the argument at the specified index; the first argument is index 0. Used by implementations of FilterFunction objects to check arguments and evaluate them, as needed.
        Parameters:
        which - - number of the argument to retrieve; the first is 0.
      • toString

        public String toString()
        Translate the expression back into text in a form similar to the input to the selector parser.
        Overrides:
        toString in class Object