## org.springframework.expression.spel.ast
Class SpelNodeImpl

    java.lang.Object
      org.springframework.expression.spel.ast.SpelNodeImpl

All Implemented Interfaces:
  SpelNode

Direct Known Subclasses:
  Assign, BeanReference, CompoundExpression, ConstructorReference, Elvis, FunctionReference, Identifier, Indexer, InlineList, Literal, MethodReference, Operator, OperatorNot, Projection, PropertyOrFieldReference, QualifiedIdentifier, Selection, Ternary, TypeReference, VariableReference

    public abstract class SpelNodeImpl

extends Object
implements SpelNode

The common supertype of all AST nodes in a parsed Spring Expression Language format expression.

Since:
  3.0
Author:
  Andy Clement

Field Summary
`protected SpelNodeImpl[]` `children`
`protected int` `pos`

Constructor Summary
`SpelNodeImpl(int pos, SpelNodeImpl... operands)`

Method Summary
`SpelNode` `getChild(int index)` Helper method that returns a SpelNode rather than an Antlr Tree node.
`int` `getChildCount()`
`int` `getEndPosition()`
`Class<?>` `getObjectClass(Object obj)` Determine the class of the object passed in, unless it is already a class object.
`protected SpelNodeImpl` `getPreviousChild()`
`int` `getStartPosition()`
`TypedValue` `getTypedValue(ExpressionState expressionState)` Evaluate the expression node in the context of the supplied expression state and return the typed value.
`Object` `getValue(ExpressionState expressionState)` Evaluate the expression node in the context of the supplied expression state and return the value.

`protected

`<T> T`

`

`getValue(ExpressionState state, Class<T> desiredReturnType)`

`abstract TypedValue` `getValueInternal(ExpressionState expressionState)`
`boolean` `isWritable(ExpressionState expressionState)` Determine if this expression node will support a setValue() call.
`protected boolean` `nextChildIs(Class... clazzes)`
`void` `setValue(ExpressionState expressionState, Object newValue)` Evaluate the expression to a node and then set the new value on that node.
`abstract String` `toStringAST()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### pos

    protected int pos

### children

    protected SpelNodeImpl[] children

Constructor Detail

### SpelNodeImpl

    public SpelNodeImpl(int pos,
                        SpelNodeImpl... operands)

Method Detail

### getPreviousChild

    protected SpelNodeImpl getPreviousChild()

### nextChildIs

    protected boolean nextChildIs(Class... clazzes)

  Returns:
    true if the next child is one of the specified classes

### getValue

    public final Object getValue(ExpressionState expressionState)
                          throws EvaluationException

  Description copied from interface: `SpelNode`
  Evaluate the expression node in the context of the supplied expression state and return the value.

  Specified by:
    `getValue` in interface `SpelNode`
  Parameters:
    `expressionState` - the current expression state (includes the context)
  Returns:
    the value of this node evaluated against the specified state
  Throws:
    `EvaluationException`

### getTypedValue

    public final TypedValue getTypedValue(ExpressionState expressionState)
                                   throws EvaluationException

  Description copied from interface: `SpelNode`
  Evaluate the expression node in the context of the supplied expression state and return the typed value.

  Specified by:
    `getTypedValue` in interface `SpelNode`
  Parameters:
    `expressionState` - the current expression state (includes the context)
  Returns:
    the type value of this node evaluated against the specified state
  Throws:
    `EvaluationException`

### isWritable

    public boolean isWritable(ExpressionState expressionState)
                       throws EvaluationException

  Description copied from interface: `SpelNode`
  Determine if this expression node will support a setValue() call.

  Specified by:
    `isWritable` in interface `SpelNode`
  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

### setValue

    public void setValue(ExpressionState expressionState,
                         Object newValue)
                  throws EvaluationException

  Description copied from interface: `SpelNode`
  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.

  Specified by:
    `setValue` in interface `SpelNode`
  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

### getChild

    public SpelNode getChild(int index)

  Description copied from interface: `SpelNode`
  Helper method that returns a SpelNode rather than an Antlr Tree node.

  Specified by:
    `getChild` in interface `SpelNode`
  Returns:
    the child node cast to a SpelNode

### getChildCount

    public int getChildCount()

  Specified by:
    `getChildCount` in interface `SpelNode`
  Returns:
    the number of children under this node

### getObjectClass

    public Class<?> getObjectClass(Object obj)

  Description copied from interface: `SpelNode`
  Determine the class of the object passed in, unless it is already a class object.

  Specified by:
    `getObjectClass` in interface `SpelNode`
  Returns:
    the class of the object if it is not already a class object, or null if the object is null

### getValue

    protected final <T> T getValue(ExpressionState state,
                                   Class<T> desiredReturnType)
                        throws EvaluationException

  Throws:
    `EvaluationException`

### getValueInternal

    public abstract TypedValue getValueInternal(ExpressionState expressionState)
                                         throws EvaluationException

  Throws:
    `EvaluationException`

### toStringAST

    public abstract String toStringAST()

  Specified by:
    `toStringAST` in interface `SpelNode`
  Returns:
    the string form of this AST node

### getStartPosition

    public int getStartPosition()

  Specified by:
    `getStartPosition` in interface `SpelNode`
  Returns:
    the start position of this Ast node in the expression string

### getEndPosition

    public int getEndPosition()

  Specified by:
    `getEndPosition` in interface `SpelNode`
  Returns:
    the end position of this Ast node in the expression string