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>
|
||||
* When a message is formatted, it will have this kind of form
|
||||
*
|
||||
* <pre><code>
|
||||
* <pre>
|
||||
* <code>
|
||||
* 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.
|
||||
*
|
||||
* @author Andy Clement
|
||||
|
|
@ -36,77 +39,84 @@ public enum SpelMessages {
|
|||
// TODO put keys and messages into bundles for easy NLS
|
||||
// TODO review if any messages are not used
|
||||
// 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}"),
|
||||
TYPE_CONVERSION_ERROR(Kind.ERROR, 1002, "Type conversion problem, cannot convert from {0} to {1}"),
|
||||
CONSTRUCTOR_NOT_FOUND(Kind.ERROR, 1003, "Constructor call: No suitable constructor on type {0} for arguments {1}"),
|
||||
TYPE_NOT_FOUND(Kind.ERROR, 1004, "Type cannot be found ''{0}''"),
|
||||
ADDITION_NOT_DEFINED(Kind.ERROR, 1005, "Addition not defined between operands of type {0} and {1}"),
|
||||
METHOD_NOT_FOUND(Kind.ERROR, 1006, "Method call: Method {0} cannot be found on {1} type"),
|
||||
ATTEMPTED_METHOD_CALL_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(Kind.ERROR, 1008, "Field or property reference: Attempted to refer to field or property ''{0}'' on null context object"),
|
||||
PROPERTY_OR_FIELD_NOT_FOUND(Kind.ERROR, 1009, "Field or property ''{0}'' cannot be found on object of type ''{1}''"),
|
||||
PROPERTY_OR_FIELD_SETTER_NOT_FOUND(Kind.ERROR, 1010, "Field or property ''{0}'' cannot be set on object of type ''{1}''"),
|
||||
MULTIPLY_NOT_DEFINED(Kind.ERROR, 1011, "Multiply not defined between operands of type {0} and {1}"),
|
||||
NOT_COMPARABLE(Kind.ERROR, 1012, "Cannot compare instances of {0} and {1}"),
|
||||
NOT_COMPARABLE_CANNOT_COERCE(Kind.ERROR, 1013, "Cannot compare instances of {0} and {1} because they cannot be coerced to the same type"),
|
||||
VARIABLE_NOT_FOUND(Kind.ERROR, 1014, "Variable named ''{0}'' cannot be found"),
|
||||
INCORRECT_NUMBER_OF_ARGUMENTS_TO_FUNCTION(Kind.ERROR, 1015, "Incorrect number of arguments for function, {0} supplied but function takes {1}"),
|
||||
NO_SUCH_FUNCTION(Kind.ERROR, 1016, "No such function named ''{0}''"),
|
||||
NOT_A_FUNCTION(Kind.ERROR, 1017, "The name ''{0}'' did not map to a function, it mapped to a ''{1}''"),
|
||||
INVALID_TYPE_FOR_SELECTION(Kind.ERROR, 1018, "Cannot perform selection on input data of type ''{0}''"),
|
||||
RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN(Kind.ERROR, 1019, "Result of selection criteria is not boolean"),
|
||||
MODULUS_NOT_DEFINED(Kind.ERROR, 1020, "Modulus not defined between operands of type ''{0}'' and ''{1}''"),
|
||||
NULL_OPERAND_TO_OPERATOR(Kind.ERROR, 1021, "Operand evaluated to null and that is not supported for this operator"),
|
||||
NO_SIZE_OR_INITIALIZER_FOR_ARRAY_CONSTRUCTION(Kind.ERROR, 1022, "No array size or initializer was supplied to construct the array"),
|
||||
INCORRECT_ELEMENT_TYPE_FOR_ARRAY(Kind.ERROR, 1023, "The array of type ''{0}'' cannot have an element of type ''{1}'' inserted"),
|
||||
BETWEEN_RIGHT_OPERAND_MUST_BE_TWO_ELEMENT_LIST(Kind.ERROR, 1024, "Right operand for the 'between' operator has to be a two-element list"),
|
||||
TYPE_NOT_SUPPORTED_BY_PROCESSOR(Kind.ERROR, 1025, "The collection processor ''{0}'' does not understand and input collection of elements of type {1}"),
|
||||
UNABLE_TO_ACCESS_FIELD(Kind.ERROR, 1026, "Unable to access field ''{0}'' on type ''{1}''"),
|
||||
UNABLE_TO_ACCESS_PROPERTY_THROUGH_GETTER(Kind.ERROR, 1027, "Unable to access property ''{0}'' through getter on type ''{1}''"),
|
||||
UNABLE_TO_ACCESS_PROPERTY_THROUGH_SETTER(Kind.ERROR, 1028, "Unable to access property ''{0}'' through setter on type ''{1}''"),
|
||||
INVALID_PATTERN(Kind.ERROR, 1029, "Pattern is not valid ''{0}''"),
|
||||
RECOGNITION_ERROR(Kind.ERROR, 1030,"Recognition error: {0}"), // TODO poor message when a recognition exception occurs
|
||||
PROJECTION_NOT_SUPPORTED_ON_TYPE(Kind.ERROR, 1031, "Projection is not supported on the type ''{0}''"),
|
||||
ARGLIST_SHOULD_NOT_BE_EVALUATED(Kind.ERROR, 1032, "The argument list of a lambda expression should never have getValue() called upon it"),
|
||||
MAPENTRY_SHOULD_NOT_BE_EVALUATED(Kind.ERROR, 1033, "A map entry should never have getValue() called upon it"),
|
||||
EXCEPTION_DURING_PROPERTY_READ(Kind.ERROR, 1034, "A problem occurred whilst attempting to access the property ''{0}'': ''{1}''"),
|
||||
EXCEPTION_DURING_CONSTRUCTOR_INVOCATION(Kind.ERROR, 1035, "A problem occurred whilst attempting to construct ''{0}'': ''{1}''"),
|
||||
DATE_CANNOT_BE_PARSED(Kind.ERROR, 1036, "Unable to parse date ''{0}'' using format ''{1}''"),
|
||||
FUNCTION_REFERENCE_CANNOT_BE_INVOKED(Kind.ERROR, 1037, "The function ''{0}'' mapped to an object of type ''{1}'' which cannot be invoked"),
|
||||
FUNCTION_NOT_DEFINED(Kind.ERROR, 1038, "The function ''{0}'' could not be found"),
|
||||
EXCEPTION_DURING_FUNCTION_CALL(Kind.ERROR, 1039, "A problem occurred whilst attempting to invoke the function ''{0}'': ''{1}''"),
|
||||
ARRAY_INDEX_OUT_OF_BOUNDS(Kind.ERROR, 1040, "The array has ''{0}'' elements, index ''{1}'' is invalid"),
|
||||
COLLECTION_INDEX_OUT_OF_BOUNDS(Kind.ERROR, 1041, "The collection has ''{0}'' elements, index ''{1}'' is invalid"),
|
||||
STRING_INDEX_OUT_OF_BOUNDS(Kind.ERROR, 1042, "The string has ''{0}'' characters, index ''{1}'' is invalid"),
|
||||
INDEXING_NOT_SUPPORTED_FOR_TYPE(Kind.ERROR, 1043, "Indexing into type ''{0}'' is not supported"),
|
||||
OPERATOR_IN_CANNOT_DETERMINE_MEMBERSHIP(Kind.ERROR, 1044, "Operator 'in' not implemented for detecting membership of a ''{0}'' in a ''{1}''"),
|
||||
CANNOT_NEGATE_TYPE(Kind.ERROR, 1045, "Cannot determine negation of type ''{0}''"),
|
||||
CUT_ARGUMENTS_MUST_BE_INTS(Kind.ERROR, 1046, "Both arguments to the cut() processor must be Integers, but they are ''{0}'' and ''{1}''"),
|
||||
SOUNDSLIKE_NEEDS_STRING_OPERAND(Kind.ERROR, 1047, "The soundslike operator needs String operands, but found a ''{0}''"),
|
||||
IS_OPERATOR_NEEDS_CLASS_OPERAND(Kind.ERROR, 1048, "The operator 'is' needs the right operand to be a class, not a ''{0}''"),
|
||||
LOCAL_VARIABLE_NOT_DEFINED(Kind.ERROR, 1049, "Local variable named ''{0}'' could not be found"),
|
||||
EXCEPTION_DURING_METHOD_INVOCATION(Kind.ERROR, 1050,"A problem occurred when trying to execute method ''{0}'' on object of type ''{1}'': ''{2}''"),
|
||||
PLACEHOLDER_SHOULD_NEVER_BE_EVALUATED(Kind.ERROR, 1051, "InternalError: A placeholder node in the Ast should never be evaluated!"),
|
||||
OPERATOR_NOT_SUPPORTED_BETWEEN_TYPES(Kind.ERROR, 1052, "The operator ''{0}'' is not supported between objects of type ''{1}'' and ''{2}''"),
|
||||
UNEXPECTED_PROBLEM_INVOKING_OPERATOR(Kind.ERROR, 1054, "Unexpected problem invoking operator ''{0}'' between objects of type ''{1}'' and ''{2}'': {3}"),
|
||||
PROBLEM_LOCATING_METHOD(Kind.ERROR, 1055, "Problem locating method {0} cannot on type {1}"),
|
||||
PROBLEM_LOCATING_CONSTRUCTOR(Kind.ERROR, 1056, "A problem occurred whilst attempting to construct an object of type ''{0}'' using arguments ''{1}''"),
|
||||
INVALID_FIRST_OPERAND_FOR_LIKE_OPERATOR(Kind.ERROR, 1057, "First operand to like operator must be a string. ''{0}'' is not"),
|
||||
INVALID_SECOND_OPERAND_FOR_LIKE_OPERATOR(Kind.ERROR, 1058, "Second operand to like operator must be a string (regex). ''{0}'' is not"),
|
||||
SETVALUE_NOT_SUPPORTED(Kind.ERROR, 1059, "setValue(ExpressionState, Object) not implemented for ''{0}'' (''{1}''"),
|
||||
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}''"),
|
||||
PROBLEM_DURING_TYPE_CONVERSION(Kind.ERROR, 1061, "Problem occurred during type conversion: {0}"),
|
||||
MULTIPLE_POSSIBLE_METHODS(Kind.ERROR, 1062, "Method call of ''{0}'' is ambiguous, supported type conversions allow multiple variants to match"),
|
||||
EXCEPTION_DURING_PROPERTY_WRITE(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.")
|
||||
;
|
||||
|
||||
|
||||
INITIALIZER_LENGTH_INCORRECT(Kind.ERROR, 1001,
|
||||
"Array constructor call: initializer size of {0} does not match declared length of {1}"), TYPE_CONVERSION_ERROR(
|
||||
Kind.ERROR, 1002, "Type conversion problem, cannot convert from {0} to {1}"), CONSTRUCTOR_NOT_FOUND(
|
||||
Kind.ERROR, 1003, "Constructor call: No suitable constructor on type {0} for arguments {1}"), TYPE_NOT_FOUND(
|
||||
Kind.ERROR, 1004, "Type cannot be found ''{0}''"), ADDITION_NOT_DEFINED(Kind.ERROR, 1005,
|
||||
"Addition not defined between operands of type {0} and {1}"), METHOD_NOT_FOUND(Kind.ERROR, 1006,
|
||||
"Method call: Method {0} cannot be found on {1} type"), ATTEMPTED_METHOD_CALL_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(
|
||||
Kind.ERROR, 1008,
|
||||
"Field or property reference: Attempted to refer to field or property ''{0}'' on null context object"), PROPERTY_OR_FIELD_NOT_FOUND(
|
||||
Kind.ERROR, 1009, "Field or property ''{0}'' cannot be found on object of type ''{1}''"), PROPERTY_OR_FIELD_SETTER_NOT_FOUND(
|
||||
Kind.ERROR, 1010, "Field or property ''{0}'' cannot be set on object of type ''{1}''"), MULTIPLY_NOT_DEFINED(
|
||||
Kind.ERROR, 1011, "Multiply not defined between operands of type {0} and {1}"), NOT_COMPARABLE(Kind.ERROR,
|
||||
1012, "Cannot compare instances of {0} and {1}"), NOT_COMPARABLE_CANNOT_COERCE(Kind.ERROR, 1013,
|
||||
"Cannot compare instances of {0} and {1} because they cannot be coerced to the same type"), VARIABLE_NOT_FOUND(
|
||||
Kind.ERROR, 1014, "Variable named ''{0}'' cannot be found"), INCORRECT_NUMBER_OF_ARGUMENTS_TO_FUNCTION(
|
||||
Kind.ERROR, 1015, "Incorrect number of arguments for function, {0} supplied but function takes {1}"), NO_SUCH_FUNCTION(
|
||||
Kind.ERROR, 1016, "No such function named ''{0}''"), NOT_A_FUNCTION(Kind.ERROR, 1017,
|
||||
"The name ''{0}'' did not map to a function, it mapped to a ''{1}''"), INVALID_TYPE_FOR_SELECTION(
|
||||
Kind.ERROR, 1018, "Cannot perform selection on input data of type ''{0}''"), RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN(
|
||||
Kind.ERROR, 1019, "Result of selection criteria is not boolean"), MODULUS_NOT_DEFINED(Kind.ERROR, 1020,
|
||||
"Modulus not defined between operands of type ''{0}'' and ''{1}''"), NULL_OPERAND_TO_OPERATOR(Kind.ERROR,
|
||||
1021, "Operand evaluated to null and that is not supported for this operator"), NO_SIZE_OR_INITIALIZER_FOR_ARRAY_CONSTRUCTION(
|
||||
Kind.ERROR, 1022, "No array size or initializer was supplied to construct the array"), INCORRECT_ELEMENT_TYPE_FOR_ARRAY(
|
||||
Kind.ERROR, 1023, "The array of type ''{0}'' cannot have an element of type ''{1}'' inserted"), BETWEEN_RIGHT_OPERAND_MUST_BE_TWO_ELEMENT_LIST(
|
||||
Kind.ERROR, 1024, "Right operand for the 'between' operator has to be a two-element list"), TYPE_NOT_SUPPORTED_BY_PROCESSOR(
|
||||
Kind.ERROR, 1025,
|
||||
"The collection processor ''{0}'' does not understand and input collection of elements of type {1}"), UNABLE_TO_ACCESS_FIELD(
|
||||
Kind.ERROR, 1026, "Unable to access field ''{0}'' on type ''{1}''"), UNABLE_TO_ACCESS_PROPERTY_THROUGH_GETTER(
|
||||
Kind.ERROR, 1027, "Unable to access property ''{0}'' through getter on type ''{1}''"), UNABLE_TO_ACCESS_PROPERTY_THROUGH_SETTER(
|
||||
Kind.ERROR, 1028, "Unable to access property ''{0}'' through setter on type ''{1}''"), INVALID_PATTERN(
|
||||
Kind.ERROR, 1029, "Pattern is not valid ''{0}''"), RECOGNITION_ERROR(Kind.ERROR, 1030,
|
||||
"Recognition error: {0}"), // TODO poor message when a recognition exception occurs
|
||||
PROJECTION_NOT_SUPPORTED_ON_TYPE(Kind.ERROR, 1031, "Projection is not supported on the type ''{0}''"), ARGLIST_SHOULD_NOT_BE_EVALUATED(
|
||||
Kind.ERROR, 1032, "The argument list of a lambda expression should never have getValue() called upon it"), MAPENTRY_SHOULD_NOT_BE_EVALUATED(
|
||||
Kind.ERROR, 1033, "A map entry should never have getValue() called upon it"), EXCEPTION_DURING_PROPERTY_READ(
|
||||
Kind.ERROR, 1034, "A problem occurred whilst attempting to access the property ''{0}'': ''{1}''"), EXCEPTION_DURING_CONSTRUCTOR_INVOCATION(
|
||||
Kind.ERROR, 1035, "A problem occurred whilst attempting to construct ''{0}'': ''{1}''"), DATE_CANNOT_BE_PARSED(
|
||||
Kind.ERROR, 1036, "Unable to parse date ''{0}'' using format ''{1}''"), FUNCTION_REFERENCE_CANNOT_BE_INVOKED(
|
||||
Kind.ERROR, 1037, "The function ''{0}'' mapped to an object of type ''{1}'' which cannot be invoked"), FUNCTION_NOT_DEFINED(
|
||||
Kind.ERROR, 1038, "The function ''{0}'' could not be found"), EXCEPTION_DURING_FUNCTION_CALL(Kind.ERROR,
|
||||
1039, "A problem occurred whilst attempting to invoke the function ''{0}'': ''{1}''"), ARRAY_INDEX_OUT_OF_BOUNDS(
|
||||
Kind.ERROR, 1040, "The array has ''{0}'' elements, index ''{1}'' is invalid"), COLLECTION_INDEX_OUT_OF_BOUNDS(
|
||||
Kind.ERROR, 1041, "The collection has ''{0}'' elements, index ''{1}'' is invalid"), STRING_INDEX_OUT_OF_BOUNDS(
|
||||
Kind.ERROR, 1042, "The string has ''{0}'' characters, index ''{1}'' is invalid"), INDEXING_NOT_SUPPORTED_FOR_TYPE(
|
||||
Kind.ERROR, 1043, "Indexing into type ''{0}'' is not supported"), OPERATOR_IN_CANNOT_DETERMINE_MEMBERSHIP(
|
||||
Kind.ERROR, 1044, "Operator 'in' not implemented for detecting membership of a ''{0}'' in a ''{1}''"), CANNOT_NEGATE_TYPE(
|
||||
Kind.ERROR, 1045, "Cannot determine negation of type ''{0}''"), CUT_ARGUMENTS_MUST_BE_INTS(Kind.ERROR,
|
||||
1046, "Both arguments to the cut() processor must be Integers, but they are ''{0}'' and ''{1}''"), SOUNDSLIKE_NEEDS_STRING_OPERAND(
|
||||
Kind.ERROR, 1047, "The soundslike operator needs String operands, but found a ''{0}''"), INSTANCEOF_OPERATOR_NEEDS_CLASS_OPERAND(
|
||||
Kind.ERROR, 1048, "The operator 'instanceof' needs the right operand to be a class, not a ''{0}''"), LOCAL_VARIABLE_NOT_DEFINED(
|
||||
Kind.ERROR, 1049, "Local variable named ''{0}'' could not be found"), EXCEPTION_DURING_METHOD_INVOCATION(
|
||||
Kind.ERROR, 1050,
|
||||
"A problem occurred when trying to execute method ''{0}'' on object of type ''{1}'': ''{2}''"), PLACEHOLDER_SHOULD_NEVER_BE_EVALUATED(
|
||||
Kind.ERROR, 1051, "InternalError: A placeholder node in the Ast should never be evaluated!"), OPERATOR_NOT_SUPPORTED_BETWEEN_TYPES(
|
||||
Kind.ERROR, 1052, "The operator ''{0}'' is not supported between objects of type ''{1}'' and ''{2}''"), UNEXPECTED_PROBLEM_INVOKING_OPERATOR(
|
||||
Kind.ERROR, 1054,
|
||||
"Unexpected problem invoking operator ''{0}'' between objects of type ''{1}'' and ''{2}'': {3}"), PROBLEM_LOCATING_METHOD(
|
||||
Kind.ERROR, 1055, "Problem locating method {0} cannot on type {1}"), PROBLEM_LOCATING_CONSTRUCTOR(
|
||||
Kind.ERROR, 1056,
|
||||
"A problem occurred whilst attempting to construct an object of type ''{0}'' using arguments ''{1}''"), INVALID_FIRST_OPERAND_FOR_LIKE_OPERATOR(
|
||||
Kind.ERROR, 1057, "First operand to like operator must be a string. ''{0}'' is not"), INVALID_SECOND_OPERAND_FOR_LIKE_OPERATOR(
|
||||
Kind.ERROR, 1058, "Second operand to like operator must be a string (regex). ''{0}'' is not"), SETVALUE_NOT_SUPPORTED(
|
||||
Kind.ERROR, 1059, "setValue(ExpressionState, Object) not implemented for ''{0}'' (''{1}''"), 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}''"), PROBLEM_DURING_TYPE_CONVERSION(
|
||||
Kind.ERROR, 1061, "Problem occurred during type conversion: {0}"), MULTIPLE_POSSIBLE_METHODS(Kind.ERROR,
|
||||
1062, "Method call of ''{0}'' is ambiguous, supported type conversions allow multiple variants to match"), EXCEPTION_DURING_PROPERTY_WRITE(
|
||||
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 int code;
|
||||
private String message;
|
||||
|
|
|
|||
|
|
@ -22,20 +22,20 @@ import org.springframework.expression.spel.SpelException;
|
|||
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
|
||||
* instanceof does in Java.
|
||||
* The operator 'instanceof' checks if an object is of the class specified in the right hand operand, in the same way
|
||||
* that instanceof does in Java.
|
||||
*
|
||||
* @author Andy Clement
|
||||
*/
|
||||
public class OperatorIs extends Operator {
|
||||
public class OperatorInstanceof extends Operator {
|
||||
|
||||
public OperatorIs(Token payload) {
|
||||
public OperatorInstanceof(Token payload) {
|
||||
super(payload);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOperatorName() {
|
||||
return "is";
|
||||
return "instanceof";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -55,7 +55,7 @@ public class OperatorIs extends Operator {
|
|||
}
|
||||
if (right == null || !(right instanceof Class<?>)) {
|
||||
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;
|
||||
return rightClass.isAssignableFrom(left.getClass());
|
||||
|
|
@ -4,8 +4,6 @@ options {
|
|||
language = Java;
|
||||
output=AST;
|
||||
k=2;
|
||||
//caseSensitive = false;
|
||||
//backtrack=true;
|
||||
}
|
||||
|
||||
tokens {
|
||||
|
|
@ -29,9 +27,6 @@ tokens {
|
|||
METHOD;
|
||||
ADD;
|
||||
SUBTRACT;
|
||||
// MULTIPLY;
|
||||
// DIVIDE;
|
||||
// MODULUS;
|
||||
NUMBER;
|
||||
}
|
||||
|
||||
|
|
@ -55,19 +50,15 @@ tokens {
|
|||
|
||||
expr: expression EOF!;
|
||||
|
||||
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
||||
|
||||
expression :
|
||||
logicalOrExpression
|
||||
( (ASSIGN^ logicalOrExpression)
|
||||
| (DEFAULT^ logicalOrExpression)
|
||||
| (QMARK^ expression COLON! expression))?;
|
||||
|
||||
parenExpr : LPAREN! expression RPAREN!;// (ROGUE! | RPAREN!);
|
||||
|
||||
parenExpr : LPAREN! expression RPAREN!;
|
||||
|
||||
logicalOrExpression
|
||||
// possible extra info we could use for better error messages
|
||||
: logicalAndExpression (OR^ logicalAndExpression)*;
|
||||
|
||||
logicalAndExpression
|
||||
|
|
@ -78,7 +69,6 @@ relationalExpression : sumExpression (relationalOperator^ sumExpression)?;
|
|||
sumExpression
|
||||
: productExpression ( (PLUS^ | MINUS^) productExpression)*;
|
||||
|
||||
// TODO could really do with changing ast node types here
|
||||
productExpression
|
||||
: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;
|
||||
|
||||
|
|
@ -234,7 +224,7 @@ relationalOperator
|
|||
| GREATER_THAN
|
||||
| GREATER_THAN_OR_EQUAL
|
||||
| IN
|
||||
| IS
|
||||
| INSTANCEOF
|
||||
| BETWEEN
|
||||
| MATCHES
|
||||
;
|
||||
|
|
@ -247,7 +237,7 @@ LESS_THAN_OR_EQUAL: '<=';
|
|||
GREATER_THAN: '>';
|
||||
GREATER_THAN_OR_EQUAL: '>=';
|
||||
IN: 'in';
|
||||
IS: 'is';
|
||||
INSTANCEOF: 'instanceof';
|
||||
BETWEEN:'between';
|
||||
MATCHES:'matches';
|
||||
NULL_LITERAL: 'null';
|
||||
|
|
|
|||
|
|
@ -1,82 +1,81 @@
|
|||
GREATER_THAN_OR_EQUAL=69
|
||||
SELECT_FIRST=50
|
||||
COMMA=44
|
||||
GREATER_THAN_OR_EQUAL=68
|
||||
SELECT_FIRST=49
|
||||
HOLDER=11
|
||||
GREATER_THAN=68
|
||||
TYPE=52
|
||||
COMMA=43
|
||||
GREATER_THAN=67
|
||||
TYPE=51
|
||||
EXPRESSIONLIST=4
|
||||
MINUS=35
|
||||
MINUS=34
|
||||
MAP_ENTRY=20
|
||||
SELECT_LAST=51
|
||||
SELECT_LAST=50
|
||||
NUMBER=24
|
||||
LESS_THAN=66
|
||||
BANG=40
|
||||
FALSE=60
|
||||
LESS_THAN=65
|
||||
BANG=39
|
||||
FALSE=59
|
||||
METHOD=21
|
||||
PROPERTY_OR_FIELD=8
|
||||
LBRACKET=45
|
||||
LBRACKET=44
|
||||
INDEXER=9
|
||||
MOD=38
|
||||
MOD=37
|
||||
CONSTRUCTOR_ARRAY=12
|
||||
FUNCTIONREF=14
|
||||
NULL_LITERAL=56
|
||||
NULL_LITERAL=55
|
||||
NAMED_ARGUMENT=13
|
||||
OR=32
|
||||
PIPE=75
|
||||
DOT=41
|
||||
RCURLY=48
|
||||
OR=31
|
||||
PIPE=74
|
||||
DOT=40
|
||||
RCURLY=47
|
||||
EXPRESSION=6
|
||||
AND=33
|
||||
LCURLY=53
|
||||
REAL_TYPE_SUFFIX=83
|
||||
STRING_LITERAL=54
|
||||
SELECT=49
|
||||
AND=32
|
||||
LCURLY=52
|
||||
REAL_TYPE_SUFFIX=82
|
||||
STRING_LITERAL=53
|
||||
SELECT=48
|
||||
QUALIFIED_IDENTIFIER=7
|
||||
RBRACKET=46
|
||||
RBRACKET=45
|
||||
SUBTRACT=23
|
||||
ASSIGN=26
|
||||
BETWEEN=72
|
||||
RPAREN=31
|
||||
SIGN=84
|
||||
LPAREN=30
|
||||
HEX_DIGIT=63
|
||||
PLUS=34
|
||||
ASSIGN=25
|
||||
INSTANCEOF=70
|
||||
BETWEEN=71
|
||||
RPAREN=30
|
||||
SIGN=83
|
||||
LPAREN=29
|
||||
HEX_DIGIT=62
|
||||
PLUS=33
|
||||
LIST_INITIALIZER=18
|
||||
APOS=76
|
||||
APOS=75
|
||||
INTEGER_LITERAL=5
|
||||
AT=80
|
||||
ID=43
|
||||
NOT_EQUAL=65
|
||||
AT=79
|
||||
ID=42
|
||||
NOT_EQUAL=64
|
||||
RANGE=16
|
||||
POWER=39
|
||||
POWER=38
|
||||
TYPEREF=15
|
||||
DECIMAL_DIGIT=61
|
||||
WS=78
|
||||
IS=71
|
||||
DOLLAR=79
|
||||
LESS_THAN_OR_EQUAL=67
|
||||
SEMIRPAREN=25
|
||||
DQ_STRING_LITERAL=55
|
||||
HEXADECIMAL_INTEGER_LITERAL=57
|
||||
DECIMAL_DIGIT=60
|
||||
WS=77
|
||||
DOLLAR=78
|
||||
LESS_THAN_OR_EQUAL=66
|
||||
DQ_STRING_LITERAL=54
|
||||
HEXADECIMAL_INTEGER_LITERAL=56
|
||||
MAP_INITIALIZER=19
|
||||
IN=70
|
||||
SEMI=74
|
||||
IN=69
|
||||
SEMI=73
|
||||
CONSTRUCTOR=10
|
||||
INTEGER_TYPE_SUFFIX=62
|
||||
EQUAL=64
|
||||
MATCHES=73
|
||||
DOT_ESCAPED=77
|
||||
UPTO=81
|
||||
QMARK=28
|
||||
PROJECT=47
|
||||
DEFAULT=27
|
||||
COLON=29
|
||||
DIV=37
|
||||
STAR=36
|
||||
REAL_LITERAL=58
|
||||
INTEGER_TYPE_SUFFIX=61
|
||||
EQUAL=63
|
||||
MATCHES=72
|
||||
DOT_ESCAPED=76
|
||||
UPTO=80
|
||||
QMARK=27
|
||||
PROJECT=46
|
||||
DEFAULT=26
|
||||
COLON=28
|
||||
DIV=36
|
||||
STAR=35
|
||||
REAL_LITERAL=57
|
||||
VARIABLEREF=17
|
||||
EXPONENT_PART=82
|
||||
TRUE=59
|
||||
EXPONENT_PART=81
|
||||
TRUE=58
|
||||
ADD=22
|
||||
POUND=42
|
||||
'new'=85
|
||||
POUND=41
|
||||
'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;}
|
||||
|
||||
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
|
||||
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
|
||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 214
|
||||
INTEGER_LITERAL
|
||||
: (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)?;
|
||||
|
||||
// $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: '=';
|
||||
// $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: '==';
|
||||
// $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: '!=';
|
||||
// $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: '<';
|
||||
// $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: '<=';
|
||||
// $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: '>';
|
||||
// $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: '>=';
|
||||
// $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';
|
||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 250
|
||||
IS: 'is';
|
||||
// $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" 240
|
||||
INSTANCEOF: 'instanceof';
|
||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 241
|
||||
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';
|
||||
// $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';
|
||||
|
||||
// $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: ';';
|
||||
// $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: '.';
|
||||
// $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: ',';
|
||||
// $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: '(';
|
||||
// $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: ')';
|
||||
// $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: '{';
|
||||
// $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: '}';
|
||||
// $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: '[';
|
||||
// $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: ']';
|
||||
// $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: '|';
|
||||
|
||||
// $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';
|
||||
// $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';
|
||||
// $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';
|
||||
// $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';
|
||||
|
||||
// $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: '+';
|
||||
// $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: '-';
|
||||
// $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: '/';
|
||||
// $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: '*';
|
||||
// $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: '%';
|
||||
// $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: '^';
|
||||
// $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: '!';
|
||||
// $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: '#';
|
||||
// $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: '?';
|
||||
// $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: '??';
|
||||
// $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: '!{';
|
||||
// $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: '?{';
|
||||
// $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: '^{';
|
||||
// $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: '${';
|
||||
// $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(';
|
||||
|
||||
// $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|~'\'')* '\''!;
|
||||
// $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: '"'! (~'"')* '"'!;
|
||||
// $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)*;
|
||||
// $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: '\\.';
|
||||
// $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; } ;
|
||||
// $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: '$';
|
||||
// $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: '@';
|
||||
// $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: '..';
|
||||
// $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: ':';
|
||||
|
||||
|
||||
// $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 :
|
||||
('.' (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)+ (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 : '\''! '\'';
|
||||
// $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' ;
|
||||
// $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' );
|
||||
// $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';
|
||||
|
||||
// $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)+ ;
|
||||
// $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 : '+' | '-' ;
|
||||
// $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';
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import org.springframework.expression.spel.ast.OperatorGreaterThan;
|
|||
import org.springframework.expression.spel.ast.OperatorGreaterThanOrEqual;
|
||||
import org.springframework.expression.spel.ast.OperatorIn;
|
||||
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.OperatorLessThanOrEqual;
|
||||
import org.springframework.expression.spel.ast.OperatorMatches;
|
||||
|
|
@ -170,8 +170,8 @@ public class SpelTreeAdaptor extends CommonTreeAdaptor {
|
|||
return new OperatorBetween(payload);
|
||||
case SpringExpressionsLexer.MATCHES:
|
||||
return new OperatorMatches(payload);
|
||||
case SpringExpressionsLexer.IS:
|
||||
return new OperatorIs(payload);
|
||||
case SpringExpressionsLexer.INSTANCEOF:
|
||||
return new OperatorInstanceof(payload);
|
||||
|
||||
case SpringExpressionsLexer.RPAREN:
|
||||
return new Placeholder(payload);
|
||||
|
|
|
|||
|
|
@ -72,27 +72,27 @@ public class EvaluationTests extends ExpressionTestCase {
|
|||
}
|
||||
|
||||
public void testRelOperatorsIs01() {
|
||||
evaluate("'xyz' is T(int)", "false", Boolean.class);
|
||||
evaluate("'xyz' instanceof T(int)", "false", Boolean.class);
|
||||
}
|
||||
|
||||
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() {
|
||||
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() {
|
||||
evaluate("null is T(String)", "false", Boolean.class);
|
||||
evaluate("null instanceof T(String)", "false", Boolean.class);
|
||||
}
|
||||
|
||||
public void testRelOperatorsIs05() {
|
||||
evaluate("null is T(Integer)", "false", Boolean.class);
|
||||
evaluate("null instanceof T(Integer)", "false", Boolean.class);
|
||||
}
|
||||
|
||||
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() {
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ public class ParserErrorMessagesTests extends ExpressionTestCase {
|
|||
public void testBrokenExpression07() {
|
||||
// T() can only take an identifier (possibly qualified), not a literal
|
||||
// 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
|
||||
|
||||
public void testRelOperatorsIs01() {
|
||||
parseCheck("'xyz' is int", "('xyz' is int)");
|
||||
parseCheck("'xyz' instanceof int", "('xyz' instanceof int)");
|
||||
}// false
|
||||
|
||||
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
|
||||
|
||||
public void testRelOperatorsMatches01() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue