You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2012/04/13 17:24:11 UTC

svn commit: r1325802 - /ace/trunk/ace-launcher/src/main/java/org/apache/ace/launcher/Main.java

Author: jawi
Date: Fri Apr 13 15:24:10 2012
New Revision: 1325802

URL: http://svn.apache.org/viewvc?rev=1325802&view=rev
Log:
Add a possibility to start extra bundles along with the management agent.

Modified:
    ace/trunk/ace-launcher/src/main/java/org/apache/ace/launcher/Main.java

Modified: ace/trunk/ace-launcher/src/main/java/org/apache/ace/launcher/Main.java
URL: http://svn.apache.org/viewvc/ace/trunk/ace-launcher/src/main/java/org/apache/ace/launcher/Main.java?rev=1325802&r1=1325801&r2=1325802&view=diff
==============================================================================
--- ace/trunk/ace-launcher/src/main/java/org/apache/ace/launcher/Main.java (original)
+++ ace/trunk/ace-launcher/src/main/java/org/apache/ace/launcher/Main.java Fri Apr 13 15:24:10 2012
@@ -19,22 +19,30 @@
 
 package org.apache.ace.launcher;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import org.apache.ace.managementagent.Activator;
 import org.osgi.framework.Constants;
 import org.osgi.framework.launch.FrameworkFactory;
 
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 /**
  * A simple launcher, that launches the embedded Felix together with a management agent.
  */
 public class Main {
 
+    private final boolean m_quiet = Boolean.parseBoolean(System.getProperty("quiet", "false"));
+    private final List m_additionalBundleActivators = new ArrayList();
+
     private Argument m_identification = new KeyValueArgument() {
         public void handle(String key, String value) {
-            if (key.equals("identification")) {
+            if ("identification".equals(key)) {
                 System.setProperty("identification", value);
             }
         }
@@ -46,7 +54,7 @@ public class Main {
 
     private Argument m_discovery = new KeyValueArgument() {
         public void handle(String key, String value) {
-            if (key.equals("discovery")) {
+            if ("discovery".equals(key)) {
                 System.setProperty("discovery", value);
             }
         }
@@ -58,7 +66,7 @@ public class Main {
 
     private Argument m_agents = new KeyValueArgument() {
         public void handle(String key, String value) {
-            if (key.equals("agents")) {
+            if ("agents".equals(key)) {
                 System.setProperty("agents", value);
             }
         }
@@ -70,7 +78,7 @@ public class Main {
 
     private Argument m_help = new Argument() {
         public void handle(String argument) {
-            if (argument.equals("help")) {
+            if ("help".equals(argument)) {
                 showHelp();
                 System.exit(0);
             }
@@ -80,10 +88,32 @@ public class Main {
             return "help: prints this help message";
         }
     };
+    
+    private Argument m_additionalBundles = new KeyValueArgument() {
+        public void handle(String key, String value) {
+            if ("bundle".equals(key)) {
+                try {
+                    Class clazz = Class.forName(value);
+                    if (!m_quiet) {
+                        System.out.println("Adding additional bundle activator: " + clazz.getName());
+                    }
+                    m_additionalBundleActivators.add(clazz.newInstance());
+                }
+                catch (Exception e) {
+                    System.err.println("Bundle (" + value + ") not added! Details: " + e.getMessage());
+                }
+            }
+        }
 
+        public String getDescription() {
+            return "bundle: adds an additional bundle to be started with this management agent: bundle=my.fully.qualified.BundleActivator";
+        }
+    };
+    
     private FrameworkOption m_fwOptionHandler = new FrameworkOption();
-
+    
     private final List<Argument> m_arguments = Arrays.asList(
+        m_additionalBundles,
         m_identification,
         m_discovery,
         m_agents,
@@ -107,6 +137,8 @@ public class Main {
 
         List activators = new ArrayList();
         activators.add(new Activator());
+        activators.addAll(m_additionalBundleActivators);
+        
         Map frameworkProperties = new HashMap();
         frameworkProperties.put("felix.systembundle.activators", activators);
         frameworkProperties.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,