Switch from gshell to gogo

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@792445 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/karaf/gshell/gshell-config/pom.xml b/karaf/gshell/gshell-config/pom.xml
index 6bf1d97..6b53cf3 100644
--- a/karaf/gshell/gshell-config/pom.xml
+++ b/karaf/gshell/gshell-config/pom.xml
@@ -40,7 +40,7 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.felix.karaf.gshell</groupId>
-            <artifactId>org.apache.felix.karaf.gshell.core</artifactId>
+            <artifactId>org.apache.felix.karaf.gshell.console</artifactId>
         </dependency>
 
         <dependency>
@@ -54,16 +54,6 @@
             <artifactId>org.osgi.compendium</artifactId>
             <scope>provided</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.springframework.osgi</groupId>
-            <artifactId>spring-osgi-core</artifactId>
-        </dependency>
-
-        <dependency>
-             <groupId>org.apache.geronimo.specs</groupId>
-             <artifactId>geronimo-annotation_1.0_spec</artifactId>
-        </dependency>
     </dependencies>
 
     <build>
@@ -76,10 +66,9 @@
                         <Bundle-SymbolicName>${artifactId}</Bundle-SymbolicName>
                         <Export-Package>${pom.artifactId}*;version=${project.version}</Export-Package>
                         <Import-Package>
-                            org.apache.geronimo.gshell.command,
-                            org.apache.geronimo.gshell.wisdom.command,
-                            org.apache.geronimo.gshell.wisdom.registry,
-                            org.apache.felix.karaf.gshell.core,
+                            org.osgi.service.command,
+                            org.apache.felix.gogo.commands,
+                            org.apache.felix.karaf.gshell.console,
                             *
                         </Import-Package>
                         <Private-Package>!*</Private-Package>
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java
index 93a3630..f6b3ff0 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java
@@ -21,8 +21,8 @@
 public class CancelCommand extends ConfigCommandSupport {
 
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
-        this.variables.parent().unset(PROPERTY_CONFIG_PID);
-        this.variables.parent().unset(PROPERTY_CONFIG_PROPS);
+        session.put(PROPERTY_CONFIG_PID, null);
+        session.put(PROPERTY_CONFIG_PROPS, null);
     }
 
 }
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ConfigCommandSupport.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ConfigCommandSupport.java
index 8d4e64b..8ab53d1 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ConfigCommandSupport.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ConfigCommandSupport.java
@@ -18,7 +18,7 @@
 
 import java.util.Dictionary;
 
-import org.apache.felix.karaf.gshell.core.OsgiCommandSupport;
+import org.apache.felix.karaf.gshell.console.OsgiCommandSupport;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationAdmin;
 
@@ -37,13 +37,13 @@
         // Get config admin service.
         ServiceReference ref = getBundleContext().getServiceReference(ConfigurationAdmin.class.getName());
         if (ref == null) {
-            io.out.println("ConfigurationAdmin service is unavailable.");
+            System.out.println("ConfigurationAdmin service is unavailable.");
             return null;
         }
         try {
             ConfigurationAdmin admin = (ConfigurationAdmin) getBundleContext().getService(ref);
             if (admin == null) {
-                io.out.println("ConfigAdmin service is unavailable.");
+                System.out.println("ConfigAdmin service is unavailable.");
                 return null;
             }
 
@@ -56,7 +56,7 @@
     }
 
     protected Dictionary getEditedProps() throws Exception {
-        return (Dictionary) this.variables.parent().get(PROPERTY_CONFIG_PROPS);
+        return (Dictionary) this.session.get(PROPERTY_CONFIG_PROPS);
     }
 
     protected abstract void doExecute(ConfigurationAdmin admin) throws Exception;
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java
index c32029a..75620d6 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java
@@ -18,8 +18,8 @@
 
 import java.util.Dictionary;
 
-import org.apache.geronimo.gshell.clp.Argument;
-import org.apache.geronimo.gshell.clp.Option;
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Option;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 public class EditCommand extends ConfigCommandSupport {
@@ -31,13 +31,13 @@
     boolean force;
 
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
-        String oldPid = (String) this.variables.get(PROPERTY_CONFIG_PID);
+        String oldPid = (String) this.session.get(PROPERTY_CONFIG_PID);
         if (oldPid != null && !oldPid.equals(pid) && !force) {
-            io.err.println("Another config is being edited.  Cancel / update first, or use the --force option");
+            System.err.println("Another config is being edited.  Cancel / update first, or use the --force option");
             return;
         }
         Dictionary props = admin.getConfiguration(pid).getProperties();
-        this.variables.parent().set(PROPERTY_CONFIG_PID, pid);
-        this.variables.parent().set(PROPERTY_CONFIG_PROPS, props);
+        this.session.put(PROPERTY_CONFIG_PID, pid);
+        this.session.put(PROPERTY_CONFIG_PROPS, props);
     }
 }
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java
index 51a41f0..0e24271 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java
@@ -19,9 +19,9 @@
 import java.util.Dictionary;
 import java.util.Enumeration;
 
-import org.apache.geronimo.gshell.clp.Argument;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.apache.felix.gogo.commands.Argument;
 
 public class ListCommand extends ConfigCommandSupport {
 
@@ -31,18 +31,18 @@
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
         Configuration[] configs = admin.listConfigurations(query);
         for (Configuration config : configs) {
-            io.out.println("----------------------------------------------------------------");
-            io.out.println("Pid:            " + config.getPid());
+            System.out.println("----------------------------------------------------------------");
+            System.out.println("Pid:            " + config.getPid());
             if (config.getFactoryPid() != null) {
-                io.out.println("FactoryPid:     " + config.getFactoryPid());
+                System.out.println("FactoryPid:     " + config.getFactoryPid());
             }
-            io.out.println("BundleLocation: " + config.getBundleLocation());
+            System.out.println("BundleLocation: " + config.getBundleLocation());
             if (config.getProperties() != null) {
-                io.out.println("Properties:");
+                System.out.println("Properties:");
                 Dictionary props = config.getProperties();
                 for (Enumeration e = props.keys(); e.hasMoreElements();) {
                     Object key = e.nextElement();
-                    io.out.println("   " + key + " = " + props.get(key));
+                    System.out.println("   " + key + " = " + props.get(key));
                 }
             }
         }
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java
index 562ce8a..1db7a95 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java
@@ -18,7 +18,7 @@
 
 import java.util.Dictionary;
 
-import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.felix.gogo.commands.Argument;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 /**
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java
index b8eb07d..5c3a59c 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java
@@ -18,12 +18,12 @@
 
 import java.util.Dictionary;
 
-import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.felix.gogo.commands.Argument;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 public class PropDelCommand extends ConfigCommandSupport {
 
-    @Argument(index = 0, required = true, description = "the property to delete")
+    @Argument(name = "prop", index = 0, required = true, description = "the property to delete")
     String prop;
 
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java
index 9f09229..c5a8893 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java
@@ -30,7 +30,7 @@
         } else {
             for (Enumeration e = props.keys(); e.hasMoreElements();) {
                 Object key = e.nextElement();
-                io.out.println("   " + key + " = " + props.get(key));
+                System.out.println("   " + key + " = " + props.get(key));
             }
         }
     }
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java
index 0d60b31..6ce4e25 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java
@@ -18,7 +18,7 @@
 
 import java.util.Dictionary;
 
-import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.felix.gogo.commands.Argument;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 public class PropSetCommand extends ConfigCommandSupport {
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java
index 8def27d..02b504a 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java
@@ -28,11 +28,11 @@
         if (props == null) {
             System.err.println("No configuration is being edited. Run the edit command first");
         } else {
-            String pid = (String) this.variables.parent().get(PROPERTY_CONFIG_PID);
+            String pid = (String) this.session.get(PROPERTY_CONFIG_PID);
             Configuration cfg = admin.getConfiguration(pid, null);
             cfg.update(props);
-            this.variables.parent().unset(PROPERTY_CONFIG_PID);
-            this.variables.parent().unset(PROPERTY_CONFIG_PROPS);
+            this.session.put(PROPERTY_CONFIG_PID, null);
+            this.session.put(PROPERTY_CONFIG_PROPS, null);
         }
     }
 }
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationCompleter.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationCompleter.java
index c840e89..022596f 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationCompleter.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationCompleter.java
@@ -23,8 +23,8 @@
 import java.util.Collection;
 import java.util.List;
 
-import jline.Completor;
-import org.apache.geronimo.gshell.console.completer.StringsCompleter;
+import org.apache.felix.karaf.gshell.console.completer.StringsCompleter;
+import org.apache.felix.karaf.gshell.console.Completer;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ConfigurationEvent;
@@ -36,7 +36,7 @@
  * Displays a list of existing config admin configurations for completion.
  *
  */
-public class ConfigurationCompleter implements Completor, ConfigurationListener {
+public class ConfigurationCompleter implements Completer, ConfigurationListener {
 
     private final StringsCompleter delegate = new StringsCompleter();
 
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationPropertyCompleter.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationPropertyCompleter.java
index b44c00e..48472ba 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationPropertyCompleter.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/completers/ConfigurationPropertyCompleter.java
@@ -19,15 +19,9 @@
 
 package org.apache.felix.karaf.gshell.config.completers;
 
-import java.util.Dictionary;
-import java.util.Enumeration;
 import java.util.List;
 
-import jline.Completor;
-import org.apache.geronimo.gshell.command.Variables;
-import org.apache.geronimo.gshell.console.completer.StringsCompleter;
-import org.apache.geronimo.gshell.shell.ShellContextHolder;
-import org.apache.felix.karaf.gshell.config.ConfigCommandSupport;
+import org.apache.felix.karaf.gshell.console.Completer;
 
 /**
  * {@link jline.Completor} for Configuration Admin properties.
@@ -35,22 +29,24 @@
  * Displays a list of existing properties based on the current configuration being edited.
  *
  */
-public class ConfigurationPropertyCompleter implements Completor {
+public class ConfigurationPropertyCompleter implements Completer {
 
     public int complete(final String buffer, final int cursor, final List candidates) {
-        Variables vars = ShellContextHolder.get().getVariables();
-        if (vars.get(ConfigCommandSupport.PROPERTY_CONFIG_PID) == null) {
-            return -1;
-        }
+        // TODO: currently we have no way to access the session which is being run in this thread
+        return -1;
 
-        Dictionary props = (Dictionary) vars.get(ConfigCommandSupport.PROPERTY_CONFIG_PROPS);
-        StringsCompleter delegate = new StringsCompleter();
-
-        for (Enumeration e = props.keys(); e.hasMoreElements();) {
-            String key = (String) e.nextElement();
-            delegate.getStrings().add(key);
-        }
-
-        return delegate.complete(buffer, cursor, candidates);
+//        if (vars.get(ConfigCommandSupport.PROPERTY_CONFIG_PID) == null) {
+//            return -1;
+//        }
+//
+//        Dictionary props = (Dictionary) vars.get(ConfigCommandSupport.PROPERTY_CONFIG_PROPS);
+//        StringsCompleter delegate = new StringsCompleter();
+//
+//        for (Enumeration e = props.keys(); e.hasMoreElements();) {
+//            String key = (String) e.nextElement();
+//            delegate.getStrings().add(key);
+//        }
+//
+//        return delegate.complete(buffer, cursor, candidates);
     }
 }
diff --git a/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml b/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml
index f213c20..673ec3e 100644
--- a/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml
+++ b/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml
@@ -21,62 +21,48 @@
 
     <command-bundle xmlns="http://felix.apache.org/karaf/xmlns/gshell/v1.0.0">
         <command name="config/cancel">
-            <action class="org.apache.felix.karaf.gshell.config.CancelCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.CancelCommand"/>
         </command>
         <command name="config/edit">
-            <action class="org.apache.felix.karaf.gshell.config.EditCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.EditCommand"/>
             <completers>
                 <ref component-id="configCompleter" />
                 <null/>
             </completers>
         </command>
         <command name="config/list">
-            <action class="org.apache.felix.karaf.gshell.config.ListCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.ListCommand"/>
         </command>
         <command name="config/propdel">
-            <action class="org.apache.felix.karaf.gshell.config.PropDelCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.PropDelCommand"/>
             <completers>
                 <ref component-id="configPropertyCompleter" />
                 <null/>
             </completers>
         </command>
         <command name="config/proplist">
-            <action class="org.apache.felix.karaf.gshell.config.PropListCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.PropListCommand"/>
         </command>
         <command name="config/propset">
-            <action class="org.apache.felix.karaf.gshell.config.PropSetCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.PropSetCommand"/>
             <completers>
                 <ref component-id="configPropertyCompleter" />
                 <null/>
             </completers>
         </command>
         <command name="config/update">
-            <action class="org.apache.felix.karaf.gshell.config.UpdateCommand">
-                <property name="bundleContext" ref="blueprintBundleContext"/>
-            </action>
+            <action class="org.apache.felix.karaf.gshell.config.UpdateCommand"/>
         </command>
     </command-bundle>
 
     <bean id="configCompleter" class="org.apache.felix.karaf.gshell.config.completers.ConfigurationCompleter" init-method="init">
         <property name="admin" ref="configAdmin"/>
     </bean>
+    <service ref="configCompleter" interface="org.osgi.service.cm.ConfigurationListener" />
 
     <bean id="configPropertyCompleter" class="org.apache.felix.karaf.gshell.config.completers.ConfigurationPropertyCompleter" />
 
     <reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin"  />
 
-    <service ref="configCompleter" interface="org.osgi.service.cm.ConfigurationListener" />
 
 </blueprint>