renamed operator IS to INSTANCEOF, may yet delete..
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@103 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
0000c6f260
commit
f497d6af62
|
|
@ -24,9 +24,12 @@ import java.text.MessageFormat;
|
||||||
* <p>
|
* <p>
|
||||||
* When a message is formatted, it will have this kind of form
|
* When a message is formatted, it will have this kind of form
|
||||||
*
|
*
|
||||||
* <pre><code>
|
* <pre>
|
||||||
|
* <code>
|
||||||
* EL1004E: (pos 34): Type cannot be found 'String'
|
* EL1004E: (pos 34): Type cannot be found 'String'
|
||||||
* </pre></code> The prefix captures the code and the error kind, whilst the position is included if it is known and the
|
* </pre>
|
||||||
|
*
|
||||||
|
* </code> The prefix captures the code and the error kind, whilst the position is included if it is known and the
|
||||||
* message has had all relevant inserts applied to it.
|
* message has had all relevant inserts applied to it.
|
||||||
*
|
*
|
||||||
* @author Andy Clement
|
* @author Andy Clement
|
||||||
|
|
@ -37,75 +40,82 @@ public enum SpelMessages {
|
||||||
// TODO review if any messages are not used
|
// TODO review if any messages are not used
|
||||||
// TODO sort messages into better groups if possible, sharing a name prefix perhaps
|
// TODO sort messages into better groups if possible, sharing a name prefix perhaps
|
||||||
|
|
||||||
INITIALIZER_LENGTH_INCORRECT(Kind.ERROR, 1001, "Array constructor call: initializer size of {0} does not match declared length of {1}"),
|
INITIALIZER_LENGTH_INCORRECT(Kind.ERROR, 1001,
|
||||||
TYPE_CONVERSION_ERROR(Kind.ERROR, 1002, "Type conversion problem, cannot convert from {0} to {1}"),
|
"Array constructor call: initializer size of {0} does not match declared length of {1}"), TYPE_CONVERSION_ERROR(
|
||||||
CONSTRUCTOR_NOT_FOUND(Kind.ERROR, 1003, "Constructor call: No suitable constructor on type {0} for arguments {1}"),
|
Kind.ERROR, 1002, "Type conversion problem, cannot convert from {0} to {1}"), CONSTRUCTOR_NOT_FOUND(
|
||||||
TYPE_NOT_FOUND(Kind.ERROR, 1004, "Type cannot be found ''{0}''"),
|
Kind.ERROR, 1003, "Constructor call: No suitable constructor on type {0} for arguments {1}"), TYPE_NOT_FOUND(
|
||||||
ADDITION_NOT_DEFINED(Kind.ERROR, 1005, "Addition not defined between operands of type {0} and {1}"),
|
Kind.ERROR, 1004, "Type cannot be found ''{0}''"), ADDITION_NOT_DEFINED(Kind.ERROR, 1005,
|
||||||
METHOD_NOT_FOUND(Kind.ERROR, 1006, "Method call: Method {0} cannot be found on {1} type"),
|
"Addition not defined between operands of type {0} and {1}"), METHOD_NOT_FOUND(Kind.ERROR, 1006,
|
||||||
ATTEMPTED_METHOD_CALL_ON_NULL_CONTEXT_OBJECT(Kind.ERROR, 1007, "Method call: Attempted to call method {0} on null context object"),
|
"Method call: Method {0} cannot be found on {1} type"), ATTEMPTED_METHOD_CALL_ON_NULL_CONTEXT_OBJECT(
|
||||||
ATTEMPTED_PROPERTY_FIELD_REF_ON_NULL_CONTEXT_OBJECT(Kind.ERROR, 1008, "Field or property reference: Attempted to refer to field or property ''{0}'' on null context object"),
|
Kind.ERROR, 1007, "Method call: Attempted to call method {0} on null context object"), ATTEMPTED_PROPERTY_FIELD_REF_ON_NULL_CONTEXT_OBJECT(
|
||||||
PROPERTY_OR_FIELD_NOT_FOUND(Kind.ERROR, 1009, "Field or property ''{0}'' cannot be found on object of type ''{1}''"),
|
Kind.ERROR, 1008,
|
||||||
PROPERTY_OR_FIELD_SETTER_NOT_FOUND(Kind.ERROR, 1010, "Field or property ''{0}'' cannot be set on object of type ''{1}''"),
|
"Field or property reference: Attempted to refer to field or property ''{0}'' on null context object"), PROPERTY_OR_FIELD_NOT_FOUND(
|
||||||
MULTIPLY_NOT_DEFINED(Kind.ERROR, 1011, "Multiply not defined between operands of type {0} and {1}"),
|
Kind.ERROR, 1009, "Field or property ''{0}'' cannot be found on object of type ''{1}''"), PROPERTY_OR_FIELD_SETTER_NOT_FOUND(
|
||||||
NOT_COMPARABLE(Kind.ERROR, 1012, "Cannot compare instances of {0} and {1}"),
|
Kind.ERROR, 1010, "Field or property ''{0}'' cannot be set on object of type ''{1}''"), MULTIPLY_NOT_DEFINED(
|
||||||
NOT_COMPARABLE_CANNOT_COERCE(Kind.ERROR, 1013, "Cannot compare instances of {0} and {1} because they cannot be coerced to the same type"),
|
Kind.ERROR, 1011, "Multiply not defined between operands of type {0} and {1}"), NOT_COMPARABLE(Kind.ERROR,
|
||||||
VARIABLE_NOT_FOUND(Kind.ERROR, 1014, "Variable named ''{0}'' cannot be found"),
|
1012, "Cannot compare instances of {0} and {1}"), NOT_COMPARABLE_CANNOT_COERCE(Kind.ERROR, 1013,
|
||||||
INCORRECT_NUMBER_OF_ARGUMENTS_TO_FUNCTION(Kind.ERROR, 1015, "Incorrect number of arguments for function, {0} supplied but function takes {1}"),
|
"Cannot compare instances of {0} and {1} because they cannot be coerced to the same type"), VARIABLE_NOT_FOUND(
|
||||||
NO_SUCH_FUNCTION(Kind.ERROR, 1016, "No such function named ''{0}''"),
|
Kind.ERROR, 1014, "Variable named ''{0}'' cannot be found"), INCORRECT_NUMBER_OF_ARGUMENTS_TO_FUNCTION(
|
||||||
NOT_A_FUNCTION(Kind.ERROR, 1017, "The name ''{0}'' did not map to a function, it mapped to a ''{1}''"),
|
Kind.ERROR, 1015, "Incorrect number of arguments for function, {0} supplied but function takes {1}"), NO_SUCH_FUNCTION(
|
||||||
INVALID_TYPE_FOR_SELECTION(Kind.ERROR, 1018, "Cannot perform selection on input data of type ''{0}''"),
|
Kind.ERROR, 1016, "No such function named ''{0}''"), NOT_A_FUNCTION(Kind.ERROR, 1017,
|
||||||
RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN(Kind.ERROR, 1019, "Result of selection criteria is not boolean"),
|
"The name ''{0}'' did not map to a function, it mapped to a ''{1}''"), INVALID_TYPE_FOR_SELECTION(
|
||||||
MODULUS_NOT_DEFINED(Kind.ERROR, 1020, "Modulus not defined between operands of type ''{0}'' and ''{1}''"),
|
Kind.ERROR, 1018, "Cannot perform selection on input data of type ''{0}''"), RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN(
|
||||||
NULL_OPERAND_TO_OPERATOR(Kind.ERROR, 1021, "Operand evaluated to null and that is not supported for this operator"),
|
Kind.ERROR, 1019, "Result of selection criteria is not boolean"), MODULUS_NOT_DEFINED(Kind.ERROR, 1020,
|
||||||
NO_SIZE_OR_INITIALIZER_FOR_ARRAY_CONSTRUCTION(Kind.ERROR, 1022, "No array size or initializer was supplied to construct the array"),
|
"Modulus not defined between operands of type ''{0}'' and ''{1}''"), NULL_OPERAND_TO_OPERATOR(Kind.ERROR,
|
||||||
INCORRECT_ELEMENT_TYPE_FOR_ARRAY(Kind.ERROR, 1023, "The array of type ''{0}'' cannot have an element of type ''{1}'' inserted"),
|
1021, "Operand evaluated to null and that is not supported for this operator"), NO_SIZE_OR_INITIALIZER_FOR_ARRAY_CONSTRUCTION(
|
||||||
BETWEEN_RIGHT_OPERAND_MUST_BE_TWO_ELEMENT_LIST(Kind.ERROR, 1024, "Right operand for the 'between' operator has to be a two-element list"),
|
Kind.ERROR, 1022, "No array size or initializer was supplied to construct the array"), INCORRECT_ELEMENT_TYPE_FOR_ARRAY(
|
||||||
TYPE_NOT_SUPPORTED_BY_PROCESSOR(Kind.ERROR, 1025, "The collection processor ''{0}'' does not understand and input collection of elements of type {1}"),
|
Kind.ERROR, 1023, "The array of type ''{0}'' cannot have an element of type ''{1}'' inserted"), BETWEEN_RIGHT_OPERAND_MUST_BE_TWO_ELEMENT_LIST(
|
||||||
UNABLE_TO_ACCESS_FIELD(Kind.ERROR, 1026, "Unable to access field ''{0}'' on type ''{1}''"),
|
Kind.ERROR, 1024, "Right operand for the 'between' operator has to be a two-element list"), TYPE_NOT_SUPPORTED_BY_PROCESSOR(
|
||||||
UNABLE_TO_ACCESS_PROPERTY_THROUGH_GETTER(Kind.ERROR, 1027, "Unable to access property ''{0}'' through getter on type ''{1}''"),
|
Kind.ERROR, 1025,
|
||||||
UNABLE_TO_ACCESS_PROPERTY_THROUGH_SETTER(Kind.ERROR, 1028, "Unable to access property ''{0}'' through setter on type ''{1}''"),
|
"The collection processor ''{0}'' does not understand and input collection of elements of type {1}"), UNABLE_TO_ACCESS_FIELD(
|
||||||
INVALID_PATTERN(Kind.ERROR, 1029, "Pattern is not valid ''{0}''"),
|
Kind.ERROR, 1026, "Unable to access field ''{0}'' on type ''{1}''"), UNABLE_TO_ACCESS_PROPERTY_THROUGH_GETTER(
|
||||||
RECOGNITION_ERROR(Kind.ERROR, 1030,"Recognition error: {0}"), // TODO poor message when a recognition exception occurs
|
Kind.ERROR, 1027, "Unable to access property ''{0}'' through getter on type ''{1}''"), UNABLE_TO_ACCESS_PROPERTY_THROUGH_SETTER(
|
||||||
PROJECTION_NOT_SUPPORTED_ON_TYPE(Kind.ERROR, 1031, "Projection is not supported on the type ''{0}''"),
|
Kind.ERROR, 1028, "Unable to access property ''{0}'' through setter on type ''{1}''"), INVALID_PATTERN(
|
||||||
ARGLIST_SHOULD_NOT_BE_EVALUATED(Kind.ERROR, 1032, "The argument list of a lambda expression should never have getValue() called upon it"),
|
Kind.ERROR, 1029, "Pattern is not valid ''{0}''"), RECOGNITION_ERROR(Kind.ERROR, 1030,
|
||||||
MAPENTRY_SHOULD_NOT_BE_EVALUATED(Kind.ERROR, 1033, "A map entry should never have getValue() called upon it"),
|
"Recognition error: {0}"), // TODO poor message when a recognition exception occurs
|
||||||
EXCEPTION_DURING_PROPERTY_READ(Kind.ERROR, 1034, "A problem occurred whilst attempting to access the property ''{0}'': ''{1}''"),
|
PROJECTION_NOT_SUPPORTED_ON_TYPE(Kind.ERROR, 1031, "Projection is not supported on the type ''{0}''"), ARGLIST_SHOULD_NOT_BE_EVALUATED(
|
||||||
EXCEPTION_DURING_CONSTRUCTOR_INVOCATION(Kind.ERROR, 1035, "A problem occurred whilst attempting to construct ''{0}'': ''{1}''"),
|
Kind.ERROR, 1032, "The argument list of a lambda expression should never have getValue() called upon it"), MAPENTRY_SHOULD_NOT_BE_EVALUATED(
|
||||||
DATE_CANNOT_BE_PARSED(Kind.ERROR, 1036, "Unable to parse date ''{0}'' using format ''{1}''"),
|
Kind.ERROR, 1033, "A map entry should never have getValue() called upon it"), EXCEPTION_DURING_PROPERTY_READ(
|
||||||
FUNCTION_REFERENCE_CANNOT_BE_INVOKED(Kind.ERROR, 1037, "The function ''{0}'' mapped to an object of type ''{1}'' which cannot be invoked"),
|
Kind.ERROR, 1034, "A problem occurred whilst attempting to access the property ''{0}'': ''{1}''"), EXCEPTION_DURING_CONSTRUCTOR_INVOCATION(
|
||||||
FUNCTION_NOT_DEFINED(Kind.ERROR, 1038, "The function ''{0}'' could not be found"),
|
Kind.ERROR, 1035, "A problem occurred whilst attempting to construct ''{0}'': ''{1}''"), DATE_CANNOT_BE_PARSED(
|
||||||
EXCEPTION_DURING_FUNCTION_CALL(Kind.ERROR, 1039, "A problem occurred whilst attempting to invoke the function ''{0}'': ''{1}''"),
|
Kind.ERROR, 1036, "Unable to parse date ''{0}'' using format ''{1}''"), FUNCTION_REFERENCE_CANNOT_BE_INVOKED(
|
||||||
ARRAY_INDEX_OUT_OF_BOUNDS(Kind.ERROR, 1040, "The array has ''{0}'' elements, index ''{1}'' is invalid"),
|
Kind.ERROR, 1037, "The function ''{0}'' mapped to an object of type ''{1}'' which cannot be invoked"), FUNCTION_NOT_DEFINED(
|
||||||
COLLECTION_INDEX_OUT_OF_BOUNDS(Kind.ERROR, 1041, "The collection has ''{0}'' elements, index ''{1}'' is invalid"),
|
Kind.ERROR, 1038, "The function ''{0}'' could not be found"), EXCEPTION_DURING_FUNCTION_CALL(Kind.ERROR,
|
||||||
STRING_INDEX_OUT_OF_BOUNDS(Kind.ERROR, 1042, "The string has ''{0}'' characters, index ''{1}'' is invalid"),
|
1039, "A problem occurred whilst attempting to invoke the function ''{0}'': ''{1}''"), ARRAY_INDEX_OUT_OF_BOUNDS(
|
||||||
INDEXING_NOT_SUPPORTED_FOR_TYPE(Kind.ERROR, 1043, "Indexing into type ''{0}'' is not supported"),
|
Kind.ERROR, 1040, "The array has ''{0}'' elements, index ''{1}'' is invalid"), COLLECTION_INDEX_OUT_OF_BOUNDS(
|
||||||
OPERATOR_IN_CANNOT_DETERMINE_MEMBERSHIP(Kind.ERROR, 1044, "Operator 'in' not implemented for detecting membership of a ''{0}'' in a ''{1}''"),
|
Kind.ERROR, 1041, "The collection has ''{0}'' elements, index ''{1}'' is invalid"), STRING_INDEX_OUT_OF_BOUNDS(
|
||||||
CANNOT_NEGATE_TYPE(Kind.ERROR, 1045, "Cannot determine negation of type ''{0}''"),
|
Kind.ERROR, 1042, "The string has ''{0}'' characters, index ''{1}'' is invalid"), INDEXING_NOT_SUPPORTED_FOR_TYPE(
|
||||||
CUT_ARGUMENTS_MUST_BE_INTS(Kind.ERROR, 1046, "Both arguments to the cut() processor must be Integers, but they are ''{0}'' and ''{1}''"),
|
Kind.ERROR, 1043, "Indexing into type ''{0}'' is not supported"), OPERATOR_IN_CANNOT_DETERMINE_MEMBERSHIP(
|
||||||
SOUNDSLIKE_NEEDS_STRING_OPERAND(Kind.ERROR, 1047, "The soundslike operator needs String operands, but found a ''{0}''"),
|
Kind.ERROR, 1044, "Operator 'in' not implemented for detecting membership of a ''{0}'' in a ''{1}''"), CANNOT_NEGATE_TYPE(
|
||||||
IS_OPERATOR_NEEDS_CLASS_OPERAND(Kind.ERROR, 1048, "The operator 'is' needs the right operand to be a class, not a ''{0}''"),
|
Kind.ERROR, 1045, "Cannot determine negation of type ''{0}''"), CUT_ARGUMENTS_MUST_BE_INTS(Kind.ERROR,
|
||||||
LOCAL_VARIABLE_NOT_DEFINED(Kind.ERROR, 1049, "Local variable named ''{0}'' could not be found"),
|
1046, "Both arguments to the cut() processor must be Integers, but they are ''{0}'' and ''{1}''"), SOUNDSLIKE_NEEDS_STRING_OPERAND(
|
||||||
EXCEPTION_DURING_METHOD_INVOCATION(Kind.ERROR, 1050,"A problem occurred when trying to execute method ''{0}'' on object of type ''{1}'': ''{2}''"),
|
Kind.ERROR, 1047, "The soundslike operator needs String operands, but found a ''{0}''"), INSTANCEOF_OPERATOR_NEEDS_CLASS_OPERAND(
|
||||||
PLACEHOLDER_SHOULD_NEVER_BE_EVALUATED(Kind.ERROR, 1051, "InternalError: A placeholder node in the Ast should never be evaluated!"),
|
Kind.ERROR, 1048, "The operator 'instanceof' needs the right operand to be a class, not a ''{0}''"), LOCAL_VARIABLE_NOT_DEFINED(
|
||||||
OPERATOR_NOT_SUPPORTED_BETWEEN_TYPES(Kind.ERROR, 1052, "The operator ''{0}'' is not supported between objects of type ''{1}'' and ''{2}''"),
|
Kind.ERROR, 1049, "Local variable named ''{0}'' could not be found"), EXCEPTION_DURING_METHOD_INVOCATION(
|
||||||
UNEXPECTED_PROBLEM_INVOKING_OPERATOR(Kind.ERROR, 1054, "Unexpected problem invoking operator ''{0}'' between objects of type ''{1}'' and ''{2}'': {3}"),
|
Kind.ERROR, 1050,
|
||||||
PROBLEM_LOCATING_METHOD(Kind.ERROR, 1055, "Problem locating method {0} cannot on type {1}"),
|
"A problem occurred when trying to execute method ''{0}'' on object of type ''{1}'': ''{2}''"), PLACEHOLDER_SHOULD_NEVER_BE_EVALUATED(
|
||||||
PROBLEM_LOCATING_CONSTRUCTOR(Kind.ERROR, 1056, "A problem occurred whilst attempting to construct an object of type ''{0}'' using arguments ''{1}''"),
|
Kind.ERROR, 1051, "InternalError: A placeholder node in the Ast should never be evaluated!"), OPERATOR_NOT_SUPPORTED_BETWEEN_TYPES(
|
||||||
INVALID_FIRST_OPERAND_FOR_LIKE_OPERATOR(Kind.ERROR, 1057, "First operand to like operator must be a string. ''{0}'' is not"),
|
Kind.ERROR, 1052, "The operator ''{0}'' is not supported between objects of type ''{1}'' and ''{2}''"), UNEXPECTED_PROBLEM_INVOKING_OPERATOR(
|
||||||
INVALID_SECOND_OPERAND_FOR_LIKE_OPERATOR(Kind.ERROR, 1058, "Second operand to like operator must be a string (regex). ''{0}'' is not"),
|
Kind.ERROR, 1054,
|
||||||
SETVALUE_NOT_SUPPORTED(Kind.ERROR, 1059, "setValue(ExpressionState, Object) not implemented for ''{0}'' (''{1}''"),
|
"Unexpected problem invoking operator ''{0}'' between objects of type ''{1}'' and ''{2}'': {3}"), PROBLEM_LOCATING_METHOD(
|
||||||
TYPE_NAME_EXPECTED_FOR_ARRAY_CONSTRUCTION(Kind.ERROR, 1060, "Expected the type of the new array to be specified as a String but found ''{0}''"),
|
Kind.ERROR, 1055, "Problem locating method {0} cannot on type {1}"), PROBLEM_LOCATING_CONSTRUCTOR(
|
||||||
PROBLEM_DURING_TYPE_CONVERSION(Kind.ERROR, 1061, "Problem occurred during type conversion: {0}"),
|
Kind.ERROR, 1056,
|
||||||
MULTIPLE_POSSIBLE_METHODS(Kind.ERROR, 1062, "Method call of ''{0}'' is ambiguous, supported type conversions allow multiple variants to match"),
|
"A problem occurred whilst attempting to construct an object of type ''{0}'' using arguments ''{1}''"), INVALID_FIRST_OPERAND_FOR_LIKE_OPERATOR(
|
||||||
EXCEPTION_DURING_PROPERTY_WRITE(Kind.ERROR, 1063, "A problem occurred whilst attempting to set the property ''{0}'': ''{1}''"),
|
Kind.ERROR, 1057, "First operand to like operator must be a string. ''{0}'' is not"), INVALID_SECOND_OPERAND_FOR_LIKE_OPERATOR(
|
||||||
NOT_AN_INTEGER(Kind.ERROR, 1064, "The value ''{0}'' cannot be parsed as an int"),
|
Kind.ERROR, 1058, "Second operand to like operator must be a string (regex). ''{0}'' is not"), SETVALUE_NOT_SUPPORTED(
|
||||||
NOT_A_LONG(Kind.ERROR, 1065, "The value ''{0}'' cannot be parsed as a long"),
|
Kind.ERROR, 1059, "setValue(ExpressionState, Object) not implemented for ''{0}'' (''{1}''"), TYPE_NAME_EXPECTED_FOR_ARRAY_CONSTRUCTION(
|
||||||
PARSE_PROBLEM(Kind.ERROR, 1066, "Error occurred during expression parse: {0}"),
|
Kind.ERROR, 1060, "Expected the type of the new array to be specified as a String but found ''{0}''"), PROBLEM_DURING_TYPE_CONVERSION(
|
||||||
INVALID_FIRST_OPERAND_FOR_MATCHES_OPERATOR(Kind.ERROR, 1067, "First operand to matches operator must be a string. ''{0}'' is not"),
|
Kind.ERROR, 1061, "Problem occurred during type conversion: {0}"), MULTIPLE_POSSIBLE_METHODS(Kind.ERROR,
|
||||||
INVALID_SECOND_OPERAND_FOR_MATCHES_OPERATOR(Kind.ERROR, 1068, "Second operand to matches operator must be a string. ''{0}'' is not"),
|
1062, "Method call of ''{0}'' is ambiguous, supported type conversions allow multiple variants to match"), EXCEPTION_DURING_PROPERTY_WRITE(
|
||||||
FUNCTION_MUST_BE_STATIC(Kind.ERROR, 1069, "Only static methods can be called via function references. The method ''{0}'' referred to by name ''{1}'' is not static.")
|
Kind.ERROR, 1063, "A problem occurred whilst attempting to set the property ''{0}'': ''{1}''"), NOT_AN_INTEGER(
|
||||||
;
|
Kind.ERROR, 1064, "The value ''{0}'' cannot be parsed as an int"), NOT_A_LONG(Kind.ERROR, 1065,
|
||||||
|
"The value ''{0}'' cannot be parsed as a long"), PARSE_PROBLEM(Kind.ERROR, 1066,
|
||||||
|
"Error occurred during expression parse: {0}"), INVALID_FIRST_OPERAND_FOR_MATCHES_OPERATOR(Kind.ERROR,
|
||||||
|
1067, "First operand to matches operator must be a string. ''{0}'' is not"), INVALID_SECOND_OPERAND_FOR_MATCHES_OPERATOR(
|
||||||
|
Kind.ERROR, 1068, "Second operand to matches operator must be a string. ''{0}'' is not"), FUNCTION_MUST_BE_STATIC(
|
||||||
|
Kind.ERROR,
|
||||||
|
1069,
|
||||||
|
"Only static methods can be called via function references. The method ''{0}'' referred to by name ''{1}'' is not static.");
|
||||||
|
|
||||||
private Kind kind;
|
private Kind kind;
|
||||||
private int code;
|
private int code;
|
||||||
|
|
|
||||||
|
|
@ -22,20 +22,20 @@ import org.springframework.expression.spel.SpelException;
|
||||||
import org.springframework.expression.spel.SpelMessages;
|
import org.springframework.expression.spel.SpelMessages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The operator 'is' checks if an object is of the class specified in the right hand operand, in the same way that
|
* The operator 'instanceof' checks if an object is of the class specified in the right hand operand, in the same way
|
||||||
* instanceof does in Java.
|
* that instanceof does in Java.
|
||||||
*
|
*
|
||||||
* @author Andy Clement
|
* @author Andy Clement
|
||||||
*/
|
*/
|
||||||
public class OperatorIs extends Operator {
|
public class OperatorInstanceof extends Operator {
|
||||||
|
|
||||||
public OperatorIs(Token payload) {
|
public OperatorInstanceof(Token payload) {
|
||||||
super(payload);
|
super(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getOperatorName() {
|
public String getOperatorName() {
|
||||||
return "is";
|
return "instanceof";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -55,7 +55,7 @@ public class OperatorIs extends Operator {
|
||||||
}
|
}
|
||||||
if (right == null || !(right instanceof Class<?>)) {
|
if (right == null || !(right instanceof Class<?>)) {
|
||||||
throw new SpelException(getRightOperand().getCharPositionInLine(),
|
throw new SpelException(getRightOperand().getCharPositionInLine(),
|
||||||
SpelMessages.IS_OPERATOR_NEEDS_CLASS_OPERAND, (right == null ? "null" : right.getClass().getName()));
|
SpelMessages.INSTANCEOF_OPERATOR_NEEDS_CLASS_OPERAND, (right == null ? "null" : right.getClass().getName()));
|
||||||
}
|
}
|
||||||
Class<?> rightClass = (Class<?>) right;
|
Class<?> rightClass = (Class<?>) right;
|
||||||
return rightClass.isAssignableFrom(left.getClass());
|
return rightClass.isAssignableFrom(left.getClass());
|
||||||
|
|
@ -4,8 +4,6 @@ options {
|
||||||
language = Java;
|
language = Java;
|
||||||
output=AST;
|
output=AST;
|
||||||
k=2;
|
k=2;
|
||||||
//caseSensitive = false;
|
|
||||||
//backtrack=true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tokens {
|
tokens {
|
||||||
|
|
@ -29,9 +27,6 @@ tokens {
|
||||||
METHOD;
|
METHOD;
|
||||||
ADD;
|
ADD;
|
||||||
SUBTRACT;
|
SUBTRACT;
|
||||||
// MULTIPLY;
|
|
||||||
// DIVIDE;
|
|
||||||
// MODULUS;
|
|
||||||
NUMBER;
|
NUMBER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,19 +50,15 @@ tokens {
|
||||||
|
|
||||||
expr: expression EOF!;
|
expr: expression EOF!;
|
||||||
|
|
||||||
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
|
||||||
|
|
||||||
expression :
|
expression :
|
||||||
logicalOrExpression
|
logicalOrExpression
|
||||||
( (ASSIGN^ logicalOrExpression)
|
( (ASSIGN^ logicalOrExpression)
|
||||||
| (DEFAULT^ logicalOrExpression)
|
| (DEFAULT^ logicalOrExpression)
|
||||||
| (QMARK^ expression COLON! expression))?;
|
| (QMARK^ expression COLON! expression))?;
|
||||||
|
|
||||||
parenExpr : LPAREN! expression RPAREN!;// (ROGUE! | RPAREN!);
|
parenExpr : LPAREN! expression RPAREN!;
|
||||||
|
|
||||||
|
|
||||||
logicalOrExpression
|
logicalOrExpression
|
||||||
// possible extra info we could use for better error messages
|
|
||||||
: logicalAndExpression (OR^ logicalAndExpression)*;
|
: logicalAndExpression (OR^ logicalAndExpression)*;
|
||||||
|
|
||||||
logicalAndExpression
|
logicalAndExpression
|
||||||
|
|
@ -78,7 +69,6 @@ relationalExpression : sumExpression (relationalOperator^ sumExpression)?;
|
||||||
sumExpression
|
sumExpression
|
||||||
: productExpression ( (PLUS^ | MINUS^) productExpression)*;
|
: productExpression ( (PLUS^ | MINUS^) productExpression)*;
|
||||||
|
|
||||||
// TODO could really do with changing ast node types here
|
|
||||||
productExpression
|
productExpression
|
||||||
: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;
|
: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;
|
||||||
|
|
||||||
|
|
@ -234,7 +224,7 @@ relationalOperator
|
||||||
| GREATER_THAN
|
| GREATER_THAN
|
||||||
| GREATER_THAN_OR_EQUAL
|
| GREATER_THAN_OR_EQUAL
|
||||||
| IN
|
| IN
|
||||||
| IS
|
| INSTANCEOF
|
||||||
| BETWEEN
|
| BETWEEN
|
||||||
| MATCHES
|
| MATCHES
|
||||||
;
|
;
|
||||||
|
|
@ -247,7 +237,7 @@ LESS_THAN_OR_EQUAL: '<=';
|
||||||
GREATER_THAN: '>';
|
GREATER_THAN: '>';
|
||||||
GREATER_THAN_OR_EQUAL: '>=';
|
GREATER_THAN_OR_EQUAL: '>=';
|
||||||
IN: 'in';
|
IN: 'in';
|
||||||
IS: 'is';
|
INSTANCEOF: 'instanceof';
|
||||||
BETWEEN:'between';
|
BETWEEN:'between';
|
||||||
MATCHES:'matches';
|
MATCHES:'matches';
|
||||||
NULL_LITERAL: 'null';
|
NULL_LITERAL: 'null';
|
||||||
|
|
|
||||||
|
|
@ -1,82 +1,81 @@
|
||||||
GREATER_THAN_OR_EQUAL=69
|
GREATER_THAN_OR_EQUAL=68
|
||||||
SELECT_FIRST=50
|
SELECT_FIRST=49
|
||||||
COMMA=44
|
|
||||||
HOLDER=11
|
HOLDER=11
|
||||||
GREATER_THAN=68
|
COMMA=43
|
||||||
TYPE=52
|
GREATER_THAN=67
|
||||||
|
TYPE=51
|
||||||
EXPRESSIONLIST=4
|
EXPRESSIONLIST=4
|
||||||
MINUS=35
|
MINUS=34
|
||||||
MAP_ENTRY=20
|
MAP_ENTRY=20
|
||||||
SELECT_LAST=51
|
SELECT_LAST=50
|
||||||
NUMBER=24
|
NUMBER=24
|
||||||
LESS_THAN=66
|
LESS_THAN=65
|
||||||
BANG=40
|
BANG=39
|
||||||
FALSE=60
|
FALSE=59
|
||||||
METHOD=21
|
METHOD=21
|
||||||
PROPERTY_OR_FIELD=8
|
PROPERTY_OR_FIELD=8
|
||||||
LBRACKET=45
|
LBRACKET=44
|
||||||
INDEXER=9
|
INDEXER=9
|
||||||
MOD=38
|
MOD=37
|
||||||
CONSTRUCTOR_ARRAY=12
|
CONSTRUCTOR_ARRAY=12
|
||||||
FUNCTIONREF=14
|
FUNCTIONREF=14
|
||||||
NULL_LITERAL=56
|
NULL_LITERAL=55
|
||||||
NAMED_ARGUMENT=13
|
NAMED_ARGUMENT=13
|
||||||
OR=32
|
OR=31
|
||||||
PIPE=75
|
PIPE=74
|
||||||
DOT=41
|
DOT=40
|
||||||
RCURLY=48
|
RCURLY=47
|
||||||
EXPRESSION=6
|
EXPRESSION=6
|
||||||
AND=33
|
AND=32
|
||||||
LCURLY=53
|
LCURLY=52
|
||||||
REAL_TYPE_SUFFIX=83
|
REAL_TYPE_SUFFIX=82
|
||||||
STRING_LITERAL=54
|
STRING_LITERAL=53
|
||||||
SELECT=49
|
SELECT=48
|
||||||
QUALIFIED_IDENTIFIER=7
|
QUALIFIED_IDENTIFIER=7
|
||||||
RBRACKET=46
|
RBRACKET=45
|
||||||
SUBTRACT=23
|
SUBTRACT=23
|
||||||
ASSIGN=26
|
ASSIGN=25
|
||||||
BETWEEN=72
|
INSTANCEOF=70
|
||||||
RPAREN=31
|
BETWEEN=71
|
||||||
SIGN=84
|
RPAREN=30
|
||||||
LPAREN=30
|
SIGN=83
|
||||||
HEX_DIGIT=63
|
LPAREN=29
|
||||||
PLUS=34
|
HEX_DIGIT=62
|
||||||
|
PLUS=33
|
||||||
LIST_INITIALIZER=18
|
LIST_INITIALIZER=18
|
||||||
APOS=76
|
APOS=75
|
||||||
INTEGER_LITERAL=5
|
INTEGER_LITERAL=5
|
||||||
AT=80
|
AT=79
|
||||||
ID=43
|
ID=42
|
||||||
NOT_EQUAL=65
|
NOT_EQUAL=64
|
||||||
RANGE=16
|
RANGE=16
|
||||||
POWER=39
|
POWER=38
|
||||||
TYPEREF=15
|
TYPEREF=15
|
||||||
DECIMAL_DIGIT=61
|
DECIMAL_DIGIT=60
|
||||||
WS=78
|
WS=77
|
||||||
IS=71
|
DOLLAR=78
|
||||||
DOLLAR=79
|
LESS_THAN_OR_EQUAL=66
|
||||||
LESS_THAN_OR_EQUAL=67
|
DQ_STRING_LITERAL=54
|
||||||
SEMIRPAREN=25
|
HEXADECIMAL_INTEGER_LITERAL=56
|
||||||
DQ_STRING_LITERAL=55
|
|
||||||
HEXADECIMAL_INTEGER_LITERAL=57
|
|
||||||
MAP_INITIALIZER=19
|
MAP_INITIALIZER=19
|
||||||
IN=70
|
IN=69
|
||||||
SEMI=74
|
SEMI=73
|
||||||
CONSTRUCTOR=10
|
CONSTRUCTOR=10
|
||||||
INTEGER_TYPE_SUFFIX=62
|
INTEGER_TYPE_SUFFIX=61
|
||||||
EQUAL=64
|
EQUAL=63
|
||||||
MATCHES=73
|
MATCHES=72
|
||||||
DOT_ESCAPED=77
|
DOT_ESCAPED=76
|
||||||
UPTO=81
|
UPTO=80
|
||||||
QMARK=28
|
QMARK=27
|
||||||
PROJECT=47
|
PROJECT=46
|
||||||
DEFAULT=27
|
DEFAULT=26
|
||||||
COLON=29
|
COLON=28
|
||||||
DIV=37
|
DIV=36
|
||||||
STAR=36
|
STAR=35
|
||||||
REAL_LITERAL=58
|
REAL_LITERAL=57
|
||||||
VARIABLEREF=17
|
VARIABLEREF=17
|
||||||
EXPONENT_PART=82
|
EXPONENT_PART=81
|
||||||
TRUE=59
|
TRUE=58
|
||||||
ADD=22
|
ADD=22
|
||||||
POUND=42
|
POUND=41
|
||||||
'new'=85
|
'new'=84
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -5,143 +5,140 @@ options {
|
||||||
}
|
}
|
||||||
@header {package org.springframework.expression.spel.generated;}
|
@header {package org.springframework.expression.spel.generated;}
|
||||||
|
|
||||||
T85 : 'new' ;
|
T84 : 'new' ;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 58
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 214
|
||||||
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 224
|
|
||||||
INTEGER_LITERAL
|
INTEGER_LITERAL
|
||||||
: (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
: (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 227
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 217
|
||||||
HEXADECIMAL_INTEGER_LITERAL : ('0x' | '0X') (HEX_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
HEXADECIMAL_INTEGER_LITERAL : ('0x' | '0X') (HEX_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 242
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 232
|
||||||
ASSIGN: '=';
|
ASSIGN: '=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 243
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 233
|
||||||
EQUAL: '==';
|
EQUAL: '==';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 244
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 234
|
||||||
NOT_EQUAL: '!=';
|
NOT_EQUAL: '!=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 245
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 235
|
||||||
LESS_THAN: '<';
|
LESS_THAN: '<';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 246
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 236
|
||||||
LESS_THAN_OR_EQUAL: '<=';
|
LESS_THAN_OR_EQUAL: '<=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 247
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 237
|
||||||
GREATER_THAN: '>';
|
GREATER_THAN: '>';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 248
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 238
|
||||||
GREATER_THAN_OR_EQUAL: '>=';
|
GREATER_THAN_OR_EQUAL: '>=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 249
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 239
|
||||||
IN: 'in';
|
IN: 'in';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 250
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 240
|
||||||
IS: 'is';
|
INSTANCEOF: 'instanceof';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 251
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 241
|
||||||
BETWEEN:'between';
|
BETWEEN:'between';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 252
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 242
|
||||||
MATCHES:'matches';
|
MATCHES:'matches';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 253
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 243
|
||||||
NULL_LITERAL: 'null';
|
NULL_LITERAL: 'null';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 255
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 245
|
||||||
SEMI: ';';
|
SEMI: ';';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 256
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 246
|
||||||
DOT: '.';
|
DOT: '.';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 257
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 247
|
||||||
COMMA: ',';
|
COMMA: ',';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 258
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 248
|
||||||
LPAREN: '(';
|
LPAREN: '(';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 259
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 249
|
||||||
RPAREN: ')';
|
RPAREN: ')';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 260
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 250
|
||||||
LCURLY: '{';
|
LCURLY: '{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 261
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 251
|
||||||
RCURLY: '}';
|
RCURLY: '}';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 262
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 252
|
||||||
LBRACKET: '[';
|
LBRACKET: '[';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 263
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 253
|
||||||
RBRACKET: ']';
|
RBRACKET: ']';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 264
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 254
|
||||||
PIPE: '|';
|
PIPE: '|';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 266
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 256
|
||||||
AND: 'and';
|
AND: 'and';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 267
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 257
|
||||||
OR: 'or';
|
OR: 'or';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 268
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 258
|
||||||
FALSE: 'false';
|
FALSE: 'false';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 269
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 259
|
||||||
TRUE: 'true';
|
TRUE: 'true';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 271
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 261
|
||||||
PLUS: '+';
|
PLUS: '+';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 272
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 262
|
||||||
MINUS: '-';
|
MINUS: '-';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 273
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 263
|
||||||
DIV: '/';
|
DIV: '/';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 274
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 264
|
||||||
STAR: '*';
|
STAR: '*';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 275
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 265
|
||||||
MOD: '%';
|
MOD: '%';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 276
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 266
|
||||||
POWER: '^';
|
POWER: '^';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 277
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 267
|
||||||
BANG: '!';
|
BANG: '!';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 278
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 268
|
||||||
POUND: '#';
|
POUND: '#';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 279
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 269
|
||||||
QMARK: '?';
|
QMARK: '?';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 280
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 270
|
||||||
DEFAULT: '??';
|
DEFAULT: '??';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 281
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 271
|
||||||
PROJECT: '!{';
|
PROJECT: '!{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 282
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 272
|
||||||
SELECT: '?{';
|
SELECT: '?{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 283
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 273
|
||||||
SELECT_FIRST: '^{';
|
SELECT_FIRST: '^{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 284
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 274
|
||||||
SELECT_LAST: '${';
|
SELECT_LAST: '${';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 285
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 275
|
||||||
TYPE: 'T(';
|
TYPE: 'T(';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 287
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 277
|
||||||
STRING_LITERAL: '\''! (APOS|~'\'')* '\''!;
|
STRING_LITERAL: '\''! (APOS|~'\'')* '\''!;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 288
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 278
|
||||||
DQ_STRING_LITERAL: '"'! (~'"')* '"'!;
|
DQ_STRING_LITERAL: '"'! (~'"')* '"'!;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 289
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 279
|
||||||
ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*;
|
ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 290
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 280
|
||||||
DOT_ESCAPED: '\\.';
|
DOT_ESCAPED: '\\.';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 291
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 281
|
||||||
WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ;
|
WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 292
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 282
|
||||||
DOLLAR: '$';
|
DOLLAR: '$';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 293
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 283
|
||||||
AT: '@';
|
AT: '@';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 284
|
||||||
UPTO: '..';
|
UPTO: '..';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 295
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 285
|
||||||
COLON: ':';
|
COLON: ':';
|
||||||
|
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 298
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 288
|
||||||
REAL_LITERAL :
|
REAL_LITERAL :
|
||||||
('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
||||||
((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
||||||
((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |
|
((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |
|
||||||
((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));
|
((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 304
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294
|
||||||
fragment APOS : '\''! '\'';
|
fragment APOS : '\''! '\'';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 305
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 295
|
||||||
fragment DECIMAL_DIGIT : '0'..'9' ;
|
fragment DECIMAL_DIGIT : '0'..'9' ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 306
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 296
|
||||||
fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );
|
fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 307
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 297
|
||||||
fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';
|
fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 309
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 299
|
||||||
fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ;
|
fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 310
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 300
|
||||||
fragment SIGN : '+' | '-' ;
|
fragment SIGN : '+' | '-' ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 311
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 301
|
||||||
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';
|
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ import org.springframework.expression.spel.ast.OperatorGreaterThan;
|
||||||
import org.springframework.expression.spel.ast.OperatorGreaterThanOrEqual;
|
import org.springframework.expression.spel.ast.OperatorGreaterThanOrEqual;
|
||||||
import org.springframework.expression.spel.ast.OperatorIn;
|
import org.springframework.expression.spel.ast.OperatorIn;
|
||||||
import org.springframework.expression.spel.ast.OperatorInequality;
|
import org.springframework.expression.spel.ast.OperatorInequality;
|
||||||
import org.springframework.expression.spel.ast.OperatorIs;
|
import org.springframework.expression.spel.ast.OperatorInstanceof;
|
||||||
import org.springframework.expression.spel.ast.OperatorLessThan;
|
import org.springframework.expression.spel.ast.OperatorLessThan;
|
||||||
import org.springframework.expression.spel.ast.OperatorLessThanOrEqual;
|
import org.springframework.expression.spel.ast.OperatorLessThanOrEqual;
|
||||||
import org.springframework.expression.spel.ast.OperatorMatches;
|
import org.springframework.expression.spel.ast.OperatorMatches;
|
||||||
|
|
@ -170,8 +170,8 @@ public class SpelTreeAdaptor extends CommonTreeAdaptor {
|
||||||
return new OperatorBetween(payload);
|
return new OperatorBetween(payload);
|
||||||
case SpringExpressionsLexer.MATCHES:
|
case SpringExpressionsLexer.MATCHES:
|
||||||
return new OperatorMatches(payload);
|
return new OperatorMatches(payload);
|
||||||
case SpringExpressionsLexer.IS:
|
case SpringExpressionsLexer.INSTANCEOF:
|
||||||
return new OperatorIs(payload);
|
return new OperatorInstanceof(payload);
|
||||||
|
|
||||||
case SpringExpressionsLexer.RPAREN:
|
case SpringExpressionsLexer.RPAREN:
|
||||||
return new Placeholder(payload);
|
return new Placeholder(payload);
|
||||||
|
|
|
||||||
|
|
@ -72,27 +72,27 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsIs01() {
|
public void testRelOperatorsIs01() {
|
||||||
evaluate("'xyz' is T(int)", "false", Boolean.class);
|
evaluate("'xyz' instanceof T(int)", "false", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsIs02() {
|
public void testRelOperatorsIs02() {
|
||||||
evaluate("{1, 2, 3, 4, 5} is T(List)", "true", Boolean.class);
|
evaluate("{1, 2, 3, 4, 5} instanceof T(List)", "true", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsIs03() {
|
public void testRelOperatorsIs03() {
|
||||||
evaluate("{1, 2, 3, 4, 5} is T(List)", "true", Boolean.class);
|
evaluate("{1, 2, 3, 4, 5} instanceof T(List)", "true", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsIs04() {
|
public void testRelOperatorsIs04() {
|
||||||
evaluate("null is T(String)", "false", Boolean.class);
|
evaluate("null instanceof T(String)", "false", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsIs05() {
|
public void testRelOperatorsIs05() {
|
||||||
evaluate("null is T(Integer)", "false", Boolean.class);
|
evaluate("null instanceof T(Integer)", "false", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsIs06() {
|
public void testRelOperatorsIs06() {
|
||||||
evaluateAndCheckError("'A' is null", SpelMessages.IS_OPERATOR_NEEDS_CLASS_OPERAND, 7, "null");
|
evaluateAndCheckError("'A' instanceof null", SpelMessages.INSTANCEOF_OPERATOR_NEEDS_CLASS_OPERAND, 15, "null");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsMatches01() {
|
public void testRelOperatorsMatches01() {
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,8 @@ public class ParserErrorMessagesTests extends ExpressionTestCase {
|
||||||
public void testBrokenExpression07() {
|
public void testBrokenExpression07() {
|
||||||
// T() can only take an identifier (possibly qualified), not a literal
|
// T() can only take an identifier (possibly qualified), not a literal
|
||||||
// message ought to say identifier rather than ID
|
// message ought to say identifier rather than ID
|
||||||
parseAndCheckError("null is T('a')", SpelMessages.PARSE_PROBLEM, 10, "mismatched input ''a'' expecting ID"); // POOR
|
parseAndCheckError("null instanceof T('a')", SpelMessages.PARSE_PROBLEM, 18,
|
||||||
|
"mismatched input ''a'' expecting ID"); // POOR
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -146,11 +146,11 @@ public class ParsingTests extends TestCase {
|
||||||
}// true
|
}// true
|
||||||
|
|
||||||
public void testRelOperatorsIs01() {
|
public void testRelOperatorsIs01() {
|
||||||
parseCheck("'xyz' is int", "('xyz' is int)");
|
parseCheck("'xyz' instanceof int", "('xyz' instanceof int)");
|
||||||
}// false
|
}// false
|
||||||
|
|
||||||
public void testRelOperatorsIs02() {
|
public void testRelOperatorsIs02() {
|
||||||
parseCheck("{1, 2, 3, 4, 5} is List", "({1,2,3,4,5} is List)");
|
parseCheck("{1, 2, 3, 4, 5} instanceof List", "({1,2,3,4,5} instanceof List)");
|
||||||
}// true
|
}// true
|
||||||
|
|
||||||
public void testRelOperatorsMatches01() {
|
public void testRelOperatorsMatches01() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue