You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2014/03/05 23:25:24 UTC

[5/6] git commit: [KARAF-2805] Convert remaining commands to the new model

[KARAF-2805] Convert remaining commands to the new model

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/571c6f99
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/571c6f99
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/571c6f99

Branch: refs/heads/master
Commit: 571c6f998181fc8e325ea55b388efea09a0bc319
Parents: 1c29cbc
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Mar 5 23:21:46 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Wed Mar 5 23:21:46 2014 +0100

----------------------------------------------------------------------
 bundle/command/pom.xml                          |  4 --
 .../karaf/bundle/command/ListBundles.java       |  2 +-
 bundle/core/pom.xml                             |  8 ++-
 config/command/pom.xml                          | 13 +++--
 .../karaf/config/command/CancelCommand.java     |  4 +-
 .../config/command/ConfigCommandSupport.java    | 20 ++++++--
 .../command/ConfigPropertyCommandSupport.java   |  6 +--
 .../karaf/config/command/DeleteCommand.java     | 12 ++---
 .../karaf/config/command/EditCommand.java       | 12 ++---
 .../karaf/config/command/ListCommand.java       |  6 +--
 .../karaf/config/command/PropAppendCommand.java | 10 ++--
 .../karaf/config/command/PropDelCommand.java    |  7 +--
 .../karaf/config/command/PropListCommand.java   |  5 +-
 .../karaf/config/command/PropSetCommand.java    | 10 ++--
 .../karaf/config/command/UpdateCommand.java     |  4 +-
 .../completers/ConfigurationCompleter.java      | 32 +++++++++---
 .../ConfigurationPropertyCompleter.java         | 35 ++++++-------
 .../OSGI-INF/blueprint/shell-config.xml         | 28 ----------
 .../karaf/config/command/EditCommandTest.java   | 28 ++++------
 .../config/command/MockCommandSession.java      | 54 +++++++++++++++-----
 .../karaf/config/command/UpdateCommandTest.java | 23 +++------
 diagnostic/command/pom.xml                      | 16 +-----
 .../karaf/diagnostic/command/DumpCommand.java   | 24 +++++----
 .../OSGI-INF/blueprint/shell-diagnostic.xml     | 25 ---------
 features/command/pom.xml                        |  5 --
 .../command/ListFeatureVersionsCommand.java     |  2 +-
 .../features/command/ListFeaturesCommand.java   |  2 +-
 .../karaf/features/command/RepoListCommand.java |  2 +-
 http/command/pom.xml                            | 22 +-------
 .../karaf/http/command/ServletListCommand.java  | 18 +++----
 .../resources/OSGI-INF/blueprint/blueprint.xml  | 25 ---------
 instance/command/pom.xml                        | 11 ----
 .../karaf/instance/command/ListCommand.java     |  2 +-
 jaas/command/pom.xml                            | 24 ++-------
 .../karaf/jaas/command/CancelCommand.java       | 10 ++--
 .../karaf/jaas/command/GroupAddCommand.java     |  6 +--
 .../karaf/jaas/command/GroupDeleteCommand.java  |  6 +--
 .../karaf/jaas/command/GroupRoleAddCommand.java |  6 +--
 .../jaas/command/GroupRoleDeleteCommand.java    |  6 +--
 .../karaf/jaas/command/JaasCommandSupport.java  | 50 +++++++++---------
 .../karaf/jaas/command/ListPendingCommand.java  | 13 ++---
 .../karaf/jaas/command/ListRealmsCommand.java   | 18 +++----
 .../karaf/jaas/command/ListUsersCommand.java    | 19 +++----
 .../karaf/jaas/command/ManageRealmCommand.java  | 26 +++++-----
 .../karaf/jaas/command/RoleAddCommand.java      |  6 +--
 .../karaf/jaas/command/RoleDeleteCommand.java   |  6 +--
 .../karaf/jaas/command/UpdateCommand.java       | 15 +++---
 .../karaf/jaas/command/UserAddCommand.java      |  6 +--
 .../karaf/jaas/command/UserDeleteCommand.java   |  6 +--
 .../completers/LoginModuleNameCompleter.java    | 25 +++++----
 .../jaas/command/completers/RealmCompleter.java | 27 +++++-----
 .../OSGI-INF/blueprint/jaas-command.xml         | 39 --------------
 .../jaas/command/ManageRealmCommandTest.java    | 31 +++++------
 jdbc/command/pom.xml                            |  7 +--
 .../karaf/jdbc/command/CreateCommand.java       | 17 +++---
 .../karaf/jdbc/command/DataSourcesCommand.java  | 11 ++--
 .../karaf/jdbc/command/DeleteCommand.java       | 13 ++---
 .../karaf/jdbc/command/ExecuteCommand.java      | 13 ++---
 .../apache/karaf/jdbc/command/InfoCommand.java  | 15 +++---
 .../karaf/jdbc/command/JdbcCommandSupport.java  |  8 ++-
 .../apache/karaf/jdbc/command/QueryCommand.java | 21 ++++----
 .../karaf/jdbc/command/TablesCommand.java       | 21 ++++----
 .../DataSourcesFileNameCompleter.java           | 14 ++---
 .../completers/DataSourcesNameCompleter.java    | 14 ++---
 .../OSGI-INF/blueprint/jdbc-command.xml         | 23 ---------
 jms/command/pom.xml                             |  7 +--
 .../apache/karaf/jms/command/BrowseCommand.java | 17 +++---
 .../jms/command/ConnectionFactoriesCommand.java | 11 ++--
 .../karaf/jms/command/ConsumeCommand.java       | 11 ++--
 .../apache/karaf/jms/command/CountCommand.java  | 12 +++--
 .../apache/karaf/jms/command/CreateCommand.java | 19 +++----
 .../apache/karaf/jms/command/DeleteCommand.java | 14 ++---
 .../apache/karaf/jms/command/InfoCommand.java   | 10 ++--
 .../karaf/jms/command/JmsCommandSupport.java    |  6 +--
 .../command/JmsConnectionCommandSupport.java    |  8 +--
 .../apache/karaf/jms/command/MoveCommand.java   | 12 +++--
 .../apache/karaf/jms/command/QueuesCommand.java | 10 ++--
 .../apache/karaf/jms/command/SendCommand.java   | 12 +++--
 .../apache/karaf/jms/command/TopicsCommand.java | 10 ++--
 .../ConnectionFactoriesFileNameCompleter.java   | 18 ++++---
 .../ConnectionFactoriesNameCompleter.java       | 18 ++++---
 .../OSGI-INF/blueprint/jms-command.xml          | 23 ---------
 jndi/command/pom.xml                            |  7 +--
 .../apache/karaf/jndi/command/AliasCommand.java | 25 +++++----
 .../apache/karaf/jndi/command/BindCommand.java  | 25 +++++----
 .../karaf/jndi/command/ContextsCommand.java     | 27 ++++++----
 .../karaf/jndi/command/CreateCommand.java       | 23 ++++++---
 .../karaf/jndi/command/DeleteCommand.java       | 23 ++++++---
 .../karaf/jndi/command/JndiCommandSupport.java  | 38 --------------
 .../apache/karaf/jndi/command/NamesCommand.java | 27 ++++++----
 .../karaf/jndi/command/UnbindCommand.java       | 23 ++++++---
 .../command/completers/ContextsCompleter.java   | 15 +++---
 .../jndi/command/completers/NamesCompleter.java | 15 +++---
 .../command/completers/ServicesIdCompleter.java | 15 +++---
 .../OSGI-INF/blueprint/jndi-command.xml         | 23 ---------
 kar/command/pom.xml                             | 10 ----
 .../karaf/kar/command/ListKarCommand.java       |  2 +-
 log/command/pom.xml                             | 22 ++++----
 .../org/apache/karaf/log/command/ClearLog.java  | 17 ++++--
 .../karaf/log/command/DisplayException.java     | 21 +++++---
 .../apache/karaf/log/command/DisplayLog.java    | 32 ++++++------
 .../apache/karaf/log/command/GetLogLevel.java   | 25 +++++----
 .../karaf/log/command/LogCommandSupport.java    | 32 ------------
 .../org/apache/karaf/log/command/LogEntry.java  | 36 ++++++-------
 .../org/apache/karaf/log/command/LogTail.java   | 23 +++++++--
 .../apache/karaf/log/command/SetLogLevel.java   | 24 ++++++---
 .../resources/OSGI-INF/blueprint/shell-log.xml  | 27 ----------
 obr/command/pom.xml                             | 15 ++----
 .../apache/karaf/obr/command/AddUrlCommand.java |  6 +--
 .../apache/karaf/obr/command/DeployCommand.java |  8 +--
 .../apache/karaf/obr/command/FindCommand.java   |  6 +--
 .../apache/karaf/obr/command/InfoCommand.java   |  6 +--
 .../apache/karaf/obr/command/ListCommand.java   | 13 ++---
 .../karaf/obr/command/ListUrlCommand.java       |  8 +--
 .../karaf/obr/command/ObrCommandSupport.java    | 16 +++---
 .../karaf/obr/command/RefreshUrlCommand.java    |  8 +--
 .../karaf/obr/command/RemoveUrlCommand.java     |  8 +--
 .../karaf/obr/command/ResolveCommand.java       |  8 +--
 .../apache/karaf/obr/command/SourceCommand.java |  8 +--
 .../apache/karaf/obr/command/StartCommand.java  |  8 +--
 .../resources/OSGI-INF/blueprint/blueprint.xml  | 25 ---------
 .../karaf/obr/command/ListCommandTest.java      |  2 +-
 package/command/pom.xml                         | 16 ++----
 .../apache/karaf/packages/command/Exports.java  | 25 ++++-----
 .../apache/karaf/packages/command/Imports.java  | 23 ++++-----
 .../OSGI-INF/blueprint/shell-bundles.xml        | 25 ---------
 package/core/pom.xml                            |  6 +--
 region/command/pom.xml                          | 14 +++--
 .../karaf/region/commands/AddBundleCommand.java |  8 +--
 .../karaf/region/commands/AddFilterCommand.java |  8 +--
 .../karaf/region/commands/AddRegionCommand.java |  6 +--
 .../karaf/region/commands/InfoCommand.java      | 10 ++--
 .../region/commands/RegionCommandSupport.java   | 18 ++++---
 .../OSGI-INF/blueprint/region-commands.xml      | 26 ----------
 service/command/pom.xml                         | 13 +++--
 .../karaf/service/command/ListServices.java     | 37 ++++++++------
 .../service/command/ObjectClassCompleter.java   | 15 +++---
 .../org/apache/karaf/service/command/Wait.java  | 23 +++++----
 .../OSGI-INF/blueprint/shell-services.xml       | 26 ----------
 .../service/command/ListServiceNamesTest.java   |  2 +-
 .../karaf/service/command/ListServicesTest.java |  2 +-
 shell/commands/pom.xml                          | 12 +----
 .../karaf/shell/commands/InfoProvider.java      | 30 -----------
 .../karaf/shell/commands/impl/InfoAction.java   |  2 +-
 .../shell/commands/impl/ThreadsAction.java      |  2 +-
 .../impl/info/InfoBundleTrackerCustomizer.java  |  2 +-
 .../commands/impl/info/PojoInfoProvider.java    |  2 +-
 .../karaf/shell/commands/info/InfoProvider.java | 30 +++++++++++
 system/command/pom.xml                          | 17 +-----
 .../system/commands/AbstractSystemAction.java   | 33 ------------
 .../karaf/system/commands/FrameworkOptions.java | 18 ++++---
 .../org/apache/karaf/system/commands/Name.java  | 18 +++++--
 .../apache/karaf/system/commands/Shutdown.java  | 26 ++++++----
 .../karaf/system/commands/StartLevel.java       | 17 +++---
 .../karaf/system/commands/SystemProperty.java   | 34 ++++++++----
 .../apache/karaf/system/commands/Version.java   | 15 ++++--
 .../OSGI-INF/blueprint/system-commands.xml      | 25 ---------
 web/command/pom.xml                             | 15 +-----
 .../org/apache/karaf/web/commands/List.java     | 22 ++++----
 .../org/apache/karaf/web/commands/Start.java    | 17 +++---
 .../org/apache/karaf/web/commands/Stop.java     | 19 +++----
 .../OSGI-INF/blueprint/web-commands.xml         | 25 ---------
 162 files changed, 1109 insertions(+), 1494 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/bundle/command/pom.xml
----------------------------------------------------------------------
diff --git a/bundle/command/pom.xml b/bundle/command/pom.xml
index d6bd26a..f1a0867 100644
--- a/bundle/command/pom.xml
+++ b/bundle/command/pom.xml
@@ -40,10 +40,6 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.table</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.core</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
index 4ab0af9..107e578 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
@@ -19,12 +19,12 @@ package org.apache.karaf.bundle.command;
 import org.apache.karaf.bundle.core.BundleInfo;
 import org.apache.karaf.bundle.core.BundleService;
 import org.apache.karaf.bundle.core.BundleState;
-import org.apache.karaf.shell.table.ShellTable;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.ShellTable;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.startlevel.FrameworkStartLevel;

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/bundle/core/pom.xml
----------------------------------------------------------------------
diff --git a/bundle/core/pom.xml b/bundle/core/pom.xml
index e1ba3fa..dbcd62a 100644
--- a/bundle/core/pom.xml
+++ b/bundle/core/pom.xml
@@ -107,11 +107,9 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Export-Package>org.apache.karaf.bundle.core</Export-Package>
-                        <Import-Package>
-                            org.apache.felix.service.command;status=provisional,
-                            *
-                        </Import-Package>
+                        <Export-Package>
+                            org.apache.karaf.bundle.core;-noimport:=true
+                        </Export-Package>
                         <Private-Package>
                             org.apache.karaf.bundle.core.internal,
                             org.apache.karaf.util.maven,

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/pom.xml
----------------------------------------------------------------------
diff --git a/config/command/pom.xml b/config/command/pom.xml
index 2a3636f..35f7e1e 100644
--- a/config/command/pom.xml
+++ b/config/command/pom.xml
@@ -44,13 +44,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.console</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <scope>provided</scope>
+            <artifactId>org.apache.karaf.shell.core</artifactId>
         </dependency>
 
         <dependency>
@@ -97,6 +91,11 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Karaf-Commands>*</Karaf-Commands>
+                    </instructions>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
index d3274dd..dff43fa 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java
@@ -16,8 +16,8 @@
  */
 package org.apache.karaf.config.command;
 
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "config", name = "cancel", description = "Cancels the changes to the configuration being edited.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java b/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
index 9111b53..fe0ca93 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java
@@ -19,8 +19,9 @@ package org.apache.karaf.config.command;
 import java.util.Dictionary;
 
 import org.apache.karaf.config.core.ConfigRepository;
-import org.apache.karaf.shell.inject.Reference;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.console.Session;
 
 /**
  * Abstract class from which all commands related to the ConfigurationAdmin
@@ -28,7 +29,7 @@ import org.apache.karaf.shell.console.OsgiCommandSupport;
  * This command retrieves a reference to the ConfigurationAdmin service before
  * calling another method to actually process the command.
  */
-public abstract class ConfigCommandSupport extends OsgiCommandSupport {
+public abstract class ConfigCommandSupport implements Action {
 
     public static final String PROPERTY_CONFIG_PID = "ConfigCommand.PID";
     public static final String PROPERTY_CONFIG_PROPS = "ConfigCommand.Props";
@@ -37,6 +38,16 @@ public abstract class ConfigCommandSupport extends OsgiCommandSupport {
     @Reference
     protected ConfigRepository configRepository;
 
+    @Reference
+    protected Session session;
+
+    @Override
+    public Object execute() throws Exception {
+        return doExecute();
+    }
+
+    protected abstract Object doExecute() throws Exception;
+
     @SuppressWarnings("rawtypes")
     protected Dictionary getEditedProps() throws Exception {
         return (Dictionary) this.session.get(PROPERTY_CONFIG_PROPS);
@@ -46,4 +57,7 @@ public abstract class ConfigCommandSupport extends OsgiCommandSupport {
         this.configRepository = configRepository;
     }
 
+    public void setSession(Session session) {
+        this.session = session;
+    }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java b/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
index 3e6af04..619c224 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
@@ -20,8 +20,8 @@ import java.util.Dictionary;
 import java.util.Properties;
 
 import org.apache.karaf.config.command.completers.ConfigurationCompleter;
-import org.apache.karaf.shell.commands.Completer;
-import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.Option;
 
 /**
  * Abstract class which commands that are related to property processing should extend.
@@ -29,7 +29,7 @@ import org.apache.karaf.shell.commands.Option;
 public abstract class ConfigPropertyCommandSupport extends ConfigCommandSupport {
 
     @Option(name = "-p", aliases = "--pid", description = "The configuration pid", required = false, multiValued = false)
-    @Completer(ConfigurationCompleter.class)
+    @Completion(ConfigurationCompleter.class)
     protected String pid;
 
     @SuppressWarnings("rawtypes")

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
index 506ce48..6953ef0 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
@@ -17,18 +17,18 @@
 package org.apache.karaf.config.command;
 
 import org.apache.karaf.config.command.completers.ConfigurationCompleter;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Completer;
-import org.apache.karaf.shell.commands.Option;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "config", name = "delete", description = "Delete a configuration.")
 @Service
 public class DeleteCommand extends ConfigCommandSupport {
 
     @Argument(index = 0, name = "pid", description = "PID of the configuration", required = true, multiValued = false)
-    @Completer(ConfigurationCompleter.class)
+    @Completion(ConfigurationCompleter.class)
     String pid;
 
     @Option(name = "--force", aliases = {}, description = "Force the edition of this config, even if another one was under edition", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
index aeaede3..8c48b83 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
@@ -19,11 +19,11 @@ package org.apache.karaf.config.command;
 import java.util.Dictionary;
 
 import org.apache.karaf.config.command.completers.ConfigurationCompleter;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Completer;
-import org.apache.karaf.shell.commands.Option;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.osgi.service.cm.Configuration;
 
 @Command(scope = "config", name = "edit", description = "Creates or edits a configuration.", detailedDescription="classpath:edit.txt")
@@ -31,7 +31,7 @@ import org.osgi.service.cm.Configuration;
 public class EditCommand extends ConfigCommandSupport {
 
     @Argument(index = 0, name = "pid", description = "PID of the configuration or of the factory if --factory is given. Pid can also be specified as ldap query", required = true, multiValued = false)
-    @Completer(ConfigurationCompleter.class)
+    @Completion(ConfigurationCompleter.class)
     String pid;
 
     @Option(name = "--force", aliases = {}, description = "Force the edition of this config, even if another one was under edition", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
index 8589e72..eff3476 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java
@@ -19,9 +19,9 @@ package org.apache.karaf.config.command;
 import java.util.Dictionary;
 import java.util.Enumeration;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.osgi.service.cm.Configuration;
 
 @Command(scope = "config", name = "list", description = "Lists existing configurations.")

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
index 6d13e13..f021146 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
@@ -19,17 +19,17 @@ package org.apache.karaf.config.command;
 import java.util.Dictionary;
 
 import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Completer;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "config", name = "property-append", description = "Appends the given value to an existing property or creates the property with the specified name and value.")
 @Service
 public class PropAppendCommand extends ConfigPropertyCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the property", required = true, multiValued = false)
-    @Completer(ConfigurationPropertyCompleter.class)
+    @Completion(ConfigurationPropertyCompleter.class)
     String prop;
 
     @Argument(index = 1, name = "value", description = "The value to append to the property", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
index 3280454..e416cf6 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java
@@ -18,9 +18,10 @@ package org.apache.karaf.config.command;
 
 import java.util.Dictionary;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
 
 @Command(scope = "config", name = "property-delete", description = "Deletes a property from the configuration being edited.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
index d0b208b..a0d3a61 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java
@@ -18,8 +18,9 @@ package org.apache.karaf.config.command;
 
 import java.util.Dictionary;
 import java.util.Enumeration;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "config", name = "property-list", description = "Lists properties from the currently edited configuration.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
index 16e58b9..8337f6a 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
@@ -19,17 +19,17 @@ package org.apache.karaf.config.command;
 import java.util.Dictionary;
 
 import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Completer;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "config", name = "property-set", description = "Sets a property in the currently edited configuration.")
 @Service
 public class PropSetCommand extends ConfigPropertyCommandSupport {
 
     @Argument(index = 0, name = "property", description = "The name of the property to set", required = true, multiValued = false)
-    @Completer(ConfigurationPropertyCompleter.class)
+    @Completion(ConfigurationPropertyCompleter.class)
     String prop;
 
     @Argument(index = 1, name = "value", description = "The value of the property", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
index ae48722..cc368b8 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java
@@ -18,8 +18,8 @@ package org.apache.karaf.config.command;
 
 import java.util.Dictionary;
 
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "config", name = "update", description = "Saves and propagates changes from the configuration being edited.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
index 3122ca2..fe60c56 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
@@ -23,11 +23,16 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.karaf.shell.inject.Init;
-import org.apache.karaf.shell.inject.Reference;
-import org.apache.karaf.shell.inject.Service;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
-import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.api.action.lifecycle.Destroy;
+import org.apache.karaf.shell.api.action.lifecycle.Init;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ConfigurationEvent;
@@ -47,12 +52,19 @@ public class ConfigurationCompleter implements Completer, ConfigurationListener
     @Reference
     private ConfigurationAdmin admin;
 
+    @Reference
+    private BundleContext bundleContext;
+
+    private ServiceRegistration<ConfigurationListener> registration;
+
     public void setAdmin(ConfigurationAdmin admin) {
         this.admin = admin;
     }
 
     @Init
     public void init() {
+        registration = bundleContext.registerService(ConfigurationListener.class, this, null);
+
         Configuration[] configs;
         try {
             configs = admin.listConfigurations(null);
@@ -71,9 +83,13 @@ public class ConfigurationCompleter implements Completer, ConfigurationListener
         delegate.getStrings().addAll(pids);
     }
 
-    @SuppressWarnings("rawtypes")
-    public int complete(final String buffer, final int cursor, final List candidates) {
-        return delegate.complete(buffer, cursor, candidates);
+    @Destroy
+    public void destroy() {
+        registration.unregister();
+    }
+
+    public int complete(final Session session, final CommandLine commandLine, final List<String> candidates) {
+        return delegate.complete(session, commandLine, candidates);
     }
 
     public void configurationEvent(ConfigurationEvent configurationEvent) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
index 2d98098..2b43fec 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java
@@ -27,14 +27,13 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.felix.service.command.CommandSession;
 import org.apache.karaf.config.command.ConfigCommandSupport;
-import org.apache.karaf.shell.inject.Reference;
-import org.apache.karaf.shell.inject.Service;
-import org.apache.karaf.shell.console.CommandSessionHolder;
-import org.apache.karaf.shell.console.Completer;
-import org.apache.karaf.shell.console.completer.ArgumentCompleter;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
@@ -57,30 +56,26 @@ public class ConfigurationPropertyCompleter implements Completer {
     private ConfigurationAdmin configAdmin;
 
     @SuppressWarnings("rawtypes")
-    public int complete(final String buffer, final int cursor, final List candidates) {
-        CommandSession session = CommandSessionHolder.getSession();
+    public int complete(final Session session, final CommandLine commandLine, final List<String> candidates) {
         if (session != null) {
-            String pid = getPid(session);
+            String pid = getPid(session, commandLine);
             Set<String> propertyNames = getPropertyNames(pid);
             delegate.getStrings().clear();
             if (propertyNames != null && !propertyNames.isEmpty()) {
                 delegate.getStrings().addAll(propertyNames);
             }
         }
-        return delegate.complete(buffer,cursor,candidates);
+        return delegate.complete(session, commandLine, candidates);
     }
 
     /**
-     * Retrieves the pid stored in the {@link CommandSession} or passed as an argument.
-     * Argument takes precedence from pid stored in the {@link CommandSession}.
-     * @param commandSession
-     * @return
+     * Retrieves the pid stored in the {@link Session} or passed as an argument.
+     * Argument takes precedence from pid stored in the {@link Session}.
      */
-    private String getPid(CommandSession commandSession) {
-        String pid = (String) commandSession.get(ConfigCommandSupport.PROPERTY_CONFIG_PID);
-        ArgumentCompleter.ArgumentList list = (ArgumentCompleter.ArgumentList) commandSession.get(ArgumentCompleter.ARGUMENTS_LIST);
-        if (list != null && list.getArguments() != null && list.getArguments().length > 0) {
-            List<String> arguments = Arrays.asList(list.getArguments());
+    private String getPid(Session session, CommandLine commandLine) {
+        String pid = (String) session.get(ConfigCommandSupport.PROPERTY_CONFIG_PID);
+        if (commandLine.getArguments().length > 0) {
+            List<String> arguments = Arrays.asList(commandLine.getArguments());
             if (arguments.contains(OPTION)) {
                 int index = arguments.indexOf(OPTION);
                 if (arguments.size() > index) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
----------------------------------------------------------------------
diff --git a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
deleted file mode 100644
index 4e91d25..0000000
--- a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
-           xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
-           default-activation="lazy">
-
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
-                    scan="org.apache.karaf.config.command.*" />
-
-</blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java
----------------------------------------------------------------------
diff --git a/config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java b/config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java
index c019644..09dc000 100644
--- a/config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java
+++ b/config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java
@@ -16,24 +16,20 @@
  */
 package org.apache.karaf.config.command;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-
 import java.util.Dictionary;
 import java.util.Properties;
 
 import junit.framework.TestCase;
-
-import org.apache.felix.service.command.CommandSession;
-import org.apache.karaf.config.command.ConfigCommandSupport;
-import org.apache.karaf.config.command.EditCommand;
 import org.apache.karaf.config.core.impl.ConfigRepositoryImpl;
-import org.easymock.EasyMock;
+import org.apache.karaf.shell.api.console.Session;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+
 /**
  * Test cases for {@link EditCommand}
  */
@@ -44,23 +40,17 @@ public class EditCommandTest extends TestCase {
     private EditCommand command;
     private BundleContext context;
     private ConfigurationAdmin admin;
-    private CommandSession session;
+    private Session session;
 
     @Override
     protected void setUp() throws Exception {
         command = new EditCommand();
 
-        
-        context = EasyMock.createMock(BundleContext.class);
-        command.setBundleContext(context);
-        
         admin = createMock(ConfigurationAdmin.class);
         command.setConfigRepository(new ConfigRepositoryImpl(admin));
-        expect(context.getBundle(0)).andReturn(null).anyTimes();
 
-        replay(context);
-        
         session = new MockCommandSession();
+        command.setSession(session);
     }
     
     public void testExecuteOnExistingPid() throws Exception {        
@@ -74,7 +64,7 @@ public class EditCommandTest extends TestCase {
         replay(config);
         
         command.pid = PID; 
-        command.execute(session);
+        command.execute();
         
         // the PID and Dictionary should have been set on the session
         assertEquals("The PID should be set on the session",
@@ -94,7 +84,7 @@ public class EditCommandTest extends TestCase {
         replay(config);
         
         command.pid = PID; 
-        command.execute(session);
+        command.execute();
 
         // the PID and an empty Dictionary should have been set on the session        
         assertEquals("The PID should be set on the session",

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java
----------------------------------------------------------------------
diff --git a/config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java b/config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java
index 8982de1..7fa430b 100644
--- a/config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java
+++ b/config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java
@@ -16,17 +16,22 @@
  */
 package org.apache.karaf.config.command;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.felix.service.command.CommandSession;
+import org.apache.karaf.shell.api.console.History;
+import org.apache.karaf.shell.api.console.Registry;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.api.console.SessionFactory;
+import org.apache.karaf.shell.api.console.Terminal;
 
 /*
  * A mock CommandSession implementation that only cares about the properties set on the session
  */
-class MockCommandSession implements CommandSession {
+class MockCommandSession implements Session {
 
     private Map<String, Object> properties = new HashMap<String, Object>();
 
@@ -34,21 +39,11 @@ class MockCommandSession implements CommandSession {
         // not implemented
     }
 
-    public Object convert(Class<?> type, Object instance) {
-        // not implemented
-        return null;
-    }
-
     public Object execute(CharSequence commandline) throws Exception {
         // not implemented
         return null;
     }
 
-    public CharSequence format(Object target, int level) {
-        // not implemented
-        return null;
-    }
-
     public Object get(String name) {
         return properties.get(name);
     }
@@ -66,4 +61,39 @@ class MockCommandSession implements CommandSession {
     public void put(String name, Object value) {
         properties.put(name, value);
     }
+
+    @Override
+    public String readLine(String prompt, Character mask) throws IOException {
+        return null;
+    }
+
+    @Override
+    public Terminal getTerminal() {
+        return null;
+    }
+
+    @Override
+    public History getHistory() {
+        return null;
+    }
+
+    @Override
+    public Registry getRegistry() {
+        return null;
+    }
+
+    @Override
+    public SessionFactory getFactory() {
+        return null;
+    }
+
+    @Override
+    public String resolveCommand(String name) {
+        return null;
+    }
+
+    @Override
+    public void run() {
+
+    }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java
----------------------------------------------------------------------
diff --git a/config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java b/config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java
index 64d92ac..e3f58b5 100644
--- a/config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java
+++ b/config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java
@@ -27,7 +27,6 @@ import junit.framework.TestCase;
 
 import org.apache.karaf.config.core.ConfigRepository;
 import org.easymock.EasyMock;
-import org.osgi.framework.BundleContext;
 
 /**
  * Test cases for {@link EditCommand}
@@ -41,40 +40,34 @@ public class UpdateCommandTest extends TestCase {
 		Dictionary<String, Object> props = new Hashtable<String, Object>();
 
         UpdateCommand command = new UpdateCommand();
-        BundleContext context = EasyMock.createMock(BundleContext.class);
-        command.setBundleContext(context);
         ConfigRepository configRepo = EasyMock.createMock(ConfigRepository.class);
         configRepo.update(EasyMock.eq(PID), EasyMock.eq(props));
         EasyMock.expectLastCall();
 		command.setConfigRepository(configRepo);
-        expect(context.getBundle(0)).andReturn(null).anyTimes();
-        
+
         MockCommandSession session = createMockSessionForFactoryEdit(PID, false, props);
-        replay(context);
+        command.setSession(session);
         replay(configRepo);
 
-        command.execute(session);
-        EasyMock.verify(context, configRepo);
+        command.execute();
+        EasyMock.verify(configRepo);
     }
     
     public void testupdateOnNewFactoryPid() throws Exception {
 		Dictionary<String, Object> props = new Hashtable<String, Object>();
 
         UpdateCommand command = new UpdateCommand();
-        BundleContext context = EasyMock.createMock(BundleContext.class);
-        command.setBundleContext(context);
         ConfigRepository configRepo = EasyMock.createMock(ConfigRepository.class);
         expect(configRepo.createFactoryConfiguration(EasyMock.eq(FACTORY_PID), EasyMock.eq(props)))
         	.andReturn(PID + ".35326647");
 		command.setConfigRepository(configRepo);
-        expect(context.getBundle(0)).andReturn(null).anyTimes();
-        
+
         MockCommandSession session = createMockSessionForFactoryEdit(FACTORY_PID, true, props);
-        replay(context);
+        command.setSession(session);
         replay(configRepo);
 
-        command.execute(session);
-        EasyMock.verify(context, configRepo);
+        command.execute();
+        EasyMock.verify(configRepo);
     }
 
 	private MockCommandSession createMockSessionForFactoryEdit(String pid, boolean isFactory, 

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/diagnostic/command/pom.xml
----------------------------------------------------------------------
diff --git a/diagnostic/command/pom.xml b/diagnostic/command/pom.xml
index 741b472..710b9c5 100644
--- a/diagnostic/command/pom.xml
+++ b/diagnostic/command/pom.xml
@@ -43,13 +43,6 @@
             <artifactId>org.osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.compendium</artifactId>
@@ -61,7 +54,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.console</artifactId>
+            <artifactId>org.apache.karaf.shell.core</artifactId>
         </dependency>
     </dependencies>
 
@@ -87,12 +80,7 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Import-Package>
-                            org.apache.aries.blueprint,
-                            org.osgi.service.blueprint.container,
-                            org.osgi.service.blueprint.reflect,
-                            *
-                        </Import-Package>
+                        <Karaf-Commands>*</Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/diagnostic/command/src/main/java/org/apache/karaf/diagnostic/command/DumpCommand.java
----------------------------------------------------------------------
diff --git a/diagnostic/command/src/main/java/org/apache/karaf/diagnostic/command/DumpCommand.java b/diagnostic/command/src/main/java/org/apache/karaf/diagnostic/command/DumpCommand.java
index 9a0af4c..3f6c607 100644
--- a/diagnostic/command/src/main/java/org/apache/karaf/diagnostic/command/DumpCommand.java
+++ b/diagnostic/command/src/main/java/org/apache/karaf/diagnostic/command/DumpCommand.java
@@ -22,22 +22,23 @@ import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.diagnostic.core.DumpDestination;
 import org.apache.karaf.diagnostic.core.DumpProvider;
 import org.apache.karaf.diagnostic.core.common.DirectoryDumpDestination;
 import org.apache.karaf.diagnostic.core.common.ZipDumpDestination;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 /**
  * Command to create dump from shell.
  */
 @Command(scope = "dev", name = "dump-create", description = "Creates zip archive with diagnostic info.")
 @Service
-public class DumpCommand extends OsgiCommandSupport {
+public class DumpCommand implements Action {
 
     /**
      * Output format of the filename if not defined otherwise
@@ -56,14 +57,15 @@ public class DumpCommand extends OsgiCommandSupport {
     @Argument(name = "name", description = "Name of created zip or directory", required = false)
     String fileName;
 
+    @Reference
+    List<DumpProvider> providers;
+
     @Override
-    protected Object doExecute() throws Exception {
+    public Object execute() throws Exception {
         DumpDestination destination;
 
-        List<DumpProvider> providers = getAllServices(DumpProvider.class);
-
         if (providers.isEmpty()) {
-            session.getConsole().println("Unable to create dump. No providers were found");
+            System.out.println("Unable to create dump. No providers were found");
             return null;
         }
 
@@ -87,7 +89,7 @@ public class DumpCommand extends OsgiCommandSupport {
             provider.createDump(destination);
         }
         destination.save();
-        session.getConsole().println("Diagnostic dump created at " + target.getAbsolutePath() + ".");
+        System.out.println("Diagnostic dump created at " + target.getAbsolutePath() + ".");
 
         return null;
     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/diagnostic/command/src/main/resources/OSGI-INF/blueprint/shell-diagnostic.xml
----------------------------------------------------------------------
diff --git a/diagnostic/command/src/main/resources/OSGI-INF/blueprint/shell-diagnostic.xml b/diagnostic/command/src/main/resources/OSGI-INF/blueprint/shell-diagnostic.xml
deleted file mode 100644
index ff508d7..0000000
--- a/diagnostic/command/src/main/resources/OSGI-INF/blueprint/shell-diagnostic.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
-
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
-                    scan="org.apache.karaf.diagnostic.command.*" />
-
-</blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/features/command/pom.xml
----------------------------------------------------------------------
diff --git a/features/command/pom.xml b/features/command/pom.xml
index debe123..1aedcde 100644
--- a/features/command/pom.xml
+++ b/features/command/pom.xml
@@ -49,11 +49,6 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.table</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.karaf.features</groupId>
             <artifactId>org.apache.karaf.features.core</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
index 792825c..b2c5e42 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
@@ -22,12 +22,12 @@ import org.apache.karaf.features.Feature;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
 import org.apache.karaf.features.command.completers.AllFeatureCompleter;
-import org.apache.karaf.shell.table.ShellTable;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Completion;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "feature", name = "version-list", description = "Lists all versions of a feature available from the currently available repositories.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
index 0cb6d3c..40c45b4 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/ListFeaturesCommand.java
@@ -24,10 +24,10 @@ import java.util.List;
 import org.apache.karaf.features.Feature;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
-import org.apache.karaf.shell.table.ShellTable;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "feature", name = "list", description = "Lists all existing features available from the defined repositories.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/features/command/src/main/java/org/apache/karaf/features/command/RepoListCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RepoListCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RepoListCommand.java
index af180bd..a735aa6 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/RepoListCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/RepoListCommand.java
@@ -21,11 +21,11 @@ import java.util.List;
 
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
-import org.apache.karaf.shell.table.ShellTable;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.apache.karaf.shell.support.MultiException;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "feature", name = "repo-list", description = "Displays a list of all defined repositories.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/http/command/pom.xml
----------------------------------------------------------------------
diff --git a/http/command/pom.xml b/http/command/pom.xml
index 0e7e06e..3189101 100644
--- a/http/command/pom.xml
+++ b/http/command/pom.xml
@@ -38,25 +38,15 @@
 	</properties>
 
 	<dependencies>
-	    <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.table</artifactId>
-        </dependency>
 		<dependency>
 			<groupId>org.apache.karaf.shell</groupId>
-			<artifactId>org.apache.karaf.shell.console</artifactId>
+			<artifactId>org.apache.karaf.shell.core</artifactId>
 		</dependency>
         <dependency>
             <groupId>org.apache.karaf.http</groupId>
             <artifactId>org.apache.karaf.http.core</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <scope>provided</scope>
-        </dependency>
-		
 		<dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
@@ -108,20 +98,12 @@
 					<instructions>
 						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
 						<Export-Package>${project.artifactId}*;version=${project.version}</Export-Package>
-						<Import-Package>
-                            org.apache.aries.blueprint,
-                            org.osgi.service.blueprint.container,
-                            org.osgi.service.blueprint.reflect,
-							org.apache.felix.service.command,
-							org.apache.karaf.shell.commands,
-							org.apache.karaf.shell.console,
-							*
-                        </Import-Package>
 						<Private-Package>
 							org.apache.felix.utils.version,
 							org.apache.felix.utils.manifest,
 							org.apache.karaf.util;-split-package:=merge-first
                         </Private-Package>
+                        <Karaf-Commands>*</Karaf-Commands>
 						<_versionpolicy>${bnd.version.policy}</_versionpolicy>
 					</instructions>
 				</configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
----------------------------------------------------------------------
diff --git a/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java b/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
index 6fe7313..1932499 100644
--- a/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
+++ b/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
@@ -20,17 +20,17 @@ import java.util.Arrays;
 
 import org.apache.karaf.http.core.ServletInfo;
 import org.apache.karaf.http.core.ServletService;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Option;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.apache.karaf.shell.inject.Reference;
-import org.apache.karaf.shell.inject.Service;
-import org.apache.karaf.shell.table.Col;
-import org.apache.karaf.shell.table.ShellTable;
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.Col;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "http", name = "list", description = "Lists details for servlets.")
 @Service
-public class ServletListCommand extends OsgiCommandSupport {
+public class ServletListCommand implements Action {
 
     @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
     boolean noFormat;
@@ -39,7 +39,7 @@ public class ServletListCommand extends OsgiCommandSupport {
     private ServletService servletService;
     
     @Override
-    protected Object doExecute() throws Exception {
+    public Object execute() throws Exception {
         ShellTable table = new ShellTable();
         table.column(new Col("ID"));
         table.column(new Col("Servlet"));

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index 4c9f164..0000000
--- a/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
-
-	<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.2.0"
-                    scan="org.apache.karaf.http.command.*" />
-
-</blueprint>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/instance/command/pom.xml
----------------------------------------------------------------------
diff --git a/instance/command/pom.xml b/instance/command/pom.xml
index 52058cd..7240ddd 100644
--- a/instance/command/pom.xml
+++ b/instance/command/pom.xml
@@ -39,23 +39,12 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.table</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.compendium</artifactId>
             <scope>provided</scope>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
index 368259a..fe571a8 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
@@ -17,10 +17,10 @@
 package org.apache.karaf.instance.command;
 
 import org.apache.karaf.instance.core.Instance;
-import org.apache.karaf.shell.table.ShellTable;
 import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "instance", name = "list", description = "Lists all existing container instances.")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/pom.xml
----------------------------------------------------------------------
diff --git a/jaas/command/pom.xml b/jaas/command/pom.xml
index 3e4278c..56871dd 100644
--- a/jaas/command/pom.xml
+++ b/jaas/command/pom.xml
@@ -44,12 +44,6 @@
             <scope>provided</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
     	<dependency>
             <groupId>org.apache.karaf.jaas</groupId>
             <artifactId>org.apache.karaf.jaas.config</artifactId>
@@ -65,12 +59,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.console</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.table</artifactId>
-            <scope>provided</scope>
+            <artifactId>org.apache.karaf.shell.core</artifactId>
         </dependency>
 
         <dependency>
@@ -104,16 +93,11 @@
                     <instructions>
                         <Export-Package>${project.artifactId}*;version=${project.version}</Export-Package>
                         <Import-Package>
-                            javax.management,
-                            javax.management.loading,
-                            org.apache.aries.blueprint,
-                            org.osgi.service.blueprint.container,
-                            org.osgi.service.blueprint.reflect,
-                            org.apache.felix.service.command,
-                            org.apache.karaf.shell.commands,
-                            org.apache.karaf.shell.console,
                             *
                         </Import-Package>
+                        <Karaf-Commands>
+                            org.apache.karaf.jaas.command.*
+                        </Karaf-Commands>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/CancelCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/CancelCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/CancelCommand.java
index 7ad63b1..44fd833 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/CancelCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/CancelCommand.java
@@ -15,18 +15,18 @@
  */
 package org.apache.karaf.jaas.command;
 
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.inject.Service;
-
 import java.util.LinkedList;
 
+import org.apache.karaf.jaas.modules.BackingEngine;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
 @Command(scope = "jaas", name = "cancel", description = "Cancel the modification of a JAAS realm")
 @Service
 public class CancelCommand extends JaasCommandSupport {
 
     @Override
-    protected Object doExecute() throws Exception {
+    public Object execute() throws Exception {
         //Cleanup the session
         session.put(JAAS_REALM, null);
         session.put(JAAS_ENTRY, null);

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupAddCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupAddCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupAddCommand.java
index 3e0341e..78ecede 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupAddCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupAddCommand.java
@@ -16,9 +16,9 @@
 package org.apache.karaf.jaas.command;
 
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "jaas", name = "group-add", description = "Make a user part of a group")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupDeleteCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupDeleteCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupDeleteCommand.java
index e1122d1..bea4194 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupDeleteCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupDeleteCommand.java
@@ -16,9 +16,9 @@
 package org.apache.karaf.jaas.command;
 
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "jaas", name = "group-delete", description = "Remove a user from a group")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleAddCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleAddCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleAddCommand.java
index 13aa9bf..17bb0fa 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleAddCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleAddCommand.java
@@ -16,9 +16,9 @@
 package org.apache.karaf.jaas.command;
 
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "jaas", name = "group-role-add", description = "Add a role to a group")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleDeleteCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleDeleteCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleDeleteCommand.java
index 869a797..13b05d7 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleDeleteCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/GroupRoleDeleteCommand.java
@@ -16,9 +16,9 @@
 package org.apache.karaf.jaas.command;
 
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.inject.Service;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "jaas", name = "group-role-delete", description = "Remove a role from a group")
 @Service

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
index ca89696..cbfb6d1 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
@@ -15,33 +15,41 @@
  */
 package org.apache.karaf.jaas.command;
 
+import java.util.List;
+import java.util.Queue;
+
+import javax.security.auth.login.AppConfigurationEntry;
+
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
 import org.apache.karaf.jaas.modules.BackingEngineFactory;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
-
-import javax.security.auth.login.AppConfigurationEntry;
-import java.util.List;
-import java.util.Queue;
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.console.Session;
 
-public abstract class JaasCommandSupport extends OsgiCommandSupport {
+public abstract class JaasCommandSupport implements Action {
 
     public static final String JAAS_REALM = "JaasCommand.REALM";
     public static final String JAAS_ENTRY = "JaasCommand.ENTRY";
     public static final String JAAS_CMDS = "JaasCommand.COMMANDS";
 
-    private List<JaasRealm> realms;
+    @Reference
+    List<BackingEngineFactory> engineFactories;
+
+    @Reference
+    List<JaasRealm> realms;
+
+    @Reference
+    Session session;
 
     protected abstract Object doExecute(BackingEngine engine) throws Exception;
 
     /**
      * Add the command to the command queue.
-     *
-     * @return
-     * @throws Exception
      */
-    protected Object doExecute() throws Exception {
+    @Override
+    public Object execute() throws Exception {
         JaasRealm realm = (JaasRealm) session.get(JAAS_REALM);
         AppConfigurationEntry entry = (AppConfigurationEntry) session.get(JAAS_ENTRY);
         @SuppressWarnings("unchecked")
@@ -57,20 +65,7 @@ public abstract class JaasCommandSupport extends OsgiCommandSupport {
         return null;
     }
 
-    public void setRealms(List<JaasRealm> realms) {
-        this.realms = realms;
-    }
-
-    public List<JaasRealm> getRealms() {
-        if (realms == null) {
-            return getAllServices(JaasRealm.class);
-        } else {
-            return realms;
-        }
-    }
-
     public BackingEngine getBackingEngine(AppConfigurationEntry entry) {
-        List<BackingEngineFactory> engineFactories = getAllServices(BackingEngineFactory.class);
         if (engineFactories != null) {
             for (BackingEngineFactory factory : engineFactories) {
                 String loginModuleClass = (String) entry.getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
@@ -82,4 +77,11 @@ public abstract class JaasCommandSupport extends OsgiCommandSupport {
         return null;
     }
 
+    public void setRealms(List<JaasRealm> realms) {
+        this.realms = realms;
+    }
+
+    public void setSession(Session session) {
+        this.session = session;
+    }
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
index f6f8232..51a8d40 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
@@ -15,21 +15,22 @@
  */
 package org.apache.karaf.jaas.command;
 
-import org.apache.karaf.shell.commands.Command;
+import java.util.Queue;
+
+import javax.security.auth.login.AppConfigurationEntry;
+
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.inject.Service;
-
-import javax.security.auth.login.AppConfigurationEntry;
-import java.util.Queue;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "jaas", name = "pending-list", description = "List the pending modification on the active JAAS Realm/Login Module")
 @Service
 public class ListPendingCommand extends JaasCommandSupport {
 
     @Override
-    protected Object doExecute() throws Exception {
+    public Object execute() throws Exception {
         JaasRealm realm = (JaasRealm) session.get(JAAS_REALM);
         AppConfigurationEntry entry = (AppConfigurationEntry) session.get(JAAS_ENTRY);
         @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
index 64efe54..25cfe14 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
@@ -15,16 +15,15 @@
  */
 package org.apache.karaf.jaas.command;
 
-import org.apache.karaf.shell.commands.Command;
+import javax.security.auth.login.AppConfigurationEntry;
+
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.commands.Option;
-import org.apache.karaf.shell.inject.Service;
-import org.apache.karaf.shell.table.ShellTable;
-
-import javax.security.auth.login.AppConfigurationEntry;
-import java.util.List;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "jaas", name = "realm-list", description = "List JAAS realms")
 @Service
@@ -38,9 +37,8 @@ public class ListRealmsCommand extends JaasCommandSupport {
         return null;
     }
 
-    protected Object doExecute() throws Exception {
-        List<JaasRealm> realms = getRealms();
-
+    @Override
+    public Object execute() throws Exception {
         ShellTable table = new ShellTable();
         table.column("Index");
         table.column("Realm Name");

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
index cd8c359..13a0031 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
@@ -15,19 +15,20 @@
  */
 package org.apache.karaf.jaas.command;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.security.auth.login.AppConfigurationEntry;
+
 import org.apache.karaf.jaas.boot.principal.GroupPrincipal;
 import org.apache.karaf.jaas.boot.principal.RolePrincipal;
-import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.jaas.boot.principal.UserPrincipal;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.commands.Option;
-import org.apache.karaf.shell.inject.Service;
-import org.apache.karaf.shell.table.ShellTable;
-
-import javax.security.auth.login.AppConfigurationEntry;
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.table.ShellTable;
 
 @Command(scope = "jaas", name = "user-list", description = "List the users of the selected JAAS realm/login module")
 @Service
@@ -37,7 +38,7 @@ public class ListUsersCommand extends JaasCommandSupport {
     boolean noFormat;
 
     @Override
-    protected Object doExecute() throws Exception {
+    public Object execute() throws Exception {
         JaasRealm realm = (JaasRealm) session.get(JAAS_REALM);
         AppConfigurationEntry entry = (AppConfigurationEntry) session.get(JAAS_ENTRY);
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/571c6f99/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
index a0647e3..a9fa13b 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
@@ -15,34 +15,34 @@
  */
 package org.apache.karaf.jaas.command;
 
+import java.util.LinkedList;
+import java.util.Queue;
+
+import javax.security.auth.login.AppConfigurationEntry;
+
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.command.completers.LoginModuleNameCompleter;
 import org.apache.karaf.jaas.command.completers.RealmCompleter;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Completer;
-import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
-import org.apache.karaf.shell.inject.Service;
-
-import javax.security.auth.login.AppConfigurationEntry;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 
 @Command(scope = "jaas", name = "realm-manage", description = "Manage users and roles of a JAAS Realm")
 @Service
 public class ManageRealmCommand extends JaasCommandSupport {
 
     @Option(name = "--realm", description = "JAAS Realm", required = false, multiValued = false)
-    @Completer(RealmCompleter.class)
+    @Completion(RealmCompleter.class)
     String realmName;
 
     @Option(name = "--index", description = "Realm Index", required = false, multiValued = false)
     int index;
 
     @Option(name = "--module", description = "JAAS Login Module Class Name", required = false, multiValued = false)
-    @Completer(LoginModuleNameCompleter.class)
+    @Completion(LoginModuleNameCompleter.class)
     String moduleName;
 
     @Option(name = "-f", aliases = { "--force" }, description = "Force the management of this realm, even if another one was under management", required = false, multiValued = false)
@@ -50,7 +50,7 @@ public class ManageRealmCommand extends JaasCommandSupport {
 
     @SuppressWarnings("unchecked")
     @Override
-    protected Object doExecute() throws Exception {
+    public Object execute() throws Exception {
         if (realmName == null && index <= 0) {
             System.err.println("A valid realm or the realm index need to be specified");
             return null;
@@ -69,7 +69,6 @@ public class ManageRealmCommand extends JaasCommandSupport {
 
             if (index > 0) {
                 // user provided the index, get the realm AND entry from the index
-                List<JaasRealm> realms = getRealms();
                 if (realms != null && realms.size() > 0) {
                     int i = 1;
                     realms_loop: for (JaasRealm r : realms) {
@@ -88,7 +87,6 @@ public class ManageRealmCommand extends JaasCommandSupport {
                     }
                 }
             } else {
-                List<JaasRealm> realms = getRealms();
                 if (realms != null && realms.size() > 0) {
                     for (JaasRealm r : realms) {
                         if (r.getName().equals(realmName)) {