Interface SpelNode
- All Known Implementing Classes:
- Assign,- BeanReference,- BooleanLiteral,- CompoundExpression,- ConstructorReference,- Elvis,- FloatLiteral,- FunctionReference,- Identifier,- Indexer,- InlineList,- InlineMap,- IntLiteral,- Literal,- LongLiteral,- MethodReference,- NullLiteral,- OpAnd,- OpDec,- OpDivide,- OpEQ,- Operator,- OperatorBetween,- OperatorInstanceof,- OperatorMatches,- OperatorNot,- OperatorPower,- OpGE,- OpGT,- OpInc,- OpLE,- OpLT,- OpMinus,- OpModulus,- OpMultiply,- OpNE,- OpOr,- OpPlus,- Projection,- PropertyOrFieldReference,- QualifiedIdentifier,- RealLiteral,- Selection,- SpelNodeImpl,- StringLiteral,- Ternary,- TypeReference,- VariableReference
- Since:
- 3.0
- Author:
- Andy Clement, Sam Brannen
- 
Method SummaryModifier and TypeMethodDescriptiondefault voidgenerateCode(MethodVisitor methodVisitor, CodeFlow codeFlow) Generate the bytecode for this node into the suppliedMethodVisitor.getChild(int index) Return the nth child under this node.intReturn the number of children under this node.intReturn the end position of this AST node in the expression string.Determine the class of the object passed in, unless it is already a class object.intReturn the start position of this AST node in the expression string.getTypedValue(ExpressionState expressionState) Evaluate the expression node in the context of the supplied expression state and return the typed value.getValue(ExpressionState expressionState) Evaluate the expression node in the context of the supplied expression state and return the value.default booleanDetermine if this node can be compiled to bytecode.booleanisWritable(ExpressionState expressionState) Determine if this expression node will support a setValue() call.voidsetValue(ExpressionState expressionState, @Nullable Object newValue) Evaluate the expression to a node and then set the new value on that node.Return the string form of this AST node.
- 
Method Details- 
getValueEvaluate the expression node in the context of the supplied expression state and return the value.- Parameters:
- expressionState- the current expression state (includes the context)
- Returns:
- the value of this node evaluated against the specified state
- Throws:
- EvaluationException- if any problem occurs evaluating the expression
 
- 
getTypedValueEvaluate the expression node in the context of the supplied expression state and return the typed value.- Parameters:
- expressionState- the current expression state (includes the context)
- Returns:
- the typed value of this node evaluated against the specified state
- Throws:
- EvaluationException- if any problem occurs evaluating the expression
 
- 
isWritableDetermine if this expression node will support a setValue() call.- Parameters:
- expressionState- the current expression state (includes the context)
- Returns:
- true if the expression node will allow setValue()
- Throws:
- EvaluationException- if something went wrong trying to determine if the node supports writing
 
- 
setValuevoid setValue(ExpressionState expressionState, @Nullable Object newValue) throws EvaluationException Evaluate the expression to a node and then set the new value on that node. For example, if the expression evaluates to a property reference, then the property will be set to the new value.- Parameters:
- expressionState- the current expression state (includes the context)
- newValue- the new value
- Throws:
- EvaluationException- if any problem occurs evaluating the expression or setting the new value
 
- 
toStringAST
- 
getChildCountint getChildCount()Return the number of children under this node.- Returns:
- the child count
- See Also:
 
- 
getChildReturn the nth child under this node.- Returns:
- the child node
- See Also:
 
- 
getObjectClassDetermine the class of the object passed in, unless it is already a class object.- Parameters:
- obj- the object that the caller wants the class of
- Returns:
- the class of the object if it is not already a class object,
 or nullif the object isnull
 
- 
getStartPositionint getStartPosition()Return the start position of this AST node in the expression string.- Returns:
- the start position
 
- 
getEndPositionint getEndPosition()Return the end position of this AST node in the expression string.- Returns:
- the end position
 
- 
isCompilabledefault boolean isCompilable()Determine if this node can be compiled to bytecode.The reasoning in each node may be different but will typically involve checking whether the exit type descriptor of the node is known and any relevant child nodes are compilable. The default implementation returns false.If you override this method, you must also override generateCode(MethodVisitor, CodeFlow).- Returns:
- trueif this node can be compiled to bytecode
- Since:
- 6.2
- See Also:
 
- 
generateCodeGenerate the bytecode for this node into the suppliedMethodVisitor.Context information about the current expression being compiled is available in the supplied CodeFlowobject — for example, information about the type of the object currently on the stack.This method will not be invoked unless isCompilable()returnstrue.The default implementation throws an IllegalStateExceptionsinceisCompilable()returnsfalseby default.If you override this method, you must also override isCompilable().- Parameters:
- methodVisitor- the ASM- MethodVisitorinto which code should be generated
- codeFlow- a context object with information about what is on the stack
- Since:
- 6.2
- See Also:
 
 
-