package main;
import java.io.File;
import java.io.FileFilter;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import railo.print;
public class CLI {
public static void main(String[] args) throws Throwable {
args=new String[]{
"-jar", "lib/ext/railo-cli.jar", "-webroot=./web", "uri=index.cfm?param1=5¶m2=susi"
};
File libDir=new File("./").getCanonicalFile();
System.out.println(libDir);
long start=System.currentTimeMillis();
// Fix for tomcat
if(libDir.getName().equals(".") || libDir.getName().equals(".."))
libDir=libDir.getParentFile();
//if(libDir.toString().equals("/Users/mic/Projects/Railo/Source2/railo/railo-java/railo-loader"))
// libDir=new File("/Users/mic/temp/ext");
//if(libDir.toString().equals("/Users/mic/Projects/Railo/Source2/Railo-CLI"))
// libDir=new File("/Users/mic/temp/ext");
boolean isDebugMode=isDebugMode(args);
if(isDebugMode)System.out.println("Loading Jars from "+libDir);
List<URL> urls=new ArrayList<URL>();
loadJars(libDir,urls,isDebugMode);
if(isDebugMode)System.out.println();
URLClassLoader cl = new URLClassLoader(urls.toArray(new URL[urls.size()]),ClassLoader.getSystemClassLoader());
Class cli = cl.loadClass("railo.cli.CLI");
Method main = cli.getMethod("main",new Class[]{String[].class});
main.invoke(null, new Object[]{args});
}
private static boolean isDebugMode(String[] args) {
String arg;
for(int i=0;i<args.length;i++){
arg=args[i];
if(arg!=null && (arg.equalsIgnoreCase("debug") || arg.equalsIgnoreCase("-debug")))
return true;
}
return false;
}
private static void loadJars(File libDir, List<URL> urls, boolean isDebugMode) throws MalformedURLException {
File[] children = libDir.listFiles(new ExtFilter());
URL url;
for(int i=0;i<children.length;i++){
if(children[i].isDirectory()) loadJars(children[i], urls,isDebugMode);
else {
urls.add(url=children[i].toURI().toURL());
if(isDebugMode)System.out.println("- "+url);
}
}
}
public static class ExtFilter implements FileFilter {
private String ext=".jar";
public boolean accept(File file) {
return file.isDirectory() || file.getName().toLowerCase().endsWith(ext);
}
}
}