X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2FAppLauncher.java;fp=org.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2FAppLauncher.java;h=7eb4f48e77cba045e6fc5dae2f55a797c8bfb8ec;hb=1b805ee993ec9c531e0452f1003751f92e6bd824;hp=0000000000000000000000000000000000000000;hpb=ed60c46ef6dcdd516e7f043f076c9b3bf34bd418;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/AppLauncher.java b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/AppLauncher.java new file mode 100644 index 000000000..7eb4f48e7 --- /dev/null +++ b/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/AppLauncher.java @@ -0,0 +1,52 @@ +package org.argeo.slc.detached; + +import java.lang.reflect.Method; +import java.util.List; +import java.util.Properties; +import java.util.Vector; + +public class AppLauncher { + private Properties systemProperties = new Properties(); + private String mainClass = null; + private List arguments = new Vector(); + + public void launch() { + try { + if (mainClass == null) + throw new DetachedException( + "A main class name muste be specified."); + + System.getProperties().putAll(systemProperties); + //Class clss = getClass().getClassLoader().loadClass(mainClass); + Class clss = Class.forName(mainClass); + + String[] args = new String[arguments.size()]; + for (int i = 0; i < arguments.size(); i++) { + args[i] = arguments.get(i).toString(); + } + + Class[] mainArgsClasses = new Class[] { args.getClass() }; + Object[] mainArgs = { args }; + Method mainMethod = clss.getMethod("main", mainArgsClasses); + mainMethod.invoke(null, mainArgs); + + } catch (Exception e) { + throw new DetachedException("Unexpected exception while launching " + + mainClass, e); + } + + } + + public void setSystemProperties(Properties systemProperties) { + this.systemProperties = systemProperties; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public void setArguments(List arguments) { + this.arguments = arguments; + } + +}