boolean
isValidExpression(
String
expression){
boolean
result
=
false
;
if
(CronExpression.isValidExpression(expression)){
try
{
CronExpression targetExpression
=
new
CronExpression(expression);
if
(targetExpression.getNextValidTimeAfter(
new
Date(
System
.currentTimeMillis()))
!
=
null
){
result
=
true
;
}
catch
(ParseException e) {
e.printStackTrace();
return
result;
첫 조건은 Cron 식이 유효한 식인지 확인하는 isValidExpression이다.
파라메터는 String, 반환값은 boolean이다.
3번째 줄 isValidExpression의 내부를 보면
CronExpression을 생성하면서 파라메터의 String을 생성자로 주는데, 이 때 Exception이 발생하면 false, 제대로 생성되면 true를 반환하게 된다. 결국 5번째 줄 CronExpression 생성자를 내부에서 한번 해보고 결과를 넘겨주는 것이다.
두번째 조건은 6번째 줄의 getNextValidTimeAfter이다.
CronExpression이 생성됐다면, getNextValidTimeAfter를 통해 다음 수행 예정 Date가 있는지를 체크하는 것이다. 없으면 null이 반환되기 때문에 null일 경우 다음 수행 예정이 없는 무의미한 Cron 식이라는 것이고, 있다면 사용할 수 있는 식으로 간주한다.
두 조건을 만족할 경우 true를 반환해 새로운 Job을 생성하도록 한다.
https://www.quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html#validateExpression(java.lang.String)
CronExpression (Quartz Parent POM 2.1.7 API)
protected void addToSet(int val, int end, int incr, int type)
www.quartz-scheduler.org
https://github.com/quartz-scheduler/quartz/blob/master/quartz-core/src/main/java/org/quartz/CronExpression.java
quartz-scheduler/quartz
Code for Quartz Scheduler. Contribute to quartz-scheduler/quartz development by creating an account on GitHub.
github.com