private void synchronizeJob(JobDefinition jobDefinition) throws SynchronizationException {
try {
if (!schedulerCoreService.existsJob(jobDefinition.getName())) {
schedulerCoreService.createJob(jobDefinition.getName(), jobDefinition.getGroup(), jobDefinition.getClazz(),
jobDefinition.getHandler(), jobDefinition.getEngine(), jobDefinition.getDescription(), jobDefinition.getExpression(),
jobDefinition.isSingleton());
logger.info("Synchronized a new Job [{}] from group: {}", jobDefinition.getName(), jobDefinition.getGroup());
} else {
JobDefinition existing = schedulerCoreService.getJob(jobDefinition.getName());
if (!jobDefinition.equals(existing)) {
schedulerCoreService.updateJob(jobDefinition.getName(), jobDefinition.getGroup(), jobDefinition.getClazz(),
jobDefinition.getHandler(), jobDefinition.getEngine(), jobDefinition.getDescription(), jobDefinition.getExpression(),
jobDefinition.isSingleton());
logger.info("Synchronized a modified Job [{}] from group: {}", jobDefinition.getName(), jobDefinition.getGroup());
}
}
JOBS_SYNCHRONIZED.add(jobDefinition.getName());
} catch (SchedulerException e) {
throw new SynchronizationException(e);
}
}