public class StandardEvaluationContext extends java.lang.Object implements EvaluationContext
EvaluationContext
implementation.
This context uses standard implementations of all applicable strategies,
based on reflection to resolve properties, methods and fields.
For a simpler builder-style context variant for data-binding purposes,
consider using SimpleEvaluationContext
instead which allows for
opting into several SpEL features as needed by specific evaluation cases.
Modifier and Type | Field and Description |
---|---|
private BeanResolver |
beanResolver |
private java.util.List<ConstructorResolver> |
constructorResolvers |
private java.util.List<MethodResolver> |
methodResolvers |
private OperatorOverloader |
operatorOverloader |
private java.util.List<PropertyAccessor> |
propertyAccessors |
private ReflectiveMethodResolver |
reflectiveMethodResolver |
private TypedValue |
rootObject |
private TypeComparator |
typeComparator |
private TypeConverter |
typeConverter |
private TypeLocator |
typeLocator |
private java.util.Map<java.lang.String,java.lang.Object> |
variables |
Constructor and Description |
---|
StandardEvaluationContext()
Create a
StandardEvaluationContext with a null root object. |
StandardEvaluationContext(java.lang.Object rootObject)
Create a
StandardEvaluationContext with the given root object. |
Modifier and Type | Method and Description |
---|---|
void |
addConstructorResolver(ConstructorResolver resolver) |
void |
addMethodResolver(MethodResolver resolver) |
void |
addPropertyAccessor(PropertyAccessor accessor) |
private void |
ensureConstructorResolversInitialized() |
private void |
ensureMethodResolversInitialized() |
private void |
ensurePropertyAccessorsInitialized() |
BeanResolver |
getBeanResolver()
Return a bean resolver that can look up beans by name.
|
java.util.List<ConstructorResolver> |
getConstructorResolvers()
Return a list of resolvers that will be asked in turn to locate a constructor.
|
java.util.List<MethodResolver> |
getMethodResolvers()
Return a list of resolvers that will be asked in turn to locate a method.
|
OperatorOverloader |
getOperatorOverloader()
Return an operator overloader that may support mathematical operations
between more than the standard set of types.
|
java.util.List<PropertyAccessor> |
getPropertyAccessors()
Return a list of accessors that will be asked in turn to read/write a property.
|
TypedValue |
getRootObject()
Return the default root context object against which unqualified
properties/methods/etc should be resolved.
|
TypeComparator |
getTypeComparator()
Return a type comparator for comparing pairs of objects for equality.
|
TypeConverter |
getTypeConverter()
Return a type converter that can convert (or coerce) a value from one type to another.
|
TypeLocator |
getTypeLocator()
Return a type locator that can be used to find types, either by short or
fully qualified name.
|
private void |
initializeConstructorResolvers() |
private void |
initializeMethodResolvers() |
private void |
initializePropertyAccessors() |
java.lang.Object |
lookupVariable(java.lang.String name)
Look up a named variable within this evaluation context.
|
void |
registerFunction(java.lang.String name,
java.lang.reflect.Method method) |
void |
registerMethodFilter(java.lang.Class<?> type,
MethodFilter filter)
Register a
MethodFilter which will be called during method resolution
for the specified type. |
boolean |
removeConstructorResolver(ConstructorResolver resolver) |
boolean |
removeMethodResolver(MethodResolver methodResolver) |
boolean |
removePropertyAccessor(PropertyAccessor accessor) |
void |
setBeanResolver(BeanResolver beanResolver) |
void |
setConstructorResolvers(java.util.List<ConstructorResolver> constructorResolvers) |
void |
setMethodResolvers(java.util.List<MethodResolver> methodResolvers) |
void |
setOperatorOverloader(OperatorOverloader operatorOverloader) |
void |
setPropertyAccessors(java.util.List<PropertyAccessor> propertyAccessors) |
void |
setRootObject(java.lang.Object rootObject) |
void |
setRootObject(java.lang.Object rootObject,
TypeDescriptor typeDescriptor) |
void |
setTypeComparator(TypeComparator typeComparator) |
void |
setTypeConverter(TypeConverter typeConverter) |
void |
setTypeLocator(TypeLocator typeLocator) |
void |
setVariable(java.lang.String name,
java.lang.Object value)
Set a named variable within this evaluation context to a specified value.
|
void |
setVariables(java.util.Map<java.lang.String,java.lang.Object> variables) |
private TypedValue rootObject
private java.util.List<ConstructorResolver> constructorResolvers
private java.util.List<MethodResolver> methodResolvers
private BeanResolver beanResolver
private ReflectiveMethodResolver reflectiveMethodResolver
private java.util.List<PropertyAccessor> propertyAccessors
private TypeLocator typeLocator
private TypeConverter typeConverter
private TypeComparator typeComparator
private OperatorOverloader operatorOverloader
private final java.util.Map<java.lang.String,java.lang.Object> variables
public StandardEvaluationContext()
StandardEvaluationContext
with a null root object.public StandardEvaluationContext(java.lang.Object rootObject)
StandardEvaluationContext
with the given root object.rootObject
- the root object to usesetRootObject(java.lang.Object, org.springframework.core.convert.TypeDescriptor)
public void setRootObject(java.lang.Object rootObject, TypeDescriptor typeDescriptor)
public void setRootObject(java.lang.Object rootObject)
public TypedValue getRootObject()
EvaluationContext
getRootObject
in interface EvaluationContext
public void setPropertyAccessors(java.util.List<PropertyAccessor> propertyAccessors)
public java.util.List<PropertyAccessor> getPropertyAccessors()
EvaluationContext
getPropertyAccessors
in interface EvaluationContext
public void addPropertyAccessor(PropertyAccessor accessor)
public boolean removePropertyAccessor(PropertyAccessor accessor)
public void setConstructorResolvers(java.util.List<ConstructorResolver> constructorResolvers)
public java.util.List<ConstructorResolver> getConstructorResolvers()
EvaluationContext
getConstructorResolvers
in interface EvaluationContext
public void addConstructorResolver(ConstructorResolver resolver)
public boolean removeConstructorResolver(ConstructorResolver resolver)
public void setMethodResolvers(java.util.List<MethodResolver> methodResolvers)
public java.util.List<MethodResolver> getMethodResolvers()
EvaluationContext
getMethodResolvers
in interface EvaluationContext
public void addMethodResolver(MethodResolver resolver)
public boolean removeMethodResolver(MethodResolver methodResolver)
public void setBeanResolver(BeanResolver beanResolver)
public BeanResolver getBeanResolver()
EvaluationContext
getBeanResolver
in interface EvaluationContext
public void setTypeLocator(TypeLocator typeLocator)
public TypeLocator getTypeLocator()
EvaluationContext
getTypeLocator
in interface EvaluationContext
public void setTypeConverter(TypeConverter typeConverter)
public TypeConverter getTypeConverter()
EvaluationContext
getTypeConverter
in interface EvaluationContext
public void setTypeComparator(TypeComparator typeComparator)
public TypeComparator getTypeComparator()
EvaluationContext
getTypeComparator
in interface EvaluationContext
public void setOperatorOverloader(OperatorOverloader operatorOverloader)
public OperatorOverloader getOperatorOverloader()
EvaluationContext
getOperatorOverloader
in interface EvaluationContext
public void setVariable(java.lang.String name, java.lang.Object value)
EvaluationContext
setVariable
in interface EvaluationContext
name
- variable to setvalue
- value to be placed in the variablepublic void setVariables(java.util.Map<java.lang.String,java.lang.Object> variables)
public void registerFunction(java.lang.String name, java.lang.reflect.Method method)
public java.lang.Object lookupVariable(java.lang.String name)
EvaluationContext
lookupVariable
in interface EvaluationContext
name
- variable to lookupnull
if not foundpublic void registerMethodFilter(java.lang.Class<?> type, MethodFilter filter) throws java.lang.IllegalStateException
MethodFilter
which will be called during method resolution
for the specified type.
The MethodFilter
may remove methods and/or sort the methods which
will then be used by SpEL as the candidates to look through for a match.
type
- the type for which the filter should be calledfilter
- a MethodFilter
, or null
to unregister a filter for the typejava.lang.IllegalStateException
- if the ReflectiveMethodResolver
is not in useprivate void ensurePropertyAccessorsInitialized()
private void initializePropertyAccessors()
private void ensureConstructorResolversInitialized()
private void initializeConstructorResolvers()
private void ensureMethodResolversInitialized()
private void initializeMethodResolvers()