public static ParseException validateCronExpression(String cron) { try { cronScheduleNonvalidatedExpression(cron); // may throw ParseException return null; } catch (ParseException pe) { return pe; } }
@Override public boolean isValid(final String expr, final ConstraintValidatorContext ctx) { try { if (expr != null) { CronScheduleBuilder .cronScheduleNonvalidatedExpression(expr); return true; } } catch (ParseException e) { logger.info("Expression '{}' isn't valid: {}", expr, e.getMessage()); } return false; }
@Override @Transactional(rollbackFor = { SchedulerException.class, ParseException.class }) public void startSniffing(final long snifferId) throws SchedulerException { logger.debug("Starting cron job for sniffer: {}", snifferId); final Sniffer sniffer = snifferPersistence.getSniffer(snifferId); if (sniffer == null) { throw new SchedulerException("Sniffer not found: " + snifferId); } stopAndDeleteAllSnifferJobs(sniffer.getId()); MutableTrigger trigger; try { trigger = CronScheduleBuilder.cronScheduleNonvalidatedExpression(sniffer.getScheduleCronExpression()) .withMisfireHandlingInstructionDoNothing().build(); } catch (final ParseException e) { throw new SchedulerException("Failed to parse cron expression", e); } trigger.setKey(getKey(sniffer, sniffer.getLogSourceId())); final JobDetail jobDetail = JobBuilder.newJob(SnifferJob.class).requestRecovery() .withIdentity(getJobKey(sniffer, sniffer.getLogSourceId())).build(); scheduler.scheduleJob(jobDetail, trigger); final ScheduleInfo scheduleInfo = scheduleInfoAccess.getScheduleInfo(snifferId); scheduleInfo.setScheduled(true); scheduleInfoAccess.updateScheduleInfo(snifferId, scheduleInfo); logger.info("Scheduled cron job for sniffer {} and log source {} with trigger {}", sniffer, sniffer.getLogSourceId(), trigger); }
CronScheduleBuilder csb = cronScheduleNonvalidatedExpression(sch.getCronLikePattern()); // may throw ParseException if (sch.getMisfireAction() == null || sch.getMisfireAction() == MisfireActionType.EXECUTE_IMMEDIATELY) { sb = csb.withMisfireHandlingInstructionFireAndProceed();