验证javax.ejb.ScheduleExpression

Mat*_*teo 6 validation java-ee cronexpression

我有一个文本字段,用户可以在其中输入cron表达式(例如0 */5 * * * *).然后我拆分它并构建一个javax.ejb.ScheduleExpression.

现在javax.ejb.ScheduleExpression接受不同元素的任何String而不进行验证.我可以举个例子

scheduleExpression.minute("randomText");
Run Code Online (Sandbox Code Playgroud)

并被接受.如果然后尝试使用ScheduleExpression我显然会得到错误(例如,当我尝试用它创建一个计时器时).

我开始编写代码来验证输入,但规则不是那么简短和琐碎:http://docs.oracle.com/javaee/6/api/javax/ejb/ScheduleExpression.html

是否有一种简单的方法(在Java EE中)或已经完成工作的库?

Big*_*gAl 4

由于我遇到了同样的问题,我为 EJB 计时器构建了一个 bean 验证器注释。

随意使用它。对于所有不想或不能使用 bean 验证的人,请查看文件 CronField.java 中的正则表达式来手动验证字符串。

正则表达式是为“ScheduleExpression”而不是“CronExpression”设计的,因此我选择的名称可能看起来有点令人困惑。

如果您有改进或优化,请向我发送拉取请求或消息。

源代码可以在这个存储库中找到。

用法:公开课月{

    @CheckCronField(CronField.MONTH)
    public String expression;
    ...
}
Run Code Online (Sandbox Code Playgroud)

同一存储库的测试文件夹中提供了更多示例。