package com.enioka.jqm.tools;
import java.util.Map;
import com.enioka.jqm.api.JobRunner;
/**
* A runner for classes which implement Runnable with a no-args constructor.
*/
public class RunnableRunner implements JobRunner
{
public RunnableRunner()
{}
@Override
public boolean canRun(Class<? extends Object> toRun)
{
return Runnable.class.isAssignableFrom(toRun);
}
@Override
public void run(Class<? extends Object> toRun, Map<String, String> metaParameters, Map<String, String> jobParameters,
Object handlerProxy)
{
@SuppressWarnings("unchecked")
Class<Runnable> c = (Class<Runnable>) toRun;
Runnable o = null;
try
{
o = c.newInstance();
}
catch (Exception e)
{
throw new JobRunnerException("Could not instanciate runnable payload. Does it have a nullary constructor?", e);
}
// Injection stuff (if needed)
Common.inject(o.getClass(), o, handlerProxy, false);
// Go
o.run();
}
}