Cron { public static boolean isCronEntryValid(String cronEntry) { try { String quartzCronEntry = convertToQuartzCronEntry(cronEntry); TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule(quartzCronEntry)).build(); } catch(Exception e) { return false; } return true; } private  Cron(); static boolean isCronEntryValid(String cronEntry); static String convertToQuartzCronEntry(String cronEntry);  }
@Test public void testValidCronEntry() { assertFalse(Cron.isCronEntryValid("0 0 * * 0")); assertFalse(Cron.isCronEntryValid("0 0 0 * 0")); assertFalse(Cron.isCronEntryValid("0 0 1 * 0")); assertFalse(Cron.isCronEntryValid("0 0 1 * 1")); assertTrue(Cron.isCronEntryValid(" * 5-17 * * * ")); assertTrue(Cron.isCronEntryValid("* 5-17 * * 1-5")); assertTrue(Cron.isCronEntryValid("* 5-17 ? * 1-5")); assertTrue(Cron.isCronEntryValid("* 5-17 ? * ?")); assertTrue(Cron.isCronEntryValid("* 5-17 * * ?")); assertTrue(Cron.isCronEntryValid("* 5-17 ? * *")); assertTrue(Cron.isCronEntryValid("0 0 * *")); assertTrue(Cron.isCronEntryValid("0 0 1 1 *")); assertTrue(Cron.isCronEntryValid("0 0 1 * *")); assertTrue(Cron.isCronEntryValid("0 0 * * 1")); assertTrue(Cron.isCronEntryValid("0 0 * * *")); assertTrue(Cron.isCronEntryValid("0 * * * *")); for (int i = 1; i < 24; i++) { String cron=String.format("0 */%d * * *", i); assertTrue(Cron.isCronEntryValid(cron)); } for (int i = 1; i < 60; i++) { String cron=String.format("*/%d 0 * * *", i); assertTrue(Cron.isCronEntryValid(cron)); } }