void refreshJobs()

in src/main/groovy/quartz/QuartzGrailsPlugin.groovy [285:327]


	void refreshJobs(ignoreErrors=false) {
		def pluginEnabled = grailsApplication.config.getProperty('quartz.pluginEnabled')?.toBoolean()
		if (pluginEnabled == null) {
			pluginEnabled = true
		}
		if(pluginEnabled) {
			def quartzScheduler = applicationContext.quartzScheduler

			Set<JobKey> jobKeys = applicationContext.quartzScheduler.getJobKeys(GroupMatcher.anyGroup())

			//Remove any recently removed / disabled Jobs
			jobKeys.each { JobKey key ->
				def match = grailsApplication.jobClasses.find{ GrailsJobClass jobClass -> jobClass.isEnabled() && jobClass.group == key.group && jobClass.clazz.name == key.name }
				if(!match) {
					log.info("Removing No longer Active Job: ${key.name}")
					def triggersForJob = quartzScheduler.getTriggersOfJob(key)?.collect{it.key}
					if(triggersForJob) {
						//clean up triggers before we remove the job
						quartzScheduler.unscheduleJobs(triggersForJob)
					}
					quartzScheduler.deleteJob(key)
				}
			}

			//Add new jobs
			grailsApplication.jobClasses.findAll{GrailsJobClass jobClass -> jobClass.isEnabled()}.each { GrailsJobClass jobClass ->
				try {
					scheduleJob(jobClass, applicationContext, hasHibernate(manager))
					def clz = jobClass.clazz
					clz.scheduler = applicationContext.quartzScheduler
					clz.grailsJobClass = jobClass
				} catch(ex) {
					if(ignoreErrors) {
						log.error("Error Scheduling Job Class ${jobClass} - ${ex.message}",ex)
					} else {
						throw ex
					}
				}

			}
		}

	}