package org.zstack.core.scheduler;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.zstack.utils.Utils;
import org.zstack.utils.gson.JSONObjectUtil;
import org.zstack.utils.logging.CLogger;
/**
* Created by Mei Lei on 7/14/16.
*/
public class SchedulerRunner implements Job {
private static final CLogger logger = Utils.getLogger(SchedulerRunner.class);
private String jobData;
private String jobClassName;
private SchedulerJob runnerJob;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
jobData = dataMap.getString("jobData");
jobClassName = dataMap.getString("jobClassName");
try {
runnerJob = (SchedulerJob) JSONObjectUtil.toObject(jobData, Class.forName(jobClassName));
runnerJob.run();
} catch (ClassNotFoundException e) {
logger.warn(String.format("Class %s Not found error", jobClassName));
throw new RuntimeException(e);
}
}
public String getJobClassName() {
return jobClassName;
}
public void setJobClassName(String jobClassName) {
this.jobClassName = jobClassName;
}
public String getJobData() {
return jobData;
}
public void setJobData(String jobData) {
this.jobData = jobData;
}
}