/** * <p> * Create a <code>ObjectAlreadyExistsException</code> and auto-generate a message using the name/group from the given <code>JobDetail</code>. * </p> * <p> * The message will read: <BR> * "Unable to store Job with name: '__' and group: '__', because one already exists with this identification." * </p> */ public ObjectAlreadyExistsException(JobDetail offendingJob) { super("Unable to store Job : '" + offendingJob.getName() + "', because one already exists with this identification."); }
/** * Retrieve the <code>{@link org.quartz.jobs.JobDetail}</code> for the given <code> * {@link org.quartz.jobs.Job}</code>. * * @return The desired <code>Job</code>, or null if there is no match. */ @Override public JobDetail retrieveJob(String jobKey) { synchronized (lock) { JobWrapper jw = jobsByKey.get(jobKey); return (jw != null) ? (JobDetail) jw.jobDetail.clone() : null; } }
@Override public Job newJob(TriggerFiredBundle bundle, Scheduler Scheduler) throws SchedulerException { JobDetail jobDetail = bundle.getJobDetail(); Class<? extends Job> jobClass = jobDetail.getJobClass(); try { if (log.isDebugEnabled()) { log.debug("Producing instance of Job '" + jobDetail.getName() + "', class=" + jobClass.getName()); } return jobClass.newInstance(); } catch (Exception e) { SchedulerException se = new SchedulerException("Problem instantiating class '" + jobDetail.getJobClass().getName() + "'", e); throw se; } }
if (!job.isConcurrencyAllowed()) { ArrayList<TriggerWrapper> trigs = getTriggerWrappersForJob(job.getName()); Iterator<TriggerWrapper> itr = trigs.iterator(); while (itr.hasNext()) { blockedJobs.add(job.getName()); } else if (tw.trigger.getNextFireTime() != null) { synchronized (lock) {
String key = getTrimmedToNullString(xpath, "key", entryNode); String value = getTrimmedToNullString(xpath, "value", entryNode); jobDetail.getJobDataMap().put(key, value);
if (!job.isConcurrencyAllowed()) { ArrayList<TriggerWrapper> trigs = getTriggerWrappersForJob(job.getName()); Iterator<TriggerWrapper> itr = trigs.iterator(); while (itr.hasNext()) { blockedJobs.add(job.getName()); } else if (tw.trigger.getNextFireTime() != null) { synchronized (lock) {
String key = getTrimmedToNullString(xpath, "key", entryNode); String value = getTrimmedToNullString(xpath, "value", entryNode); jobDetail.getJobDataMap().put(key, value);
/** * <p> * Create a <code>ObjectAlreadyExistsException</code> and auto-generate a message using the name/group from the given <code>JobDetail</code>. * </p> * <p> * The message will read: <BR> * "Unable to store Job with name: '__' and group: '__', because one already exists with this identification." * </p> */ public ObjectAlreadyExistsException(JobDetail offendingJob) { super("Unable to store Job : '" + offendingJob.getName() + "', because one already exists with this identification."); }
@Override public Job newJob(TriggerFiredBundle bundle, Scheduler Scheduler) throws SchedulerException { JobDetail jobDetail = bundle.getJobDetail(); Class<? extends Job> jobClass = jobDetail.getJobClass(); try { if (log.isDebugEnabled()) { log.debug("Producing instance of Job '" + jobDetail.getName() + "', class=" + jobClass.getName()); } return jobClass.newInstance(); } catch (Exception e) { SchedulerException se = new SchedulerException("Problem instantiating class '" + jobDetail.getJobClass().getName() + "'", e); throw se; } }
if (!job.isConcurrencyAllowed()) { ArrayList<TriggerWrapper> trigs = getTriggerWrappersForJob(job.getName()); Iterator<TriggerWrapper> itr = trigs.iterator(); while (itr.hasNext()) { blockedJobs.add(job.getName()); } else if (tw.trigger.getNextFireTime() != null) { synchronized (lock) {
/** * <p> * Retrieve the <code>{@link org.quartz.jobs.JobDetail}</code> for the given <code>{@link org.quartz.jobs.Job}</code>. * </p> * * @return The desired <code>Job</code>, or null if there is no match. */ @Override public JobDetail retrieveJob(String jobKey) { synchronized (lock) { JobWrapper jw = jobsByKey.get(jobKey); return (jw != null) ? (JobDetail) jw.jobDetail.clone() : null; } }
String key = getTrimmedToNullString(xpath, "key", entryNode); String value = getTrimmedToNullString(xpath, "value", entryNode); jobDetail.getJobDataMap().put(key, value);
JobWrapper(JobDetail jobDetail) { this.jobDetail = jobDetail; key = jobDetail.getName(); }
@Override public Job newJob(TriggerFiredBundle bundle, Scheduler Scheduler) throws SchedulerException { JobDetail jobDetail = bundle.getJobDetail(); Class<? extends Job> jobClass = jobDetail.getJobClass(); try { if (log.isDebugEnabled()) { log.debug( "Producing instance of Job '" + jobDetail.getName() + "', class=" + jobClass.getName()); } return jobClass.newInstance(); } catch (Exception e) { SchedulerException se = new SchedulerException( "Problem instantiating class '" + jobDetail.getJobClass().getName() + "'", e); throw se; } } }
JobWrapper jw = jobsByKey.get(jobDetail.getName()); TriggerWrapper tw = wrappedTriggersByKey.get(trigger.getName()); JobDetail jd = jw.jobDetail; if (!jd.isConcurrencyAllowed()) { blockedJobs.remove(jd.getName()); ArrayList<TriggerWrapper> trigs = getTriggerWrappersForJob(jd.getName()); for (TriggerWrapper ttw : trigs) { if (ttw.state == TriggerWrapper.STATE_BLOCKED) { blockedJobs.remove(jobDetail.getName());
/** * <p> * Retrieve the <code>{@link org.quartz.jobs.JobDetail}</code> for the given <code>{@link org.quartz.jobs.Job}</code>. * </p> * * @return The desired <code>Job</code>, or null if there is no match. */ @Override public JobDetail retrieveJob(String jobKey) { synchronized (lock) { JobWrapper jw = jobsByKey.get(jobKey); return (jw != null) ? (JobDetail) jw.jobDetail.clone() : null; } }
/** Create a JobExcecutionContext with the given context data. */ public JobExecutionContextImpl(Scheduler scheduler, TriggerFiredBundle firedBundle, Job job) { this.scheduler = scheduler; this.trigger = firedBundle.getTrigger(); this.calendar = firedBundle.getCalendar(); this.jobDetail = firedBundle.getJobDetail(); this.job = job; this.recovering = firedBundle.isRecovering(); this.fireTime = firedBundle.getFireTime(); this.scheduledFireTime = firedBundle.getScheduledFireTime(); this.prevFireTime = firedBundle.getPrevFireTime(); this.nextFireTime = firedBundle.getNextFireTime(); this.jobDataMap = new JobDataMap(); this.jobDataMap.putAll(jobDetail.getJobDataMap()); this.jobDataMap.putAll(trigger.getJobDataMap()); }
JobWrapper(JobDetail jobDetail) { this.jobDetail = jobDetail; key = jobDetail.getName(); }
void initialize(QuartzScheduler qs) throws SchedulerException { this.qs = qs; Job job = null; JobDetail jobDetail = firedTriggerBundle.getJobDetail(); try { job = qs.getJobFactory().newJob(firedTriggerBundle, scheduler); } catch (SchedulerException se) { qs.notifySchedulerListenersError("An error occured instantiating job to be executed. job= '" + jobDetail.getName() + "'", se); throw se; } catch (Throwable ncdfe) { // such as NoClassDefFoundError SchedulerException se = new SchedulerException("Problem instantiating class '" + jobDetail.getJobClass().getName() + "' - ", ncdfe); qs.notifySchedulerListenersError("An error occured instantiating job to be executed. job= '" + jobDetail.getName() + "'", se); throw se; } this.jec = new JobExecutionContextImpl(scheduler, firedTriggerBundle, job); }
JobWrapper jw = jobsByKey.get(jobDetail.getName()); TriggerWrapper tw = wrappedTriggersByKey.get(trigger.getName()); JobDetail jd = jw.jobDetail; if (!jd.isConcurrencyAllowed()) { blockedJobs.remove(jd.getName()); ArrayList<TriggerWrapper> trigs = getTriggerWrappersForJob(jd.getName()); for (TriggerWrapper ttw : trigs) { if (ttw.state == TriggerWrapper.STATE_BLOCKED) { blockedJobs.remove(jobDetail.getName());