Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dk131072
spring-framework
提交
efee3b34
S
spring-framework
项目概览
dk131072
/
spring-framework
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
efee3b34
编写于
9月 16, 2008
作者:
A
Andy Clement
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
date literal removed
上级
8740b702
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
8617 addition
and
10114 deletion
+8617
-10114
org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/DateLiteral.java
.../org/springframework/expression/spel/ast/DateLiteral.java
+0
-79
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g
...ngframework/expression/spel/generated/SpringExpressions.g
+1
-21
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.tokens
...mework/expression/spel/generated/SpringExpressions.tokens
+78
-80
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressionsLexer.java
...ork/expression/spel/generated/SpringExpressionsLexer.java
+2769
-2895
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressionsParser.java
...rk/expression/spel/generated/SpringExpressionsParser.java
+5705
-6927
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions__.g
...framework/expression/spel/generated/SpringExpressions__.g
+64
-81
org.springframework.expression/src/main/java/org/springframework/expression/spel/internal/SpelTreeAdaptor.java
...ngframework/expression/spel/internal/SpelTreeAdaptor.java
+0
-3
org.springframework.expression/src/test/java/org/springframework/expression/spel/LiteralTests.java
...ava/org/springframework/expression/spel/LiteralTests.java
+0
-28
未找到文件。
org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/DateLiteral.java
已删除
100644 → 0
浏览文件 @
8740b702
/*
* Copyright 2004-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.expression.spel.ast
;
import
java.text.DateFormat
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.Locale
;
import
org.antlr.runtime.Token
;
import
org.springframework.expression.EvaluationException
;
import
org.springframework.expression.spel.ExpressionState
;
import
org.springframework.expression.spel.SpelException
;
import
org.springframework.expression.spel.SpelMessages
;
/**
* Represents a date literal value in an expression (a java.util.Date object).
*
* @author Andy Clement
*
*/
public
class
DateLiteral
extends
SpelNode
{
private
DateFormat
formatter
=
null
;
private
Date
formattedDate
=
null
;
public
DateLiteral
(
Token
payload
)
{
super
(
payload
);
}
@Override
public
Date
getValue
(
ExpressionState
state
)
throws
EvaluationException
{
if
(
formatter
==
null
)
{
if
(
getChildCount
()
>
1
)
{
formatter
=
new
SimpleDateFormat
((
String
)
getChild
(
1
).
getValue
(
state
));
}
else
{
// http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
// this is something of this format: "Wed, 4 Jul 2001 12:08:56 GMT"
formatter
=
new
SimpleDateFormat
(
"EEE, d MMM yyyy HH:mm:ss z"
,
Locale
.
UK
);
}
}
String
valueToParse
=
(
String
)
getChild
(
0
).
getValue
(
state
);
try
{
formattedDate
=
formatter
.
parse
(
valueToParse
);
}
catch
(
ParseException
e
)
{
throw
new
SpelException
(
getCharPositionInLine
(),
e
,
SpelMessages
.
DATE_CANNOT_BE_PARSED
,
valueToParse
,
(
formatter
instanceof
SimpleDateFormat
?
((
SimpleDateFormat
)
formatter
).
toLocalizedPattern
()
:
formatter
));
}
return
formattedDate
;
}
@Override
public
String
toStringAST
()
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"date("
);
sb
.
append
(
getChild
(
0
).
toStringAST
());
if
(
getChildCount
()
>
1
)
{
sb
.
append
(
","
).
append
(
getChild
(
1
).
toStringAST
());
}
sb
.
append
(
")"
);
return
sb
.
toString
();
}
}
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g
浏览文件 @
efee3b34
...
...
@@ -18,7 +18,6 @@ tokens {
INDEXER;
ARGLIST;
CONSTRUCTOR;
DATE_LITERAL;
HOLDER;
CONSTRUCTOR_ARRAY;
NAMED_ARGUMENT;
...
...
@@ -252,13 +251,10 @@ literal
| NULL_LITERAL
| HEXADECIMAL_INTEGER_LITERAL
| REAL_LITERAL
| dateLiteral
;
boolLiteral: TRUE | FALSE;
dateLiteral: 'date' LPAREN d=STRING_LITERAL (COMMA f=STRING_LITERAL)? RPAREN -> ^(DATE_LITERAL $d ($f)?);
INTEGER_LITERAL
: (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
...
...
@@ -327,27 +323,12 @@ STRING_LITERAL: '\''! (APOS|~'\'')* '\''!;
DQ_STRING_LITERAL: '"'! (~'"')* '"'!;
ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*;
DOT_ESCAPED: '\\.';
//DOUBLE_DOT: ':';
WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ;
DOLLAR: '$';
AT: '@';
UPTO: '..';
COLON: ':';
/*
// real - use syntactic predicates (guess mode)
: ('.' DECIMAL_DIGIT) =>
in= '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?
| ((DECIMAL_DIGIT)+ '.' DECIMAL_DIGIT) =>
in=(DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?
| ((DECIMAL_DIGIT)+ (EXPONENT_PART)) =>
in= (DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?
| ((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX)) =>
in= (DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX)
*/
REAL_LITERAL :
('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
...
...
@@ -362,5 +343,4 @@ fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'
fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ;
fragment SIGN : '+' | '-' ;
// TODO what is M or m?
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd' | 'M' | 'm' ;
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.tokens
浏览文件 @
efee3b34
GREATER_THAN_OR_EQUAL=7
8
SELECT_FIRST=5
7
COMMA=
50
HOLDER=1
4
GREATER_THAN=7
7
TYPE=5
9
GREATER_THAN_OR_EQUAL=7
7
SELECT_FIRST=5
6
COMMA=
49
HOLDER=1
3
GREATER_THAN=7
6
TYPE=5
8
EXPRESSIONLIST=4
MINUS=
40
MAP_ENTRY=2
5
SELECT_LAST=5
8
NUMBER=2
9
LESS_THAN=7
5
BANG=4
5
MINUS=
39
MAP_ENTRY=2
4
SELECT_LAST=5
7
NUMBER=2
8
LESS_THAN=7
4
BANG=4
4
ARGLIST=11
FALSE=6
9
METHOD=2
6
FALSE=6
8
METHOD=2
5
PROPERTY_OR_FIELD=9
LBRACKET=5
2
LBRACKET=5
1
INDEXER=10
MOD=4
3
CONSTRUCTOR_ARRAY=1
5
FUNCTIONREF=1
7
NULL_LITERAL=6
5
NAMED_ARGUMENT=1
6
OR=3
7
PIPE=6
1
DOT=4
6
RCURLY=5
5
MOD=4
2
CONSTRUCTOR_ARRAY=1
4
FUNCTIONREF=1
6
NULL_LITERAL=6
4
NAMED_ARGUMENT=1
5
OR=3
6
PIPE=6
0
DOT=4
5
RCURLY=5
4
EXPRESSION=6
AND=38
LCURLY=62
DATE_LITERAL=13
REAL_TYPE_SUFFIX=89
STRING_LITERAL=63
SELECT=56
AND=37
LCURLY=61
REAL_TYPE_SUFFIX=88
STRING_LITERAL=62
SELECT=55
QUALIFIED_IDENTIFIER=7
RBRACKET=5
3
SUBTRACT=2
8
ASSIGN=3
1
BETWEEN=8
1
RPAREN=3
6
SIGN=
90
LPAREN=3
5
HEX_DIGIT=7
2
PLUS=3
9
LIST_INITIALIZER=2
1
APOS=8
4
RBRACKET=5
2
SUBTRACT=2
7
ASSIGN=3
0
BETWEEN=8
0
RPAREN=3
5
SIGN=
89
LPAREN=3
4
HEX_DIGIT=7
1
PLUS=3
8
LIST_INITIALIZER=2
0
APOS=8
3
INTEGER_LITERAL=5
AT=5
1
ID=4
8
NOT_EQUAL=7
4
RANGE=1
9
POWER=4
4
TYPEREF=1
8
DECIMAL_DIGIT=
70
WS=8
6
IS=
80
DOLLAR=4
9
LESS_THAN_OR_EQUAL=7
6
SEMIRPAREN=
30
DQ_STRING_LITERAL=6
4
HEXADECIMAL_INTEGER_LITERAL=6
6
MAP_INITIALIZER=2
2
LAMBDA=
60
LOCALFUNC=2
4
IN=7
9
SEMI=8
3
AT=5
0
ID=4
7
NOT_EQUAL=7
3
RANGE=1
8
POWER=4
3
TYPEREF=1
7
DECIMAL_DIGIT=
69
WS=8
5
IS=
79
DOLLAR=4
8
LESS_THAN_OR_EQUAL=7
5
SEMIRPAREN=
29
DQ_STRING_LITERAL=6
3
HEXADECIMAL_INTEGER_LITERAL=6
5
MAP_INITIALIZER=2
1
LAMBDA=
59
LOCALFUNC=2
3
IN=7
8
SEMI=8
2
CONSTRUCTOR=12
INTEGER_TYPE_SUFFIX=7
1
EQUAL=7
3
MATCHES=8
2
DOT_ESCAPED=8
5
UPTO=8
7
QMARK=3
3
INTEGER_TYPE_SUFFIX=7
0
EQUAL=7
2
MATCHES=8
1
DOT_ESCAPED=8
4
UPTO=8
6
QMARK=3
2
REFERENCE=8
PROJECT=54
DEFAULT=32
COLON=34
DIV=42
LOCALVAR=23
STAR=41
REAL_LITERAL=67
VARIABLEREF=20
EXPONENT_PART=88
TRUE=68
ADD=27
POUND=47
'date'=92
'new'=91
PROJECT=53
DEFAULT=31
COLON=33
DIV=41
LOCALVAR=22
STAR=40
REAL_LITERAL=66
VARIABLEREF=19
EXPONENT_PART=87
TRUE=67
ADD=26
POUND=46
'new'=90
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressionsLexer.java
浏览文件 @
efee3b34
此差异已折叠。
点击以展开。
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressionsParser.java
浏览文件 @
efee3b34
此差异已折叠。
点击以展开。
org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions__.g
浏览文件 @
efee3b34
此差异已折叠。
点击以展开。
org.springframework.expression/src/main/java/org/springframework/expression/spel/internal/SpelTreeAdaptor.java
浏览文件 @
efee3b34
...
...
@@ -22,7 +22,6 @@ import org.springframework.expression.spel.ast.Assign;
import
org.springframework.expression.spel.ast.BooleanLiteral
;
import
org.springframework.expression.spel.ast.CompoundExpression
;
import
org.springframework.expression.spel.ast.ConstructorReference
;
import
org.springframework.expression.spel.ast.DateLiteral
;
import
org.springframework.expression.spel.ast.Dot
;
import
org.springframework.expression.spel.ast.ExpressionListNode
;
import
org.springframework.expression.spel.ast.FunctionReference
;
...
...
@@ -123,8 +122,6 @@ public class SpelTreeAdaptor extends CommonTreeAdaptor {
return
new
StringLiteral
(
payload
);
case
SpringExpressionsLexer
.
NULL_LITERAL
:
return
new
NullLiteral
(
payload
);
case
SpringExpressionsLexer
.
DATE_LITERAL
:
return
new
DateLiteral
(
payload
);
case
SpringExpressionsLexer
.
ID
:
return
new
Identifier
(
payload
);
...
...
org.springframework.expression/src/test/java/org/springframework/expression/spel/LiteralTests.java
浏览文件 @
efee3b34
...
...
@@ -129,34 +129,6 @@ public class LiteralTests extends ExpressionTestCase {
evaluate
(
"null"
,
null
,
null
);
}
public
void
testLiteralDate01
()
{
evaluate
(
"date('Wed, 4 Jul 2001 12:08:56 GMT').getTime()>0"
,
"true"
,
Boolean
.
class
);
}
public
void
testLiteralDate02
()
{
evaluate
(
"date('19740824131030','yyyyMMddHHmmss').getHours()"
,
"13"
,
Integer
.
class
);
}
public
void
testLiteralDate03
()
{
// Jal is not a valid month
evaluateAndCheckError
(
"date('Wed, 4 Jal 2001 12:08:56 GMT').getTime()>0"
,
SpelMessages
.
DATE_CANNOT_BE_PARSED
);
}
public
void
testLiteralDate04
()
{
// null format
parseAndCheckError
(
"date('Wed, 4 Jul 2001 12:08:56 GMT',null).getTime()>0"
,
SpelMessages
.
PARSE_PROBLEM
);
}
public
void
testLiteralDate05
()
{
// null date
parseAndCheckError
(
"date(null).getTime()>0"
,
SpelMessages
.
PARSE_PROBLEM
);
}
public
void
testLiteralDate06
()
{
// int year convertable from number to string
parseAndCheckError
(
"date(2008,'yyyy').getTime()>0"
,
SpelMessages
.
PARSE_PROBLEM
);
}
public
void
testConversions
()
{
// getting the expression type to be what we want - either:
evaluate
(
"new Integer(37).byteValue()"
,
(
byte
)
37
,
Byte
.
class
);
// calling byteValue() on Integer.class
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录