org.springframework.expression.spel.ast
Class FunctionReference

java.lang.Object
  extended by org.springframework.expression.spel.ast.SpelNodeImpl
      extended by org.springframework.expression.spel.ast.FunctionReference
All Implemented Interfaces:
SpelNode

public class FunctionReference
extends SpelNodeImpl

A function reference is of the form "#someFunction(a,b,c)". Functions may be defined in the context prior to the expression being evaluated or within the expression itself using a lambda function definition. For example: Lambda function definition in an expression: "(#max = {|x,y|$x>$y?$x:$y};max(2,3))" Calling context defined function: "#isEven(37)". Functions may also be static java methods, registered in the context prior to invocation of the expression.

Functions are very simplistic, the arguments are not part of the definition (right now), so the names must be unique.

Since:
3.0
Author:
Andy Clement

Field Summary
private  java.lang.String name
           
 
Fields inherited from class org.springframework.expression.spel.ast.SpelNodeImpl
children, pos
 
Constructor Summary
FunctionReference(java.lang.String functionName, int pos, SpelNodeImpl... arguments)
           
 
Method Summary
private  TypedValue executeFunctionJLRMethod(ExpressionState state, java.lang.reflect.Method method)
          Execute a function represented as a java.lang.reflect.Method.
private  java.lang.Object[] getArguments(ExpressionState state)
          Compute the arguments to the function, they are the children of this expression node.
 TypedValue getValueInternal(ExpressionState state)
           
 java.lang.String toStringAST()
           
 
Methods inherited from class org.springframework.expression.spel.ast.SpelNodeImpl
getChild, getChildCount, getEndPosition, getObjectClass, getPreviousChild, getStartPosition, getTypedValue, getValue, getValue, isWritable, nextChildIs, setValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

private final java.lang.String name
Constructor Detail

FunctionReference

public FunctionReference(java.lang.String functionName,
                         int pos,
                         SpelNodeImpl... arguments)
Method Detail

getValueInternal

public TypedValue getValueInternal(ExpressionState state)
                            throws EvaluationException
Specified by:
getValueInternal in class SpelNodeImpl
Throws:
EvaluationException

executeFunctionJLRMethod

private TypedValue executeFunctionJLRMethod(ExpressionState state,
                                            java.lang.reflect.Method method)
                                     throws EvaluationException
Execute a function represented as a java.lang.reflect.Method.

Parameters:
state - the expression evaluation state
the - java method to invoke
Returns:
the return value of the invoked Java method
Throws:
EvaluationException - if there is any problem invoking the method

toStringAST

public java.lang.String toStringAST()
Specified by:
toStringAST in interface SpelNode
Specified by:
toStringAST in class SpelNodeImpl
Returns:
the string form of this AST node

getArguments

private java.lang.Object[] getArguments(ExpressionState state)
                                 throws EvaluationException
Compute the arguments to the function, they are the children of this expression node.

Returns:
an array of argument values for the function call
Throws:
EvaluationException