// Copyright (c) 2001 Dustin Sallings <dustin@spy.net>
package net.spy.cron;
import java.util.Date;
import net.spy.concurrent.ThreadPoolRunnable;
import net.spy.util.SpyUtil;
/**
* A job that invokes a class's main() method at run time.
*/
public class MainJob extends Job implements ThreadPoolRunnable {
// The classname and the args to run and the classloader in which to find
// the class.
private final ClassLoader classLoader;
private final String classname;
private final String[] args;
/**
* Get a new ``at style'' MainJob.
*/
public MainJob(ClassLoader cl, String cName, String a[], Date startDate) {
super("main:" + cName, startDate);
classname=cName;
args=a;
classLoader=cl;
}
/**
* Get a new ``cron style'' MainJob.
*/
public MainJob(ClassLoader cl, String cName, String a[],
Date startDate, TimeIncrement ti) {
super("main:" + cName, startDate, ti);
classname=cName;
args=a;
classLoader=cl;
}
/**
* What to do when it's time to run.
*/
@Override
public void runJob() {
try {
SpyUtil.runClass(classLoader, classname, args);
} catch(Exception e) {
getLogger().error("Problem invoking main class %s", classname, e);
}
}
}