Document A2 OSGi Boot. Add classpath provisioning source.
[lgpl/argeo-commons.git] / org.argeo.osgi.boot / src / org / argeo / osgi / boot / OsgiBootUtils.java
index 54efffc8056504f7e15234c4791b742a7a406366..9593b0cde8bf8babdec9a79fe959aba90c0a679c 100644 (file)
@@ -20,21 +20,29 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;\r
 import java.util.Date;\r
 import java.util.List;\r
+import java.util.Map;\r
 import java.util.StringTokenizer;\r
 \r
 import org.osgi.framework.Bundle;\r
+import org.osgi.framework.BundleException;\r
+import org.osgi.framework.launch.Framework;\r
+import org.osgi.framework.launch.FrameworkFactory;\r
 \r
 /** Utilities, mostly related to logging. */\r
 public class OsgiBootUtils {\r
        /** ISO8601 (as per log4j) and difference to UTC */\r
        private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS Z");\r
 \r
+       static boolean debug = System.getProperty(OsgiBoot.PROP_ARGEO_OSGI_BOOT_DEBUG) == null ? false\r
+                       : !System.getProperty(OsgiBoot.PROP_ARGEO_OSGI_BOOT_DEBUG).trim().equals("false");\r
+\r
        public static void info(Object obj) {\r
                System.out.println("# OSGiBOOT      # " + dateFormat.format(new Date()) + " # " + obj);\r
        }\r
 \r
        public static void debug(Object obj) {\r
-               System.out.println("# OSGiBOOT DBG  # " + dateFormat.format(new Date()) + " # " + obj);\r
+               if (debug)\r
+                       System.out.println("# OSGiBOOT DBG  # " + dateFormat.format(new Date()) + " # " + obj);\r
        }\r
 \r
        public static void warn(Object obj) {\r
@@ -47,26 +55,8 @@ public class OsgiBootUtils {
                        e.printStackTrace();\r
        }\r
 \r
-       /**\r
-        * Gets a property value\r
-        * \r
-        * @return null when defaultValue is ""\r
-        */\r
-       public static String getProperty(String name, String defaultValue) {\r
-               final String value;\r
-               if (defaultValue != null)\r
-                       value = System.getProperty(name, defaultValue);\r
-               else\r
-                       value = System.getProperty(name);\r
-\r
-               if (value == null || value.equals(""))\r
-                       return null;\r
-               else\r
-                       return value;\r
-       }\r
-\r
-       public static String getProperty(String name) {\r
-               return getProperty(name, null);\r
+       public static boolean isDebug() {\r
+               return debug;\r
        }\r
 \r
        public static String stateAsString(int state) {\r
@@ -89,7 +79,7 @@ public class OsgiBootUtils {
        }\r
 \r
        /**\r
-        * @return ==0: versions are identical, <0: tested version is newer, >0:\r
+        * @return ==0: versions are identical, &lt;0: tested version is newer, &gt;0:\r
         *         currentVersion is newer.\r
         */\r
        public static int compareVersions(String currentVersion, String testedVersion) {\r
@@ -140,4 +130,16 @@ public class OsgiBootUtils {
                return comp;\r
        }\r
 \r
+       /** Launch an OSGi framework. */\r
+       public static Framework launch(FrameworkFactory frameworkFactory, Map<String, String> configuration) {\r
+               // start OSGi\r
+               Framework framework = frameworkFactory.newFramework(configuration);\r
+               try {\r
+                       framework.start();\r
+               } catch (BundleException e) {\r
+                       throw new OsgiBootException("Cannot start OSGi framework", e);\r
+               }\r
+               return framework;\r
+       }\r
+\r
 }\r