org.springframework.expression.spel.ast
Class Indexer
java.lang.Object
org.springframework.expression.spel.ast.SpelNodeImpl
org.springframework.expression.spel.ast.Indexer
- All Implemented Interfaces:
- SpelNode
public class Indexer
- extends SpelNodeImpl
An Indexer can index into some proceeding structure to access a particular piece of it.
Supported structures are: strings/collections (lists/sets)/arrays
- Since:
- 3.0
- Author:
- Andy Clement
Method Summary |
private java.lang.Object |
accessArrayElement(java.lang.Object ctx,
int idx)
|
private void |
checkAccess(int arrayLength,
int index)
|
TypedValue |
getValueInternal(ExpressionState state)
|
private boolean |
growCollection(ExpressionState state,
java.lang.Class<?> elementType,
int index,
java.util.Collection collection)
Attempt to grow the specified collection so that the specified index is valid. |
boolean |
isWritable(ExpressionState expressionState)
Determine if this expression node will support a setValue() call. |
private void |
setArrayElement(ExpressionState state,
java.lang.Object ctx,
int idx,
java.lang.Object newValue,
java.lang.Class clazz)
|
void |
setValue(ExpressionState state,
java.lang.Object newValue)
Evaluate the expression to a node and then set the new value on that node. |
java.lang.String |
toStringAST()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
cachedReadName
private java.lang.String cachedReadName
cachedReadTargetType
private java.lang.Class<?> cachedReadTargetType
cachedReadAccessor
private PropertyAccessor cachedReadAccessor
cachedWriteName
private java.lang.String cachedWriteName
cachedWriteTargetType
private java.lang.Class<?> cachedWriteTargetType
cachedWriteAccessor
private PropertyAccessor cachedWriteAccessor
Indexer
public Indexer(int pos,
SpelNodeImpl expr)
getValueInternal
public TypedValue getValueInternal(ExpressionState state)
throws EvaluationException
- Specified by:
getValueInternal
in class SpelNodeImpl
- Throws:
EvaluationException
isWritable
public boolean isWritable(ExpressionState expressionState)
throws SpelEvaluationException
- 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:
expressionState
- the current expression state (includes the context)
- Returns:
- true if the expression node will allow setValue()
- Throws:
SpelEvaluationException
setValue
public void setValue(ExpressionState state,
java.lang.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
- Overrides:
setValue
in class SpelNodeImpl
- Parameters:
state
- 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
growCollection
private boolean growCollection(ExpressionState state,
java.lang.Class<?> elementType,
int index,
java.util.Collection collection)
- Attempt to grow the specified collection so that the specified index is valid.
- Parameters:
state
- the expression stateelementType
- the type of the elements in the collectionindex
- the index into the collection that needs to be validcollection
- the collection to grow with elements
- Returns:
- true if collection growing succeeded, otherwise false
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
setArrayElement
private void setArrayElement(ExpressionState state,
java.lang.Object ctx,
int idx,
java.lang.Object newValue,
java.lang.Class clazz)
throws EvaluationException
- Throws:
EvaluationException
accessArrayElement
private java.lang.Object accessArrayElement(java.lang.Object ctx,
int idx)
throws SpelEvaluationException
- Throws:
SpelEvaluationException
checkAccess
private void checkAccess(int arrayLength,
int index)
throws SpelEvaluationException
- Throws:
SpelEvaluationException