org.springframework.expression.spel.ast

## Class CompoundExpression

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

All Implemented Interfaces:
  SpelNode

    public class CompoundExpression
    extends SpelNodeImpl

Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'

Since:
  3.0
Author:
  Andy Clement

### Field Summary

### Fields inherited from class org.springframework.expression.spel.ast.SpelNodeImpl

`children, pos`

### Constructor Summary

Constructors
Constructor and Description
`CompoundExpression(int pos, SpelNodeImpl... expressionComponents)`

### Method Summary

Methods
`TypedValue` `getValueInternal(ExpressionState state)` Evaluates a compound expression.
`protected ValueRef` `getValueRef(ExpressionState state)`
`boolean` `isWritable(ExpressionState state)` Determine if this expression node will support a setValue() call.
`void` `setValue(ExpressionState state, Object value)` Evaluate the expression to a node and then set the new value on that node.
`String` `toStringAST()`

### Methods inherited from class org.springframework.expression.spel.ast.SpelNodeImpl

`getChild, getChildCount, getEndPosition, getObjectClass, getPreviousChild, getStartPosition, getTypedValue, getValue, getValue, nextChildIs`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### CompoundExpression

    public CompoundExpression(int pos,
                      SpelNodeImpl... expressionComponents)

### Method Detail

#### getValueRef

    protected ValueRef getValueRef(ExpressionState state)
                            throws EvaluationException

Overrides:
  `getValueRef` in class `SpelNodeImpl`
Throws:
  `EvaluationException`

#### getValueInternal

    public TypedValue getValueInternal(ExpressionState state)
                                throws EvaluationException

Evaluates a compound expression. This involves evaluating each piece in turn and the return value from each piece is the active context object for the subsequent piece.

Specified by:
  `getValueInternal` in class `SpelNodeImpl`
Parameters:
  `state` - the state in which the expression is being evaluated
Returns:
  the final value from the last piece of the compound expression
Throws:
  `EvaluationException`

#### setValue

    public void setValue(ExpressionState state,
                Object value)
                  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`
Overrides:
  `setValue` in class `SpelNodeImpl`
Parameters:
  `state` - the current expression state (includes the context)
  `value` - the new value
Throws:
  `EvaluationException` - if any problem occurs evaluating the expression or setting the new value

#### isWritable

    public boolean isWritable(ExpressionState state)
                       throws EvaluationException

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

Specified by:
  `isWritable` in interface `SpelNode`
Overrides:
  `isWritable` in class `SpelNodeImpl`
Parameters:
  `state` - 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

#### toStringAST

    public String toStringAST()

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