Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
z_stack
Activiti
提交
9a9e980d
A
Activiti
项目概览
z_stack
/
Activiti
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
Activiti
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
9a9e980d
编写于
10月 26, 2021
作者:
R
Rubén Barroso
提交者:
GitHub
10月 26, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
JUEL date functions now return date data type instead of formatted string (#3742)
上级
32534836
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
36 deletion
+15
-36
activiti-core-common/activiti-expression-language/src/main/java/org/activiti/core/el/DateResolverHelper.java
...rc/main/java/org/activiti/core/el/DateResolverHelper.java
+5
-22
activiti-core-common/activiti-expression-language/src/test/java/org/activiti/core/el/JuelResolverTest.java
.../src/test/java/org/activiti/core/el/JuelResolverTest.java
+10
-14
未找到文件。
activiti-core-common/activiti-expression-language/src/main/java/org/activiti/core/el/DateResolverHelper.java
浏览文件 @
9a9e980d
...
...
@@ -15,41 +15,24 @@
*/
package
org.activiti.core.el
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.TimeZone
;
public
class
DateResolverHelper
{
private
static
final
String
ISO_8601_FORMAT
=
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
;
private
static
final
String
DATE_FORMAT
=
"yyyy-MM-dd"
;
private
static
final
String
DATE_FUNCTION_NAME
=
"today"
;
private
static
final
String
DATE_INVOKE_METHOD
=
"today"
;
private
static
final
String
DATETIME_FUNCTION_NAME
=
"current"
;
private
static
final
String
DATETIME_INVOKE_METHOD
=
"current"
;
private
static
final
String
NOW_FUNCTION_NAME
=
"now"
;
private
static
final
String
NOW_INVOKE_METHOD
=
"now"
;
private
static
final
TimeZone
TIME_ZONE
=
TimeZone
.
getTimeZone
(
"UTC"
);
public
static
final
String
today
()
{
return
parseNow
(
DATE_FORMAT
);
}
public
static
final
String
current
()
{
return
parseNow
(
ISO_8601_FORMAT
);
public
static
final
Date
now
()
{
return
new
Date
();
}
private
DateResolverHelper
()
{
}
private
static
String
parseNow
(
String
format
)
{
DateFormat
dateFormat
=
new
SimpleDateFormat
(
format
);
dateFormat
.
setTimeZone
(
TIME_ZONE
);
return
dateFormat
.
format
(
new
Date
());
}
public
static
void
addDateFunctions
(
ActivitiElContext
elContext
)
throws
NoSuchMethodException
{
elContext
.
setFunction
(
""
,
DATE_FUNCTION_NAME
,
DateResolverHelper
.
class
.
getMethod
(
DATE_INVOKE_METHOD
));
elContext
.
setFunction
(
""
,
DATETIME_FUNCTION_NAME
,
DateResolverHelper
.
class
.
getMethod
(
DATETIME_INVOKE_METHOD
));
elContext
.
setFunction
(
""
,
NOW_FUNCTION_NAME
,
DateResolverHelper
.
class
.
getMethod
(
NOW_INVOKE_METHOD
));
}
}
activiti-core-common/activiti-expression-language/src/test/java/org/activiti/core/el/JuelResolverTest.java
浏览文件 @
9a9e980d
...
...
@@ -19,9 +19,10 @@ import static org.assertj.core.api.Assertions.assertThat;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThatExceptionOfType
;
import
static
org
.
hamcrest
.
Matchers
.
is
;
import
static
org
.
hamcrest
.
Matchers
.
notNullValue
;
import
static
org
.
hamcrest
.
text
.
MatchesPattern
.
matchesPattern
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.Map
;
import
javax.el.ELException
;
import
javax.el.PropertyNotFoundException
;
import
org.hamcrest.MatcherAssert
;
import
org.junit.Test
;
...
...
@@ -96,33 +97,28 @@ public class JuelResolverTest {
}
@Test
public
void
should_returnDate_when_expressionIs
Today
Function
()
{
public
void
should_returnDate_when_expressionIs
Now
Function
()
{
//given
String
expressionString
=
"${
today
()}"
;
String
expressionString
=
"${
now
()}"
;
ExpressionResolver
expressionResolver
=
new
JuelExpressionResolver
();
//when
String
value
=
expressionResolver
.
resolveExpression
(
expressionString
,
Collections
.
emptyMap
(),
String
.
class
);
Date
value
=
expressionResolver
.
resolveExpression
(
expressionString
,
Collections
.
emptyMap
(),
Date
.
class
);
//then
MatcherAssert
.
assertThat
(
value
,
is
(
notNullValue
()));
MatcherAssert
.
assertThat
(
value
,
matchesPattern
(
"([0-9]{4})\\-([0-9]{2})\\-([0-9]{2})"
));
}
@Test
public
void
should_
returnDate_when_expressionIsCurrentFunction
()
{
public
void
should_
throwException_when_unknownFunctionIsReferenced
()
{
//given
String
expressionString
=
"${current()}"
;
ExpressionResolver
expressionResolver
=
new
JuelExpressionResolver
();
//when
String
value
=
expressionResolver
.
resolveExpression
(
expressionString
,
Collections
.
emptyMap
(),
String
.
class
);
//then
MatcherAssert
.
assertThat
(
value
,
is
(
notNullValue
()));
MatcherAssert
.
assertThat
(
value
,
matchesPattern
(
"^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-"
+
"(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|"
+
"(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d{1,9})?(?:Z|[+-][01]\\d:[0-5]\\d)$"
));
assertThatExceptionOfType
(
ELException
.
class
)
.
as
(
"Referencing an unknown function"
)
.
isThrownBy
(()
->
expressionResolver
.
resolveExpression
(
expressionString
,
Collections
.
emptyMap
(),
Date
.
class
))
.
withMessage
(
"Could not resolve function 'current'"
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录