Java Quartz CronExpression проверяет неправильное выражение cron - PullRequest
0 голосов
/ 10 сентября 2018

Я использую кварцевый планировщик для планирования своих работ. У меня неправильное выражение cron:

1 15 10 ? * *ssddddfd

Когда я делаю:

String cronExpression = "1 15 10 ? * *ssdddfd";
boolean checkCronExpression = CronExpression.isValidExpression(cronExpression);

checkCronExpression - это true. Однако когда я смотрю на выражение, оно явно неверно. Кто-нибудь еще также сталкивался с подобной проблемой?

Примечание: Пакет: пакет орг.кварц;

Версия кварца: 2.2.3

Пожалуйста, проверьте класс CronExpression с http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3

Я также попробовал validateExpression метод класса CronExpression, но безуспешно.

1 Ответ

0 голосов
/ 13 сентября 2018

Это недавно было зарегистрировано как ошибка:

https://github.com/quartz-scheduler/quartz/issues/254

И вы правы, это, вероятно, неожиданно.

Однако, будучи очень осторожным, можно поспоритьчто JavaDoc из isValidCronExpression состояний

Указывает, может ли указанное выражение cron быть проанализировано в допустимое выражение cron

И фактически выражениеВы предоставили , можете быть преобразованным в действительный CronExpression, хотя выражение само по себе недопустимо.По сути, гарантия, которую вы получаете от звонка CronExpression.isValidCronExpression(expression), заключается в том, что вы можете безопасно звонить new CronExpression(expression), не опасаясь, что ParseException будет брошено.Однако, поскольку java.text.ParseException является проверенным исключением, это довольно бессмысленно.

Таким образом, текущая реализация CronExpression кажется слишком мягкой.

Может быть, вы хотите датьдругие библиотеки попробуйте (только что искали в Google):

Но если вы хотите использовать выражение сКварц позже, ваш лучший вариант - остаться с проверкой кварца, так как шаблоны, действительные для других библиотек, могут быть недействительными для кварца и наоборот.Например, исходный код кварца гласит, что шаблоны с «днем недели» и «днем месяца» в настоящее время не поддерживаются, хотя в общем случае это поддерживается выражениями cron.

...