Groovy脚本沙盒:使用Java中的Groovy TimeCategory语法作为字符串
我有一个带API的Java应用程序。API允许使用灵活的日期语法:
PUT /monthly-jobs/job1
{
"startExpression": "now + 1.week + 4.days + 2.hours"
}
对于这个任务,我想利用Groovy的TimeCategory类(http://groovycookbook.org/basic_types/dates_times/)
我认为,根据接口,应该有一个helperJava类:
interface DateExpressionEvaluator {
Date evaluateDateExpression(String expr);
}
正确的方法是什么?如何在这样的需求中使用Groovy
请注意,我不能简单地将输入作为groovy代码进行计算,因为API用户可能会插入groovy代码并攻击服务器
# 1 楼答案
我必须使用groovy脚本沙盒(https://github.com/kohsuke/groovy-sandbox)创建一个解决方案:
测试用例:
DateExpressionUtils:
DateExpressionSandbox: