Package br.com.caelum.vraptor.tasks.jobs

Source Code of br.com.caelum.vraptor.tasks.jobs.DefaultJobFactory

package br.com.caelum.vraptor.tasks.jobs;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.spi.JobFactory;
import org.quartz.spi.TriggerFiredBundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import br.com.caelum.vraptor.tasks.Task;
import br.com.caelum.vraptor.tasks.scheduler.Scheduled;

@ApplicationScoped
public class DefaultJobFactory implements JobFactory {

  private JobProviders providers;
  private TaskFactory factory;
  private final Logger logger = LoggerFactory.getLogger(getClass());

  @Deprecated // CDI eyes only
  public DefaultJobFactory() {}
 
  @Inject
  public DefaultJobFactory(JobProviders providers, TaskFactory factory) {
    this.providers = providers;
    this.factory = factory;
  }

  public Job newJob(TriggerFiredBundle bundle, Scheduler scheduler) throws SchedulerException {

    JobDetail detail = bundle.getJobDetail();
    JobProvider provider = providers.getProvider(detail.getJobClass());
    Task task = factory.newTask(taskClass(detail), detail);
    logger.debug("Using {} to provide {}", provider.getClass().getName(), task.getClass().getName());
    return provider.newJob(task, task.getClass().getAnnotation(Scheduled.class));

  }

  @SuppressWarnings("unchecked")
  private Class<? extends Task> taskClass(JobDetail detail) {
    return (Class<? extends Task>) detail.getJobDataMap().get("task-class");
  }

}
TOP

Related Classes of br.com.caelum.vraptor.tasks.jobs.DefaultJobFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.