@ -20,18 +20,19 @@ import org.springframework.core.convert.TypeDescriptor;
@@ -20,18 +20,19 @@ import org.springframework.core.convert.TypeDescriptor;
import org.springframework.lang.Nullable ;
/ * *
* An expression capable of evaluating itself against context objects . Encapsulates the
* details of a previously parsed expression string . Provides a common abstraction for
* expression evaluation independent of any language like OGNL or the Unified EL .
* An expression capable of evaluating itself against context objects .
* Encapsulates the details of a previously parsed expression string .
* Provides a common abstraction for expression evaluation .
*
* @author Keith Donald
* @author Andy Clement
* @author Juergen Hoeller
* @since 3 . 0
* /
public interface Expression {
/ * *
* Return the original string used to create this expression , unmodified .
* Return the original string used to create this expression ( unmodified ) .
* @return the original expression string
* /
String getExpressionString ( ) ;
@ -45,8 +46,9 @@ public interface Expression {
@@ -45,8 +46,9 @@ public interface Expression {
Object getValue ( ) throws EvaluationException ;
/ * *
* Evaluate the expression in the default context . If the result of the evaluation does not match ( and
* cannot be converted to ) the expected result type then an exception will be returned .
* Evaluate the expression in the default context . If the result
* of the evaluation does not match ( and cannot be converted to )
* the expected result type then an exception will be returned .
* @param desiredResultType the class the caller would like the result to be
* @return the evaluation result
* @throws EvaluationException if there is a problem during evaluation
@ -55,8 +57,8 @@ public interface Expression {
@@ -55,8 +57,8 @@ public interface Expression {
< T > T getValue ( @Nullable Class < T > desiredResultType ) throws EvaluationException ;
/ * *
* Evaluate this expression against the specified root object
* @param rootObject the root object against which properties / etc will be resolved
* Evaluate this expression against the specified root object .
* @param rootObject the root object against which to evaluate the expression
* @return the evaluation result
* @throws EvaluationException if there is a problem during evaluation
* /
@ -64,10 +66,10 @@ public interface Expression {
@@ -64,10 +66,10 @@ public interface Expression {
Object getValue ( Object rootObject ) throws EvaluationException ;
/ * *
* Evaluate the expression in the default context against the specified root object . If the
* result of the evaluation does not match ( and cannot be converted to ) the expected result type
* then an exception will be returned .
* @param rootObject the root object against which properties / etc will be resolved
* Evaluate the expression in the default context against the specified root
* object . If the result of the evaluation does not match ( and cannot be
* converted to ) the expected result type then an exception will be returned .
* @param rootObject the root object against which to evaluate the expression
* @param desiredResultType the class the caller would like the result to be
* @return the evaluation result
* @throws EvaluationException if there is a problem during evaluation
@ -76,7 +78,8 @@ public interface Expression {
@@ -76,7 +78,8 @@ public interface Expression {
< T > T getValue ( Object rootObject , @Nullable Class < T > desiredResultType ) throws EvaluationException ;
/ * *
* Evaluate this expression in the provided context and return the result of evaluation .
* Evaluate this expression in the provided context and return the result
* of evaluation .
* @param context the context in which to evaluate the expression
* @return the evaluation result
* @throws EvaluationException if there is a problem during evaluation
@ -85,10 +88,11 @@ public interface Expression {
@@ -85,10 +88,11 @@ public interface Expression {
Object getValue ( EvaluationContext context ) throws EvaluationException ;
/ * *
* Evaluate this expression in the provided context and return the result of evaluation , but use
* the supplied root context as an override for any default root object specified in the context .
* Evaluate this expression in the provided context and return the result
* of evaluation , but use the supplied root context as an override for any
* default root object specified in the context .
* @param context the context in which to evaluate the expression
* @param rootObject the root object against which properties / etc will be resolved
* @param rootObject the root object against which to evaluate the expression
* @return the evaluation result
* @throws EvaluationException if there is a problem during evaluation
* /
@ -96,8 +100,9 @@ public interface Expression {
@@ -96,8 +100,9 @@ public interface Expression {
Object getValue ( EvaluationContext context , Object rootObject ) throws EvaluationException ;
/ * *
* Evaluate the expression in a specified context which can resolve references to properties , methods , types , etc -
* the type of the evaluation result is expected to be of a particular class and an exception will be thrown if it
* Evaluate the expression in a specified context which can resolve references
* to properties , methods , types , etc . The type of the evaluation result is
* expected to be of a particular class and an exception will be thrown if it
* is not and cannot be converted to that type .
* @param context the context in which to evaluate the expression
* @param desiredResultType the class the caller would like the result to be
@ -108,12 +113,13 @@ public interface Expression {
@@ -108,12 +113,13 @@ public interface Expression {
< T > T getValue ( EvaluationContext context , @Nullable Class < T > desiredResultType ) throws EvaluationException ;
/ * *
* Evaluate the expression in a specified context which can resolve references to properties , methods , types , etc -
* the type of the evaluation result is expected to be of a particular class and an exception will be thrown if it
* is not and cannot be converted to that type . The supplied root object overrides any default specified on the
* supplied context .
* Evaluate the expression in a specified context which can resolve references
* to properties , methods , types , etc . The type of the evaluation result is
* expected to be of a particular class and an exception will be thrown if it
* is not and cannot be converted to that type . The supplied root object
* overrides any default specified on the supplied context .
* @param context the context in which to evaluate the expression
* @param rootObject the root object against which properties / etc will be resolved
* @param rootObject the root object against which to evaluate the expression
* @param desiredResultType the class the caller would like the result to be
* @return the evaluation result
* @throws EvaluationException if there is a problem during evaluation
@ -123,7 +129,7 @@ public interface Expression {
@@ -123,7 +129,7 @@ public interface Expression {
throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* Return the most general type that can be passed to a { @link # setValue }
* method using the default context .
* @return the most general type of value that can be set on this context
* @throws EvaluationException if there is a problem determining the type
@ -132,8 +138,8 @@ public interface Expression {
@@ -132,8 +138,8 @@ public interface Expression {
Class < ? > getValueType ( ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* method using the default context .
* Return the most general type that can be passed to the
* { @link # setValue ( Object , Object ) } method using the default context .
* @param rootObject the root object against which to evaluate the expression
* @return the most general type of value that can be set on this context
* @throws EvaluationException if there is a problem determining the type
@ -142,8 +148,8 @@ public interface Expression {
@@ -142,8 +148,8 @@ public interface Expression {
Class < ? > getValueType ( Object rootObject ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* method for the given context .
* Return the most general type that can be passed to the
* { @link # setValue ( EvaluationContext , Object ) } method for the given context .
* @param context the context in which to evaluate the expression
* @return the most general type of value that can be set on this context
* @throws EvaluationException if there is a problem determining the type
@ -152,8 +158,9 @@ public interface Expression {
@@ -152,8 +158,9 @@ public interface Expression {
Class < ? > getValueType ( EvaluationContext context ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* method for the given context . The supplied root object overrides any specified in the context .
* Return the most general type that can be passed to the
* { @link # setValue ( EvaluationContext , Object , Object ) } method for the given
* context . The supplied root object overrides any specified in the context .
* @param context the context in which to evaluate the expression
* @param rootObject the root object against which to evaluate the expression
* @return the most general type of value that can be set on this context
@ -163,40 +170,41 @@ public interface Expression {
@@ -163,40 +170,41 @@ public interface Expression {
Class < ? > getValueType ( EvaluationContext context , Object rootObject ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* Return the most general type that can be passed to a { @link # setValue }
* method using the default context .
* @return a type descriptor for the most general type of value that can be set on this context
* @return a type descriptor for values that can be set on this context
* @throws EvaluationException if there is a problem determining the type
* /
@Nullable
TypeDescriptor getValueTypeDescriptor ( ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* method using the default context .
* Return the most general type that can be passed to the
* { @link # setValue ( Object , Object ) } method using the default context .
* @param rootObject the root object against which to evaluate the expression
* @return a type descriptor for the most general type of value that can be set on this context
* @return a type descriptor for values that can be set on this context
* @throws EvaluationException if there is a problem determining the type
* /
@Nullable
TypeDescriptor getValueTypeDescriptor ( Object rootObject ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* method for the given context .
* Return the most general type that can be passed to the
* { @link # setValue ( EvaluationContext , Object ) } method for the given context .
* @param context the context in which to evaluate the expression
* @return a type descriptor for the most general type of value that can be set on this context
* @return a type descriptor for values that can be set on this context
* @throws EvaluationException if there is a problem determining the type
* /
@Nullable
TypeDescriptor getValueTypeDescriptor ( EvaluationContext context ) throws EvaluationException ;
/ * *
* Returns the most general type that can be passed to the { @link # setValue ( EvaluationContext , Object ) }
* method for the given context . The supplied root object overrides any specified in the context .
* Return the most general type that can be passed to the
* { @link # setValue ( EvaluationContext , Object , Object ) } method for the given
* context . The supplied root object overrides any specified in the context .
* @param context the context in which to evaluate the expression
* @param rootObject the root object against which to evaluate the expression
* @return a type descriptor for the most general type of value that can be set on this context
* @return a type descriptor for values that can be set on this context
* @throws EvaluationException if there is a problem determining the type
* /
@Nullable
@ -205,7 +213,7 @@ public interface Expression {
@@ -205,7 +213,7 @@ public interface Expression {
/ * *
* Determine if an expression can be written to , i . e . setValue ( ) can be called .
* @param rootObject the root object against which to evaluate the expression
* @return true if the expression is writable
* @return { @code true } if the expression is writable ; { @code false } otherwise
* @throws EvaluationException if there is a problem determining if it is writable
* /
boolean isWritable ( Object rootObject ) throws EvaluationException ;
@ -213,7 +221,7 @@ public interface Expression {
@@ -213,7 +221,7 @@ public interface Expression {
/ * *
* Determine if an expression can be written to , i . e . setValue ( ) can be called .
* @param context the context in which the expression should be checked
* @return true if the expression is writable
* @return { @code true } if the expression is writable ; { @code false } otherwise
* @throws EvaluationException if there is a problem determining if it is writable
* /
boolean isWritable ( EvaluationContext context ) throws EvaluationException ;
@ -223,7 +231,7 @@ public interface Expression {
@@ -223,7 +231,7 @@ public interface Expression {
* The supplied root object overrides any specified in the context .
* @param context the context in which the expression should be checked
* @param rootObject the root object against which to evaluate the expression
* @return true if the expression is writable
* @return { @code true } if the expression is writable ; { @code false } otherwise
* @throws EvaluationException if there is a problem determining if it is writable
* /
boolean isWritable ( EvaluationContext context , Object rootObject ) throws EvaluationException ;