@Override public void onJobScheduled(JobSpecSchedule jobSchedule) { if (this.filter.apply(jobSchedule.getJobSpec())) { this.delegate.onJobScheduled(jobSchedule); } }
@Override public void onJobUnscheduled(JobSpecSchedule jobSchedule) { if (this.filter.apply(jobSchedule.getJobSpec())) { this.delegate.onJobUnscheduled(jobSchedule); } }
/** {@inheritDoc} */ @Override protected void doUnschedule(JobSpecSchedule existingSchedule) { Preconditions.checkNotNull(existingSchedule); Preconditions.checkArgument(existingSchedule instanceof QuartzJobSchedule); QuartzJobSchedule quartzSchedule = (QuartzJobSchedule)existingSchedule; try { _scheduler.getScheduler().deleteJob(quartzSchedule.getQuartzTrigger().getJobKey()); } catch (SchedulerException e) { throw new RuntimeException("Unscheduling failed for " + existingSchedule.getJobSpec() + ":" + e, e); } }
/** {@inheritDoc} */ @Override public JobSpecSchedule scheduleJob(JobSpec jobSpec, Runnable jobRunnable) { _log.info("Scheduling JobSpec " + jobSpec); final URI jobSpecURI = jobSpec.getUri(); JobSpecSchedule newSchedule = null; Runnable runnableWithTriggerCallback = new TriggerRunnable(jobSpec, jobRunnable); synchronized (this) { JobSpecSchedule existingSchedule = _schedules.get(jobSpecURI); if (null != existingSchedule) { if (existingSchedule.getJobSpec().equals(jobSpec)) { _log.warn("Ignoring already scheduled job: " + jobSpec); return existingSchedule; } // a new job spec -- unschedule first so that we schedule the new version unscheduleJob(jobSpecURI); } newSchedule = doScheduleJob(jobSpec, runnableWithTriggerCallback); _schedules.put(jobSpecURI, newSchedule); } _callbacksDispatcher.onJobScheduled(newSchedule); return newSchedule; }