package railo.cli;
import java.io.File;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import railo.cli.servlet.ServletConfigImpl;
import railo.cli.servlet.ServletContextImpl;
import railo.loader.engine.CFMLEngine;
import railo.loader.engine.CFMLEngineFactory;
public class CLIInvokerImpl implements CLIInvoker {
private ServletConfigImpl servletConfig;
private CFMLEngine engine;
private long lastAccess;
public CLIInvokerImpl(File root, String servletName) throws ServletException{
Map<String,Object> attributes=new HashMap<String, Object>();
Map<String, String> initParameters=new HashMap<String, String>();
initParameters.put("railo-server-directory", new File(root,"server").getAbsolutePath());
ServletContextImpl servletContext = new ServletContextImpl(root, attributes, initParameters, 1, 0);
servletConfig = new ServletConfigImpl(servletContext, servletName);
engine = CFMLEngineFactory.getInstance(servletConfig);
}
@Override
public void invoke(Map<String, String> config) throws RemoteException {
try {
engine.cli(config,servletConfig);
lastAccess=System.currentTimeMillis();
} catch (Throwable t) {
throw new RemoteException("fail to call CFML Engine", t);
}
}
public long lastAccess() {
return lastAccess;
}
}