001    package railo.cli;
002    
003    import java.io.File;
004    import java.rmi.RemoteException;
005    import java.util.HashMap;
006    import java.util.Map;
007    
008    import javax.servlet.ServletException;
009    
010    import railo.cli.servlet.ServletConfigImpl;
011    import railo.cli.servlet.ServletContextImpl;
012    import railo.loader.engine.CFMLEngine;
013    import railo.loader.engine.CFMLEngineFactory;
014    
015    public class CLIInvokerImpl implements CLIInvoker {
016    
017            private ServletConfigImpl servletConfig;
018            private CFMLEngine engine;
019            private long lastAccess;
020    
021            public CLIInvokerImpl(File root, String servletName) throws ServletException{
022                    Map<String,Object> attributes=new HashMap<String, Object>();
023                    Map<String, String> initParameters=new HashMap<String, String>();
024                    initParameters.put("railo-server-directory", new File(root,"server").getAbsolutePath());
025                    
026                    ServletContextImpl servletContext = new ServletContextImpl(root, attributes, initParameters, 1, 0);
027                    servletConfig = new ServletConfigImpl(servletContext, servletName);
028                    engine = CFMLEngineFactory.getInstance(servletConfig);
029                    
030                     
031            }
032            
033            @Override
034            public void invoke(Map<String, String> config) throws RemoteException {
035                    try {
036                            engine.cli(config,servletConfig);
037                            lastAccess=System.currentTimeMillis();
038                    } catch (Throwable t) {
039                            throw new RemoteException("fail to call CFML Engine", t);
040                    }
041            }
042    
043            public long lastAccess() {
044                    return lastAccess;
045            }
046    
047    }