// Throw the job at quartz
String groupName = "site " + this.getIdentifier();
String jobIdentifier = job.getIdentifier();
Class<? extends JobWorker> jobClass = job.getWorker();
JobTrigger trigger = job.getTrigger();
synchronized (jobs) {
// Set up the job detail
JobDataMap jobData = new JobDataMap();
jobData.put(QuartzJobWorker.CLASS, jobClass);
jobData.put(QuartzJobWorker.CLASS_LOADER, new BundleClassLoader(bundleContext.getBundle()));
jobData.put(QuartzJobWorker.CONTEXT, job.getContext());
job.getContext().put(Site.class.getName(), this);
job.getContext().put(BundleContext.class.getName(), bundleContext);
JobDetail jobDetail = new JobDetail(jobIdentifier, groupName, QuartzJobWorker.class);
jobDetail.setJobDataMap(jobData);
// Define the trigger
Trigger quartzTrigger = new QuartzJobTrigger(jobIdentifier, groupName, trigger);
quartzTrigger.addTriggerListener(quartzTriggerListener.getName());
// Schedule
try {
Date date = scheduler.scheduleJob(jobDetail, quartzTrigger);
jobs.put(jobIdentifier, new QuartzJob(jobIdentifier, jobClass, trigger));
String repeat = trigger.getNextExecutionAfter(date) != null ? " first" : "";
logger.info("Job '{}' scheduled,{} execution scheduled for {}", new Object[] {
jobIdentifier,
repeat,
date });
} catch (SchedulerException e) {