From 3453d859644c014e36e1bdb658af73d9743e00fd Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 24 Sep 2008 14:18:49 +0000 Subject: [PATCH 1/1] Introduce SLC AutoUI Launcher git-svn-id: https://svn.argeo.org/slc/trunk@1616 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- org.argeo.slc.autoui/.classpath | 1 - org.argeo.slc.autoui/pom.xml | 15 +- .../java/org/argeo/slc/autoui/main/Main.java | 175 ------- .../org/argeo/slc/autoui/felix.properties | 476 ------------------ 4 files changed, 4 insertions(+), 663 deletions(-) delete mode 100644 org.argeo.slc.autoui/src/main/java/org/argeo/slc/autoui/main/Main.java delete mode 100644 org.argeo.slc.autoui/src/main/resources/org/argeo/slc/autoui/felix.properties diff --git a/org.argeo.slc.autoui/.classpath b/org.argeo.slc.autoui/.classpath index a66a61628..e39ef13f1 100644 --- a/org.argeo.slc.autoui/.classpath +++ b/org.argeo.slc.autoui/.classpath @@ -1,7 +1,6 @@ - diff --git a/org.argeo.slc.autoui/pom.xml b/org.argeo.slc.autoui/pom.xml index eb1491d06..6e8b8d48b 100644 --- a/org.argeo.slc.autoui/pom.xml +++ b/org.argeo.slc.autoui/pom.xml @@ -74,18 +74,11 @@ org.osgi.core 1.0.0 - - org.eclipse - osgi - 3.3.0-v20070530 - - - - --> - + --> - org.apache.felix - org.apache.felix.main + org.eclipse + osgi + 3.3.0-v20070530 \ No newline at end of file diff --git a/org.argeo.slc.autoui/src/main/java/org/argeo/slc/autoui/main/Main.java b/org.argeo.slc.autoui/src/main/java/org/argeo/slc/autoui/main/Main.java deleted file mode 100644 index 0d10170f9..000000000 --- a/org.argeo.slc.autoui/src/main/java/org/argeo/slc/autoui/main/Main.java +++ /dev/null @@ -1,175 +0,0 @@ -package org.argeo.slc.autoui.main; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Properties; -import java.util.Vector; - -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.AutoUiApplication; -import org.netbeans.jemmy.ClassReference; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; - -public class Main { - - public static void main(String[] args) { - try { - // Start OSGi system - Properties config = prepareConfig(); - Felix felix = startSystem(config); - - // Start UI (in main class loader) - startUi(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/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", "")); - ClassReference classReference = new ClassReference(className); - classReference.startApplication(uiArgs); - } - - protected static void automateUi(BundleContext context) throws Exception { - // Retrieve service and execute it - ServiceReference ref = context - .getServiceReference("org.argeo.slc.autoui.AutoUiApplication"); - Object service = context.getService(ref); - AutoUiActivator.stdOut("service.class=" + service.getClass()); - AutoUiApplication app = (AutoUiApplication) service; - app.execute(null); - } - - /* 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(); - } - -} diff --git a/org.argeo.slc.autoui/src/main/resources/org/argeo/slc/autoui/felix.properties b/org.argeo.slc.autoui/src/main/resources/org/argeo/slc/autoui/felix.properties deleted file mode 100644 index 4d2157af2..000000000 --- a/org.argeo.slc.autoui/src/main/resources/org/argeo/slc/autoui/felix.properties +++ /dev/null @@ -1,476 +0,0 @@ - -# Argeo Specific Context Properties -argeo.slc.mavenBase=file:/home/mbaudier/.m2/repository/ - -argeo.scl.autoui.uiclass=org.argeo.slc.testui.SwingTestUi -argeo.slc.autoui.uiargs=noExitOnClose - -# -# Framework config properties. -# -org.osgi.framework.system.packages=org.osgi.framework; version=1.4.0, \ - org.osgi.service.packageadmin; version=1.2.0, \ - org.osgi.service.startlevel; version=1.1.0, \ - org.osgi.service.url; version=1.0.0, \ - org.osgi.util.tracker; version=1.3.3, \ - org.argeo.slc.autoui; version=0.10.3.SNAPSHOT, \ - org.argeo.slc.testui \ - ${jre-${java.specification.version}} - -#org.osgi.framework.bootdelegation=sun.*,com.sun.* -#felix.cache.profile=foo -#felix.auto.start.1= \ -# file:bundle/org.apache.felix.shell-1.0.2.jar \ -# file:bundle/org.apache.felix.shell.tui-1.0.2.jar \ -# file:bundle/org.apache.felix.bundlerepository-1.2.0.jar - -felix.auto.start.1= \ - ${argeo.slc.mavenBase}org/apache/felix/org.apache.felix.shell/1.0.2/org.apache.felix.shell-1.0.2.jar \ - ${argeo.slc.mavenBase}org/apache/felix/org.apache.felix.shell.tui/1.0.2/org.apache.felix.shell.tui-1.0.2.jar \ - ${argeo.slc.mavenBase}org/argeo/dep/jemmy/org.argeo.dep.jemmy.nb61/0.2.1-SNAPSHOT/org.argeo.dep.jemmy.nb61-0.2.1-SNAPSHOT.jar \ - ${argeo.slc.mavenBase}org/argeo/slc/sandbox/org.argeo.slc.sandbox.jemmytest/0.1.1-SNAPSHOT/org.argeo.slc.sandbox.jemmytest-0.1.1-SNAPSHOT.jar" - - -felix.log.level=1 -felix.startlevel.framework=1 -felix.startlevel.bundle=1 -#felix.service.urlhandlers=false - -# -# Bundle config properties. -# -org.osgi.service.http.port=8080 -osgi.shell.telnet=on -obr.repository.url=http://felix.apache.org/obr/releases.xml - - -# -# Java platform package export properties. -# -jre-1.3=, \ - javax.accessibility; \ - javax.naming; \ - javax.naming.directory; \ - javax.naming.event; \ - javax.naming.ldap; \ - javax.naming.spi; \ - javax.rmi; \ - javax.rmi.CORBA; \ - javax.sound.midi; \ - javax.sound.midi.spi; \ - javax.sound.sampled; \ - javax.sound.sampled.spi; \ - javax.swing; \ - javax.swing.border; \ - javax.swing.colorchooser; \ - javax.swing.event; \ - javax.swing.filechooser; \ - javax.swing.plaf; \ - javax.swing.plaf.basic; \ - javax.swing.plaf.metal; \ - javax.swing.plaf.multi; \ - javax.swing.table; \ - javax.swing.text; \ - javax.swing.text.html; \ - javax.swing.text.html.parser; \ - javax.swing.text.rtf; \ - javax.swing.tree; \ - javax.swing.undo; \ - javax.transaction; \ - org.omg.CORBA; \ - org.omg.CORBA_2_3; \ - org.omg.CORBA_2_3.portable; \ - org.omg.CORBA.DynAnyPackage; \ - org.omg.CORBA.ORBPackage; \ - org.omg.CORBA.portable; \ - org.omg.CORBA.TypeCodePackage; \ - org.omg.CosNaming; \ - org.omg.CosNaming.NamingContextPackage; \ - org.omg.SendingContext; \ - org.omg.stub.java.rmi; \ - version="1.3.0" - -jre-1.4=, \ - javax.accessibility; \ - javax.crypto; \ - javax.crypto.interfaces; \ - javax.crypto.spec; \ - javax.imageio; \ - javax.imageio.event; \ - javax.imageio.metadata; \ - javax.imageio.plugins.jpeg; \ - javax.imageio.spi; \ - javax.imageio.stream; \ - javax.naming; \ - javax.naming.directory; \ - javax.naming.event; \ - javax.naming.ldap; \ - javax.naming.spi; \ - javax.net; \ - javax.net.ssl; \ - javax.print; \ - javax.print.attribute; \ - javax.print.attribute.standard; \ - javax.print.event; \ - javax.rmi; \ - javax.rmi.CORBA; \ - javax.security.auth; \ - javax.security.auth.callback; \ - javax.security.auth.kerberos; \ - javax.security.auth.login; \ - javax.security.auth.spi; \ - javax.security.auth.x500; \ - javax.sound.midi; \ - javax.sound.midi.spi; \ - javax.sound.sampled; \ - javax.sound.sampled.spi; \ - javax.sql; \ - javax.swing; \ - javax.swing.border; \ - javax.swing.colorchooser; \ - javax.swing.event; \ - javax.swing.filechooser; \ - javax.swing.plaf; \ - javax.swing.plaf.basic; \ - javax.swing.plaf.metal; \ - javax.swing.plaf.multi; \ - javax.swing.table; \ - javax.swing.text; \ - javax.swing.text.html; \ - javax.swing.text.html.parser; \ - javax.swing.text.rtf; \ - javax.swing.tree; \ - javax.swing.undo; \ - javax.transaction; \ - javax.transaction.xa; \ - javax.xml.parsers; \ - javax.xml.transform; \ - javax.xml.transform.dom; \ - javax.xml.transform.sax; \ - javax.xml.transform.stream; \ - org.ietf.jgss; \ - org.omg.CORBA; \ - org.omg.CORBA_2_3; \ - org.omg.CORBA_2_3.portable; \ - org.omg.CORBA.DynAnyPackage; \ - org.omg.CORBA.ORBPackage; \ - org.omg.CORBA.portable; \ - org.omg.CORBA.TypeCodePackage; \ - org.omg.CosNaming; \ - org.omg.CosNaming.NamingContextExtPackage; \ - org.omg.CosNaming.NamingContextPackage; \ - org.omg.Dynamic; \ - org.omg.DynamicAny; \ - org.omg.DynamicAny.DynAnyFactoryPackage; \ - org.omg.DynamicAny.DynAnyPackage; \ - org.omg.IOP; \ - org.omg.IOP.CodecFactoryPackage; \ - org.omg.IOP.CodecPackage; \ - org.omg.Messaging; \ - org.omg.PortableInterceptor; \ - org.omg.PortableInterceptor.ORBInitInfoPackage; \ - org.omg.PortableServer; \ - org.omg.PortableServer.CurrentPackage; \ - org.omg.PortableServer.POAManagerPackage; \ - org.omg.PortableServer.POAPackage; \ - org.omg.PortableServer.portable; \ - org.omg.PortableServer.ServantLocatorPackage; \ - org.omg.SendingContext; \ - org.omg.stub.java.rmi; \ - org.w3c.dom; \ - org.w3c.dom.css; \ - org.w3c.dom.events; \ - org.w3c.dom.html; \ - org.w3c.dom.stylesheets; \ - org.w3c.dom.traversal; \ - org.w3c.dom.views; \ - org.xml.sax; \ - org.xml.sax.ext; \ - org.xml.sax.helpers; \ - version="1.4.0" - -jre-1.5=, \ - javax.accessibility; \ - javax.activity; \ - javax.crypto; \ - javax.crypto.interfaces; \ - javax.crypto.spec; \ - javax.imageio; \ - javax.imageio.event; \ - javax.imageio.metadata; \ - javax.imageio.plugins.bmp; \ - javax.imageio.plugins.jpeg; \ - javax.imageio.spi; \ - javax.imageio.stream; \ - javax.management; \ - javax.management.loading; \ - javax.management.modelmbean; \ - javax.management.monitor; \ - javax.management.openmbean; \ - javax.management.relation; \ - javax.management.remote; \ - javax.management.remote.rmi; \ - javax.management.timer; \ - javax.naming; \ - javax.naming.directory; \ - javax.naming.event; \ - javax.naming.ldap; \ - javax.naming.spi; \ - javax.net; \ - javax.net.ssl; \ - javax.print; \ - javax.print.attribute; \ - javax.print.attribute.standard; \ - javax.print.event; \ - javax.rmi; \ - javax.rmi.CORBA; \ - javax.rmi.ssl; \ - javax.security.auth; \ - javax.security.auth.callback; \ - javax.security.auth.kerberos; \ - javax.security.auth.login; \ - javax.security.auth.spi; \ - javax.security.auth.x500; \ - javax.security.sasl; \ - javax.sound.midi; \ - javax.sound.midi.spi; \ - javax.sound.sampled; \ - javax.sound.sampled.spi; \ - javax.sql; \ - javax.sql.rowset; \ - javax.sql.rowset.serial; \ - javax.sql.rowset.spi; \ - javax.swing; \ - javax.swing.border; \ - javax.swing.colorchooser; \ - javax.swing.event; \ - javax.swing.filechooser; \ - javax.swing.plaf; \ - javax.swing.plaf.basic; \ - javax.swing.plaf.metal; \ - javax.swing.plaf.multi; \ - javax.swing.plaf.synth; \ - javax.swing.table; \ - javax.swing.text; \ - javax.swing.text.html; \ - javax.swing.text.html.parser; \ - javax.swing.text.rtf; \ - javax.swing.tree; \ - javax.swing.undo; \ - javax.transaction; \ - javax.transaction.xa; \ - javax.xml; \ - javax.xml.datatype; \ - javax.xml.namespace; \ - javax.xml.parsers; \ - javax.xml.transform; \ - javax.xml.transform.dom; \ - javax.xml.transform.sax; \ - javax.xml.transform.stream; \ - javax.xml.validation; \ - javax.xml.xpath; \ - org.ietf.jgss; \ - org.omg.CORBA; \ - org.omg.CORBA_2_3; \ - org.omg.CORBA_2_3.portable; \ - org.omg.CORBA.DynAnyPackage; \ - org.omg.CORBA.ORBPackage; \ - org.omg.CORBA.portable; \ - org.omg.CORBA.TypeCodePackage; \ - org.omg.CosNaming; \ - org.omg.CosNaming.NamingContextExtPackage; \ - org.omg.CosNaming.NamingContextPackage; \ - org.omg.Dynamic; \ - org.omg.DynamicAny; \ - org.omg.DynamicAny.DynAnyFactoryPackage; \ - org.omg.DynamicAny.DynAnyPackage; \ - org.omg.IOP; \ - org.omg.IOP.CodecFactoryPackage; \ - org.omg.IOP.CodecPackage; \ - org.omg.Messaging; \ - org.omg.PortableInterceptor; \ - org.omg.PortableInterceptor.ORBInitInfoPackage; \ - org.omg.PortableServer; \ - org.omg.PortableServer.CurrentPackage; \ - org.omg.PortableServer.POAManagerPackage; \ - org.omg.PortableServer.POAPackage; \ - org.omg.PortableServer.portable; \ - org.omg.PortableServer.ServantLocatorPackage; \ - org.omg.SendingContext; \ - org.omg.stub.java.rmi; \ - org.omg.stub.javax.management.remote.rmi; \ - org.w3c.dom; \ - org.w3c.dom.bootstrap; \ - org.w3c.dom.css; \ - org.w3c.dom.events; \ - org.w3c.dom.html; \ - org.w3c.dom.ls; \ - org.w3c.dom.ranges; \ - org.w3c.dom.stylesheets; \ - org.w3c.dom.traversal; \ - org.w3c.dom.views; \ - org.xml.sax; \ - org.xml.sax.ext; \ - org.xml.sax.helpers; \ - version="1.5.0" - -jre-1.6=, \ - javax.accessibility; \ - javax.activation; \ - javax.activity; \ - javax.annotation; \ - javax.annotation.processing; \ - javax.crypto; \ - javax.crypto.interfaces; \ - javax.crypto.spec; \ - javax.imageio; \ - javax.imageio.event; \ - javax.imageio.metadata; \ - javax.imageio.plugins.bmp; \ - javax.imageio.plugins.jpeg; \ - javax.imageio.spi; \ - javax.imageio.stream; \ - javax.jws; \ - javax.jws.soap; \ - javax.lang.model; \ - javax.lang.model.element; \ - javax.lang.model.type; \ - javax.lang.model.util; \ - javax.management; \ - javax.management.loading; \ - javax.management.modelmbean; \ - javax.management.monitor; \ - javax.management.openmbean; \ - javax.management.relation; \ - javax.management.remote; \ - javax.management.remote.rmi; \ - javax.management.timer; \ - javax.naming; \ - javax.naming.directory; \ - javax.naming.event; \ - javax.naming.ldap; \ - javax.naming.spi; \ - javax.net; \ - javax.net.ssl; \ - javax.print; \ - javax.print.attribute; \ - javax.print.attribute.standard; \ - javax.print.event; \ - javax.rmi; \ - javax.rmi.CORBA; \ - javax.rmi.ssl; \ - javax.script; \ - javax.security.auth; \ - javax.security.auth.callback; \ - javax.security.auth.kerberos; \ - javax.security.auth.login; \ - javax.security.auth.spi; \ - javax.security.auth.x500; \ - javax.security.cert; \ - javax.security.sasl; \ - javax.sound.midi; \ - javax.sound.midi.spi; \ - javax.sound.sampled; \ - javax.sound.sampled.spi; \ - javax.sql; \ - javax.sql.rowset; \ - javax.sql.rowset.serial; \ - javax.sql.rowset.spi; \ - javax.swing; \ - javax.swing.border; \ - javax.swing.colorchooser; \ - javax.swing.event; \ - javax.swing.filechooser; \ - javax.swing.plaf; \ - javax.swing.plaf.basic; \ - javax.swing.plaf.metal; \ - javax.swing.plaf.multi; \ - javax.swing.plaf.synth; \ - javax.swing.table; \ - javax.swing.text; \ - javax.swing.text.html; \ - javax.swing.text.html.parser; \ - javax.swing.text.rtf; \ - javax.swing.tree; \ - javax.swing.undo; \ - javax.tools; \ - javax.transaction; \ - javax.transaction.xa; \ - javax.xml; \ - javax.xml.bind; \ - javax.xml.bind.annotation; \ - javax.xml.bind.annotation.adapters; \ - javax.xml.bind.attachment; \ - javax.xml.bind.helpers; \ - javax.xml.bind.util; \ - javax.xml.crypto; \ - javax.xml.crypto.dom; \ - javax.xml.crypto.dsig; \ - javax.xml.crypto.dsig.dom; \ - javax.xml.crypto.dsig.keyinfo; \ - javax.xml.crypto.dsig.spec; \ - javax.xml.datatype; \ - javax.xml.namespace; \ - javax.xml.parsers; \ - javax.xml.soap; \ - javax.xml.stream; \ - javax.xml.stream.events; \ - javax.xml.stream.util; \ - javax.xml.transform; \ - javax.xml.transform.dom; \ - javax.xml.transform.sax; \ - javax.xml.transform.stax; \ - javax.xml.transform.stream; \ - javax.xml.validation; \ - javax.xml.ws; \ - javax.xml.ws.handler; \ - javax.xml.ws.handler.soap; \ - javax.xml.ws.http; \ - javax.xml.ws.soap; \ - javax.xml.ws.spi; \ - javax.xml.xpath; \ - org.ietf.jgss; \ - org.omg.CORBA; \ - org.omg.CORBA_2_3; \ - org.omg.CORBA_2_3.portable; \ - org.omg.CORBA.DynAnyPackage; \ - org.omg.CORBA.ORBPackage; \ - org.omg.CORBA.portable; \ - org.omg.CORBA.TypeCodePackage; \ - org.omg.CosNaming; \ - org.omg.CosNaming.NamingContextExtPackage; \ - org.omg.CosNaming.NamingContextPackage; \ - org.omg.Dynamic; \ - org.omg.DynamicAny; \ - org.omg.DynamicAny.DynAnyFactoryPackage; \ - org.omg.DynamicAny.DynAnyPackage; \ - org.omg.IOP; \ - org.omg.IOP.CodecFactoryPackage; \ - org.omg.IOP.CodecPackage; \ - org.omg.Messaging; \ - org.omg.PortableInterceptor; \ - org.omg.PortableInterceptor.ORBInitInfoPackage; \ - org.omg.PortableServer; \ - org.omg.PortableServer.CurrentPackage; \ - org.omg.PortableServer.POAManagerPackage; \ - org.omg.PortableServer.POAPackage; \ - org.omg.PortableServer.portable; \ - org.omg.PortableServer.ServantLocatorPackage; \ - org.omg.SendingContext; \ - org.omg.stub.java.rmi; \ - org.omg.stub.javax.management.remote.rmi; \ - org.w3c.dom; \ - org.w3c.dom.bootstrap; \ - org.w3c.dom.css; \ - org.w3c.dom.events; \ - org.w3c.dom.html; \ - org.w3c.dom.ls; \ - org.w3c.dom.ranges; \ - org.w3c.dom.stylesheets; \ - org.w3c.dom.traversal; \ - org.w3c.dom.views; \ - org.w3c.dom.xpath; \ - org.xml.sax; \ - org.xml.sax.ext; \ - org.xml.sax.helpers; \ - version=\"1.6.0\" -- 2.39.2