All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dynamicextensionsalfresco.quartz.QuartzJobRegistrar.kt Maven / Gradle / Ivy

Go to download

Adds an OSGi container to alfresco repository supporting dynamic code reloading, classpath isolation and a bunch of other useful features

There is a newer version: 3.1.0
Show newest version
//package com.github.dynamicextensionsalfresco.quartz
//
//import com.github.dynamicextensionsalfresco.debug
//import com.github.dynamicextensionsalfresco.jobs.ScheduledQuartzJob
//import org.quartz.*
//import org.slf4j.LoggerFactory
//import org.springframework.beans.factory.DisposableBean
//import org.springframework.beans.factory.InitializingBean
//import org.springframework.beans.factory.annotation.Autowired
//import org.springframework.context.ApplicationContext
//import org.springframework.context.ApplicationContextAware
//import org.springframework.util.Assert
//import java.util.*
//
///**
// * Look for beans annotated with @ScheduledJob and register/unregister them with Quartz
// *
// * @author Laurent Van der Linden
// */
//public class QuartzJobRegistrar @Autowired constructor(var scheduler: Scheduler) : ApplicationContextAware, InitializingBean, DisposableBean {
//    private val logger = LoggerFactory.getLogger(QuartzJobRegistrar::class.java)
//
//    private val registeredJobs = ArrayList()
//
//    private var applicationContext: ApplicationContext? = null
//
//    @Throws(Exception::class)
//    override fun afterPropertiesSet() {
//        val scheduledBeans = applicationContext!!.getBeansWithAnnotation(ScheduledQuartzJob::class.java)
//        for (entry in scheduledBeans.entries) {
//            val bean = entry.value
//
//            Assert.isInstanceOf(Job::class.java, bean, "annotated Quartz job classes should implement org.quartz.Job")
//
//            val annotation = bean.javaClass.getAnnotation(ScheduledQuartzJob::class.java)
//
//            try {
//                val cron = applicationContext!!.getBean("global-properties", Properties::class.java).getProperty(annotation.cronProp, annotation.cron);
//                val trigger = CronTrigger(annotation.name, annotation.group, cron)
//                val jobDetail = JobDetail(annotation.name, annotation.group, GenericQuartzJob::class.java)
//                jobDetail.jobDataMap.put(GenericQuartzJob.BEAN_ID, bean)
//                scheduler.scheduleJob(jobDetail, trigger)
//
//                registeredJobs.add(annotation)
//
//                logger.debug { "scheduled job ${annotation.name} from group ${annotation.group} using cron ${annotation.cron}" }
//            } catch (e: Exception) {
//                logger.error("failed to register job ${annotation.name} using cron ${annotation.cron}", e)
//            }
//
//        }
//    }
//
//    @Throws(Exception::class)
//    override fun destroy() {
//        for (job in registeredJobs) {
//            try {
//                scheduler.unscheduleJob(job.name, job.group)
//                logger.debug { "unscheduled job ${job.name} from group ${job.group}" }
//            } catch (e: SchedulerException) {
//                logger.error("failed to cleanup quartz job " + job, e)
//            }
//        }
//    }
//
//    override fun setApplicationContext(applicationContext: ApplicationContext?) {
//        this.applicationContext = applicationContext
//    }
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy