X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.autoui.launcher%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fautoui%2Flauncher%2FMain.java;fp=org.argeo.slc.autoui.launcher%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fautoui%2Flauncher%2FMain.java;h=0000000000000000000000000000000000000000;hb=3bb77df2fe66b02ca1b3f82c2d63b5368e0b29e0;hp=1d719cf299d5de9e8a92d4a76f68ded1e7b6d932;hpb=6437f24e421a02ab9da1c3b11d711f022c3b4c87;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.autoui.launcher/src/main/java/org/argeo/slc/autoui/launcher/Main.java b/org.argeo.slc.autoui.launcher/src/main/java/org/argeo/slc/autoui/launcher/Main.java deleted file mode 100644 index 1d719cf29..000000000 --- a/org.argeo.slc.autoui.launcher/src/main/java/org/argeo/slc/autoui/launcher/Main.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.argeo.slc.autoui.launcher; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Properties; -import java.util.Vector; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.felix.framework.Felix; -import org.apache.felix.framework.cache.BundleCache; -import org.apache.felix.main.AutoActivator; -import org.argeo.slc.autoui.AutoUiActivator; -import org.argeo.slc.autoui.DetachedExecutionServer; -import org.argeo.slc.autoui.DetachedStep; -import org.argeo.slc.autoui.DetachedStepRequest; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; - -public class Main { - private final static Log log = LogFactory.getLog(Main.class); - - public static void main(String[] args) { - try { - // Load properties - Properties config = prepareConfig(); - - // Start UI (in main class loader) - startUi(config); - //Thread.sleep(10000); - - // Start OSGi system - Felix felix = startSystem(config); - - // Automate - //automateUi(felix.getBundleContext()); - - // felix.stop(); - } catch (Exception e) { - e.printStackTrace(); - System.exit(-1); - } - } - - protected static Properties prepareConfig() throws Exception { - final File cachedir = createTemporaryCacheDir(); - - // Load config - Properties config = new Properties(); - InputStream in = null; - ; - try { - in = Main.class - .getResourceAsStream("/org/argeo/slc/autoui/launcher/felix.properties"); - config.load(in); - } finally { - if (in != null) - in.close(); - } - - // Perform variable substitution for system properties. - for (Enumeration e = config.propertyNames(); e.hasMoreElements();) { - String name = (String) e.nextElement(); - config.setProperty(name, org.apache.felix.main.Main.substVars( - config.getProperty(name), name, null, config)); - } - - config.put(BundleCache.CACHE_PROFILE_DIR_PROP, cachedir - .getAbsolutePath()); - - return config; - } - - protected static File createTemporaryCacheDir() throws IOException { - // Create a temporary bundle cache directory and - // make sure to clean it up on exit. - final File cachedir = File.createTempFile("argeo.slc.autoui", null); - cachedir.delete(); - Runtime.getRuntime().addShutdownHook(new Thread() { - public void run() { - deleteFileOrDir(cachedir); - } - }); - return cachedir; - } - - public static Felix startSystem(Properties config) throws Exception { - // Create list to hold custom framework activators. - List list = new ArrayList(); - // Add activator to process auto-start/install properties. - list.add(new AutoActivator(config)); - // Add our own activator. - //list.add(new AutoUiActivator()); - - // Now create an instance of the framework. - Felix felix = new Felix(config, list); - felix.start(); - - return felix; - } - - public static void startUi(Properties config) throws Exception { - String className = config.getProperty("argeo.scl.autoui.uiclass"); - String[] uiArgs = readArgumentsFromLine(config.getProperty( - "argeo.slc.autoui.uiargs", "")); - - // Launch main method using reflection - Class clss = Class.forName(className); - Class[] mainArgsClasses = new Class[] { uiArgs.getClass() }; - Object[] mainArgs = { uiArgs }; - Method mainMethod = clss.getMethod("main", mainArgsClasses); - mainMethod.invoke(null, mainArgs); - } - - protected static void automateUi(BundleContext bundleContext) - throws Exception { - // Retrieve service and execute it - ServiceReference ref = bundleContext - .getServiceReference(DetachedExecutionServer.class.getName()); - Object service = bundleContext.getService(ref); - - log.debug("service.class=" + service.getClass()); - DetachedExecutionServer app = (DetachedExecutionServer) service; - DetachedStepRequest request = new DetachedStepRequest(); - request.setStepRef("jemmyTest"); - app.executeStep(request); - } - - /* UTILITIES */ - - /** - * Transform a line into an array of arguments, taking "" as single - * arguments. (nested \" are not supported) - */ - private static String[] readArgumentsFromLine(String lineOrig) { - - String line = lineOrig.trim();// remove trailing spaces - // System.out.println("line=" + line); - List args = new Vector(); - StringBuffer curr = new StringBuffer(""); - boolean inQuote = false; - char[] arr = line.toCharArray(); - for (int i = 0; i < arr.length; i++) { - char c = arr[i]; - switch (c) { - case '\"': - inQuote = !inQuote; - break; - case ' ': - if (!inQuote) {// otherwise, no break: goes to default - if (curr.length() > 0) { - args.add(curr.toString()); - curr = new StringBuffer(""); - } - break; - } - default: - curr.append(c); - break; - } - } - - // Add last arg - if (curr.length() > 0) { - args.add(curr.toString()); - curr = null; - } - - String[] res = new String[args.size()]; - for (int i = 0; i < args.size(); i++) { - res[i] = args.get(i).toString(); - // System.out.println("res[i]=" + res[i]); - } - return res; - } - - private static void deleteFileOrDir(File file) { - if (file.isDirectory()) { - File[] childs = file.listFiles(); - for (int i = 0; i < childs.length; i++) { - deleteFileOrDir(childs[i]); - } - } - file.delete(); - } - -}