Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
皇甫嗷嗷叫
qlexpress
提交
5f921d8d
Q
qlexpress
项目概览
皇甫嗷嗷叫
/
qlexpress
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qlexpress
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5f921d8d
编写于
11月 17, 2017
作者:
T
tianqiao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
//bugfix处理ExpressRunner嵌套情况下,cache还原的问题
上级
cdc53ece
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
72 addition
and
3 deletion
+72
-3
pom.xml
pom.xml
+1
-1
src/main/java/com/ql/util/express/instruction/OperateDataCacheManager.java
.../ql/util/express/instruction/OperateDataCacheManager.java
+11
-2
src/test/java/com/ql/util/express/bugfix/RecursivelyRunnerTest.java
...ava/com/ql/util/express/bugfix/RecursivelyRunnerTest.java
+60
-0
未找到文件。
pom.xml
浏览文件 @
5f921d8d
...
...
@@ -6,7 +6,7 @@
<groupId>
com.taobao.util
</groupId>
<artifactId>
taobao-express
</artifactId>
<packaging>
jar
</packaging>
<version>
3.1.
5
</version>
<version>
3.1.
6
</version>
<name>
taobao-express
</name>
<dependencies>
...
...
src/main/java/com/ql/util/express/instruction/OperateDataCacheManager.java
浏览文件 @
5f921d8d
...
...
@@ -86,8 +86,17 @@ class RunnerDataCache{
return
this
.
cache
;
}
public
void
pop
(
ExpressRunner
aRunner
){
this
.
cache
=
this
.
stack
.
pop
().
getOperateDataCache
();
// 原有的逻辑
// this.cache = this.stack.pop().getOperateDataCache();
//bugfix处理ExpressRunner嵌套情况下,cache还原的问题
this
.
stack
.
pop
();
if
(!
this
.
stack
.
isEmpty
()){
this
.
cache
=
this
.
stack
.
peek
().
getOperateDataCache
();
}
else
{
this
.
cache
=
null
;
}
}
}
src/test/java/com/ql/util/express/bugfix/RecursivelyRunnerTest.java
0 → 100644
浏览文件 @
5f921d8d
package
com.ql.util.express.bugfix
;
import
com.ql.util.express.DefaultContext
;
import
com.ql.util.express.ExpressRunner
;
import
com.ql.util.express.Operator
;
import
org.junit.Test
;
import
java.lang.reflect.Method
;
public
class
RecursivelyRunnerTest
{
@Test
public
void
testEvalOperator
()
throws
Exception
{
ExpressRunner
runner
=
new
ExpressRunner
();
runner
.
addFunction
(
"eval"
,
new
EvalOperator
());
String
express
=
"eval('10')+eval('20')+eval('30')"
;
Object
r
=
runner
.
execute
(
express
,
null
,
null
,
true
,
false
);
System
.
out
.
println
(
r
);
}
@Test
public
void
testSubRunner
()
throws
Exception
{
ExpressRunner
runner
=
new
ExpressRunner
();
//bind SubRunner.evel method
SubRunner
subRunner
=
new
SubRunner
();
Method
[]
methods
=
SubRunner
.
class
.
getDeclaredMethods
();
for
(
Method
m
:
methods
)
{
String
name
=
m
.
getName
();
runner
.
addFunctionOfServiceMethod
(
name
,
subRunner
,
name
,
m
.
getParameterTypes
(),
null
);
}
String
express
=
"eval('10')+eval('20')+eval('30')"
;
Object
r
=
runner
.
execute
(
express
,
null
,
null
,
true
,
false
);
System
.
out
.
println
(
r
);
}
public
static
class
EvalOperator
extends
Operator
{
private
ExpressRunner
subRun
=
new
ExpressRunner
();
@Override
public
Object
executeInner
(
Object
[]
list
)
throws
Exception
{
Object
result
=
subRun
.
execute
((
String
)
list
[
0
],
new
DefaultContext
(),
null
,
true
,
false
);
return
result
;
}
}
public
static
class
SubRunner
{
private
ExpressRunner
subRun
=
new
ExpressRunner
();
public
Object
eval
(
String
obj
)
throws
Exception
{
Object
result
=
subRun
.
execute
(
obj
,
new
DefaultContext
(),
null
,
true
,
false
);
return
result
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录