public class PropertyOrFieldReference extends SpelNodeImpl
Modifier and Type | Class and Description |
---|---|
(package private) static class |
PropertyOrFieldReference.AccessorLValue |
Modifier and Type | Field and Description |
---|---|
private PropertyAccessor |
cachedReadAccessor |
private PropertyAccessor |
cachedWriteAccessor |
private java.lang.String |
name |
private boolean |
nullSafe |
children, pos
Constructor and Description |
---|
PropertyOrFieldReference(boolean nullSafe,
java.lang.String propertyOrFieldName,
int pos) |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getName() |
private java.util.List<PropertyAccessor> |
getPropertyAccessorsToTry(java.lang.Class<?> targetType,
java.util.List<PropertyAccessor> propertyAccessors)
Determines the set of property resolvers that should be used to try and access a property on the specified target
type.
|
TypedValue |
getValueInternal(ExpressionState state) |
private TypedValue |
getValueInternal(TypedValue contextObject,
EvaluationContext eContext,
boolean isAutoGrowNullReferences) |
ValueRef |
getValueRef(ExpressionState state) |
boolean |
isNullSafe() |
boolean |
isWritable(ExpressionState state)
Determine if this expression node will support a setValue() call.
|
boolean |
isWritableProperty(java.lang.String name,
TypedValue contextObject,
EvaluationContext eContext) |
private TypedValue |
readProperty(TypedValue contextObject,
EvaluationContext eContext,
java.lang.String name)
Attempt to read the named property from the current context object.
|
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() |
private void |
writeProperty(TypedValue contextObject,
EvaluationContext eContext,
java.lang.String name,
java.lang.Object newValue) |
getChild, getChildCount, getEndPosition, getObjectClass, getPreviousChild, getStartPosition, getTypedValue, getValue, getValue, nextChildIs
private final boolean nullSafe
private final java.lang.String name
private volatile PropertyAccessor cachedReadAccessor
private volatile PropertyAccessor cachedWriteAccessor
public PropertyOrFieldReference(boolean nullSafe, java.lang.String propertyOrFieldName, int pos)
public boolean isNullSafe()
public java.lang.String getName()
public ValueRef getValueRef(ExpressionState state) throws EvaluationException
getValueRef
in class SpelNodeImpl
EvaluationException
public TypedValue getValueInternal(ExpressionState state) throws EvaluationException
getValueInternal
in class SpelNodeImpl
EvaluationException
private TypedValue getValueInternal(TypedValue contextObject, EvaluationContext eContext, boolean isAutoGrowNullReferences) throws EvaluationException
EvaluationException
public void setValue(ExpressionState state, java.lang.Object newValue) throws SpelEvaluationException
SpelNode
setValue
in interface SpelNode
setValue
in class SpelNodeImpl
state
- the current expression state (includes the context)newValue
- the new valueSpelEvaluationException
public boolean isWritable(ExpressionState state) throws SpelEvaluationException
SpelNode
isWritable
in interface SpelNode
isWritable
in class SpelNodeImpl
state
- the current expression state (includes the context)SpelEvaluationException
public java.lang.String toStringAST()
toStringAST
in interface SpelNode
toStringAST
in class SpelNodeImpl
private TypedValue readProperty(TypedValue contextObject, EvaluationContext eContext, java.lang.String name) throws EvaluationException
state
- the evaluation statename
- the name of the propertySpelEvaluationException
- if any problem accessing the property or it cannot be foundEvaluationException
private void writeProperty(TypedValue contextObject, EvaluationContext eContext, java.lang.String name, java.lang.Object newValue) throws SpelEvaluationException
SpelEvaluationException
public boolean isWritableProperty(java.lang.String name, TypedValue contextObject, EvaluationContext eContext) throws SpelEvaluationException
SpelEvaluationException
private java.util.List<PropertyAccessor> getPropertyAccessorsToTry(java.lang.Class<?> targetType, java.util.List<PropertyAccessor> propertyAccessors)
targetType
- the type upon which property access is being attempted