Class EvaluationContext
- java.lang.Object
-
- javax.el.ELContext
-
- com.sun.el.lang.EvaluationContext
-
public final class EvaluationContext extends ELContext
The context for EL expression evaluation. This wrapper ELContext captures the function mapper and the variable mapper at the point when the epxression is parsed, and only for those functions and variable used in the expression.
-
-
Field Summary
Fields Modifier and Type Field Description private ELContext
elContext
private FunctionMapper
fnMapper
private VariableMapper
varMapper
-
Constructor Summary
Constructors Constructor Description EvaluationContext(ELContext elContext, FunctionMapper fnMapper, VariableMapper varMapper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addEvaluationListener(EvaluationListener listener)
Registers an evaluation listener to the ELContext.java.lang.Object
convertToType(java.lang.Object obj, java.lang.Class<?> targetType)
Converts an object to a specific type.void
enterLambdaScope(java.util.Map<java.lang.String,java.lang.Object> args)
Installs a Lambda argument map, in preparation for the evaluation of a Lambda expression.void
exitLambdaScope()
Exits the Lambda expression evaluation.java.lang.Object
getContext(java.lang.Class key)
Returns the context object associated with the given key.ELContext
getELContext()
ELResolver
getELResolver()
Retrieves theELResolver
associated with this context.java.util.List<EvaluationListener>
getEvaluationListeners()
Returns the list of registered evaluation listeners.FunctionMapper
getFunctionMapper()
Retrieves theFunctionMapper
associated with thisELContext
.ImportHandler
getImportHandler()
Retrieves theImportHandler
associated with thisELContext
.java.lang.Object
getLambdaArgument(java.lang.String arg)
Retrieves the Lambda argument associated with a formal parameter.VariableMapper
getVariableMapper()
Retrieves theVariableMapper
associated with thisELContext
.boolean
isLambdaArgument(java.lang.String arg)
Inquires if the name is a LambdaArgumentboolean
isPropertyResolved()
Returns whether anELResolver
has successfully resolved a given (base, property) pair.void
notifyAfterEvaluation(java.lang.String expr)
Notifies the listeners after an EL expression is evaluatedvoid
notifyBeforeEvaluation(java.lang.String expr)
Notifies the listeners before an EL expression is evaluatedvoid
notifyPropertyResolved(java.lang.Object base, java.lang.Object property)
Notifies the listeners when the (base, property) pair is resolvedvoid
putContext(java.lang.Class key, java.lang.Object contextObject)
Associates a context object with thisELContext
.void
setPropertyResolved(boolean resolved)
Called to indicate that aELResolver
has successfully resolved a given (base, property) pair.void
setPropertyResolved(java.lang.Object base, java.lang.Object property)
Called to indicate that aELResolver
has successfully resolved a given (base, property) pair and to notify theEvaluationListener
s.
-
-
-
Field Detail
-
elContext
private final ELContext elContext
-
fnMapper
private final FunctionMapper fnMapper
-
varMapper
private final VariableMapper varMapper
-
-
Constructor Detail
-
EvaluationContext
public EvaluationContext(ELContext elContext, FunctionMapper fnMapper, VariableMapper varMapper)
-
-
Method Detail
-
getELContext
public ELContext getELContext()
-
getFunctionMapper
public FunctionMapper getFunctionMapper()
Description copied from class:ELContext
Retrieves theFunctionMapper
associated with thisELContext
.- Specified by:
getFunctionMapper
in classELContext
- Returns:
- The function mapper to be consulted for the resolution of EL functions.
-
getVariableMapper
public VariableMapper getVariableMapper()
Description copied from class:ELContext
Retrieves theVariableMapper
associated with thisELContext
.- Specified by:
getVariableMapper
in classELContext
- Returns:
- The variable mapper to be consulted for the resolution of EL variables.
-
getContext
public java.lang.Object getContext(java.lang.Class key)
Description copied from class:ELContext
Returns the context object associated with the given key.The
ELContext
maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used byELResolver
s. This method is used to retrieve the context with the given key from the collection.By convention, the object returned will be of the type specified by the
key
. However, this is not required and the key is used strictly as a unique identifier.- Overrides:
getContext
in classELContext
- Parameters:
key
- The unique identifier that was used to associate the context object with thisELContext
.- Returns:
- The context object associated with the given key, or null if no such context was found.
-
getELResolver
public ELResolver getELResolver()
Description copied from class:ELContext
Retrieves theELResolver
associated with this context.The
ELContext
maintains a reference to theELResolver
that will be consulted to resolve variables and properties during an expression evaluation. This method retrieves the reference to the resolver.Once an
ELContext
is constructed, the reference to theELResolver
associated with the context cannot be changed.- Specified by:
getELResolver
in classELContext
- Returns:
- The resolver to be consulted for variable and property resolution during expression evaluation.
-
isPropertyResolved
public boolean isPropertyResolved()
Description copied from class:ELContext
Returns whether anELResolver
has successfully resolved a given (base, property) pair.The
CompositeELResolver
checks this property to determine whether it should consider or skip other component resolvers.- Overrides:
isPropertyResolved
in classELContext
- Returns:
- true if the property has been resolved, or false if not.
- See Also:
CompositeELResolver
-
putContext
public void putContext(java.lang.Class key, java.lang.Object contextObject)
Description copied from class:ELContext
Associates a context object with thisELContext
.The
ELContext
maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used byELResolver
s. This method is used to add a context object to that collection.By convention, the
contextObject
will be of the type specified by thekey
. However, this is not required and the key is used strictly as a unique identifier.- Overrides:
putContext
in classELContext
- Parameters:
key
- The key used by an @{link ELResolver} to identify this context object.contextObject
- The context object to add to the collection.
-
setPropertyResolved
public void setPropertyResolved(boolean resolved)
Description copied from class:ELContext
Called to indicate that aELResolver
has successfully resolved a given (base, property) pair. UseELContext.setPropertyResolved(Object, Object)
if resolved is true and to notifyEvaluationListener
s.The
CompositeELResolver
checks this property to determine whether it should consider or skip other component resolvers.- Overrides:
setPropertyResolved
in classELContext
- Parameters:
resolved
- true if the property has been resolved, or false if not.- See Also:
CompositeELResolver
-
setPropertyResolved
public void setPropertyResolved(java.lang.Object base, java.lang.Object property)
Description copied from class:ELContext
Called to indicate that aELResolver
has successfully resolved a given (base, property) pair and to notify theEvaluationListener
s.The
CompositeELResolver
checks this property to determine whether it should consider or skip other component resolvers.- Overrides:
setPropertyResolved
in classELContext
- Parameters:
base
- The base objectproperty
- The property object- See Also:
CompositeELResolver
-
addEvaluationListener
public void addEvaluationListener(EvaluationListener listener)
Description copied from class:ELContext
Registers an evaluation listener to the ELContext.- Overrides:
addEvaluationListener
in classELContext
- Parameters:
listener
- The listener to be added.
-
getEvaluationListeners
public java.util.List<EvaluationListener> getEvaluationListeners()
Description copied from class:ELContext
Returns the list of registered evaluation listeners.- Overrides:
getEvaluationListeners
in classELContext
- Returns:
- The list of registered evaluation listeners.
-
notifyBeforeEvaluation
public void notifyBeforeEvaluation(java.lang.String expr)
Description copied from class:ELContext
Notifies the listeners before an EL expression is evaluated- Overrides:
notifyBeforeEvaluation
in classELContext
- Parameters:
expr
- The EL expression string to be evaluated
-
notifyAfterEvaluation
public void notifyAfterEvaluation(java.lang.String expr)
Description copied from class:ELContext
Notifies the listeners after an EL expression is evaluated- Overrides:
notifyAfterEvaluation
in classELContext
- Parameters:
expr
- The EL expression string that has been evaluated
-
notifyPropertyResolved
public void notifyPropertyResolved(java.lang.Object base, java.lang.Object property)
Description copied from class:ELContext
Notifies the listeners when the (base, property) pair is resolved- Overrides:
notifyPropertyResolved
in classELContext
- Parameters:
base
- The base objectproperty
- The property Object
-
isLambdaArgument
public boolean isLambdaArgument(java.lang.String arg)
Description copied from class:ELContext
Inquires if the name is a LambdaArgument- Overrides:
isLambdaArgument
in classELContext
- Parameters:
arg
- A possible Lambda formal parameter name- Returns:
- true if arg is a LambdaArgument, false otherwise.
-
getLambdaArgument
public java.lang.Object getLambdaArgument(java.lang.String arg)
Description copied from class:ELContext
Retrieves the Lambda argument associated with a formal parameter. If the Lambda expression is nested within other Lambda expressions, the arguments for the current Lambda expression is first searched, and if not found, the arguments for the immediate nesting Lambda expression then searched, and so on.- Overrides:
getLambdaArgument
in classELContext
- Parameters:
arg
- The formal parameter for the Lambda argument- Returns:
- The object associated with formal parameter. Null if no object has been associated with the parameter.
-
enterLambdaScope
public void enterLambdaScope(java.util.Map<java.lang.String,java.lang.Object> args)
Description copied from class:ELContext
Installs a Lambda argument map, in preparation for the evaluation of a Lambda expression. The arguments in the map will be in scope during the evaluation of the Lambda expression.- Overrides:
enterLambdaScope
in classELContext
- Parameters:
args
- The Lambda arguments map
-
exitLambdaScope
public void exitLambdaScope()
Description copied from class:ELContext
Exits the Lambda expression evaluation. The Lambda argument map that was previously installed is removed.- Overrides:
exitLambdaScope
in classELContext
-
convertToType
public java.lang.Object convertToType(java.lang.Object obj, java.lang.Class<?> targetType)
Description copied from class:ELContext
Converts an object to a specific type. If a custom converter in theELResolver
handles this conversion, it is used. Otherwise the standard coercions is applied.An
ELException
is thrown if an error occurs during the conversion.- Overrides:
convertToType
in classELContext
- Parameters:
obj
- The object to convert.targetType
- The target type for the conversion.
-
getImportHandler
public ImportHandler getImportHandler()
Description copied from class:ELContext
Retrieves theImportHandler
associated with thisELContext
.- Overrides:
getImportHandler
in classELContext
- Returns:
- The import handler to manage imports of classes and packages.
-
-