[WIP] Upgrade ONOS to karaf version 4.2.1

Change-Id: I7cd40c995bdf1c80f94b1895fb3344e32404c7fa
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
index ef20d07..546a637 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
@@ -18,9 +18,10 @@
 import java.util.Optional;
 import java.util.Set;
 
-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.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.action.Option;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cfg.ConfigProperty;
 import org.onosproject.cli.AbstractShellCommand;
@@ -35,6 +36,7 @@
 /**
  * Manages component configuration.
  */
+@Service
 @Command(scope = "onos", name = "cfg",
         description = "Manages component configuration")
 public class ComponentConfigCommand extends AbstractShellCommand {
@@ -71,7 +73,7 @@
     ComponentConfigService service;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         service = get(ComponentConfigService.class);
         try {
             if (isNullOrEmpty(command)) {
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java
index 46830cf..8c1819f 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java
@@ -15,8 +15,11 @@
  */
 package org.onosproject.cli.cfg;
 
-import org.apache.karaf.shell.console.Completer;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -28,9 +31,10 @@
 /**
  * Component configuration command completer.
  */
+@Service
 public class ComponentConfigCommandCompleter implements Completer {
     @Override
-    public int complete(String buffer, int cursor, List<String> candidates) {
+    public int complete(Session session, CommandLine commandLine, List<String> candidates) {
         // Delegate string completer
         StringsCompleter delegate = new StringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
@@ -39,7 +43,7 @@
         strings.add(PRESET);
 
         // Now let the completer do the work for figuring out what to offer.
-        return delegate.complete(buffer, cursor, candidates);
+        return delegate.complete(session, commandLine, candidates);
     }
 
 }
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentNameCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentNameCompleter.java
index 1e4853b..fedeb01 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentNameCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentNameCompleter.java
@@ -15,8 +15,11 @@
  */
 package org.onosproject.cli.cfg;
 
-import org.apache.karaf.shell.console.Completer;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cli.AbstractShellCommand;
 
@@ -26,9 +29,10 @@
 /**
  * Component name completer.
  */
+@Service
 public class ComponentNameCompleter implements Completer {
     @Override
-    public int complete(String buffer, int cursor, List<String> candidates) {
+    public int complete(Session session, CommandLine commandLine, List<String> candidates) {
         // Delegate string completer
         StringsCompleter delegate = new StringsCompleter();
 
@@ -38,7 +42,7 @@
         service.getComponentNames().forEach(strings::add);
 
         // Now let the completer do the work for figuring out what to offer.
-        return delegate.complete(buffer, cursor, candidates);
+        return delegate.complete(session, commandLine, candidates);
     }
 
 }
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentPropertyNameCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentPropertyNameCompleter.java
index 0c842fa..4d6161a 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentPropertyNameCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentPropertyNameCompleter.java
@@ -15,8 +15,9 @@
  */
 package org.onosproject.cli.cfg;
 
-import org.apache.karaf.shell.console.completer.ArgumentCompleter;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cfg.ConfigProperty;
 import org.onosproject.cli.AbstractCompleter;
@@ -32,13 +33,12 @@
  */
 public class ComponentPropertyNameCompleter extends AbstractCompleter {
     @Override
-    public int complete(String buffer, int cursor, List<String> candidates) {
+    public int complete(Session session, CommandLine commandLine, List<String> candidates) {
         // Delegate string completer
         StringsCompleter delegate = new StringsCompleter();
 
         // Component name is the previous argument.
-        ArgumentCompleter.ArgumentList list = getArgumentList();
-        String componentName = list.getArguments()[list.getCursorArgumentIndex() - 1];
+        String componentName = commandLine.getArguments()[commandLine.getCursorArgumentIndex() - 1];
         ComponentConfigService service = get(ComponentConfigService.class);
 
         SortedSet<String> strings = delegate.getStrings();
@@ -49,7 +49,7 @@
         }
 
         // Now let the completer do the work for figuring out what to offer.
-        return delegate.complete(buffer, cursor, candidates);
+        return delegate.complete(session, commandLine, candidates);
     }
 
 }
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java
index 35dd2a0..55baaf6 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java
@@ -21,7 +21,6 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import org.apache.karaf.shell.console.completer.ArgumentCompleter.ArgumentList;
 import org.onosproject.cli.AbstractChoicesCompleter;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.config.Config;
@@ -42,17 +41,16 @@
     @Override
     protected List<String> choices() {
         NetworkConfigRegistry service = AbstractShellCommand.get(NetworkConfigRegistry.class);
-        ArgumentList args = getArgumentList();
 
-        checkArgument(args.getCursorArgumentIndex() >= 2);
-        String subjectClassKey = args.getArguments()[args.getCursorArgumentIndex() - 2];
+        checkArgument(commandLine.getCursorArgumentIndex() >= 2);
+        String subjectClassKey = commandLine.getArguments()[commandLine.getCursorArgumentIndex() - 2];
 
         SubjectFactory<?> subjectFactory = service.getSubjectFactory(subjectClassKey);
         if (subjectFactory == null) {
             return ImmutableList.of();
         }
 
-        String subjectKey = args.getArguments()[args.getCursorArgumentIndex() - 1];
+        String subjectKey = commandLine.getArguments()[commandLine.getCursorArgumentIndex() - 1];
 
         Object subject = subjectFactory.createSubject(subjectKey);
         Set<? extends Config<Object>> configs = service.getConfigs(subject);
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
index a45efcb..b155090 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
@@ -19,9 +19,10 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-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.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.action.Option;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.config.Config;
 import org.onosproject.net.config.NetworkConfigService;
@@ -33,6 +34,7 @@
 /**
  * Manages network configuration.
  */
+@Service
 @Command(scope = "onos", name = "netcfg",
         description = "Manages network configuration")
 public class NetworkConfigCommand extends AbstractShellCommand {
@@ -60,7 +62,7 @@
     private NetworkConfigService service;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         service = get(NetworkConfigService.class);
         JsonNode root = mapper.createObjectNode();
         if (isNullOrEmpty(subjectClassKey)) {
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigRegistryCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigRegistryCommand.java
index 5026fec..d477279 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigRegistryCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigRegistryCommand.java
@@ -15,8 +15,9 @@
  */
 package org.onosproject.cli.cfg;
 
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.action.Option;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.config.ConfigFactory;
 import org.onosproject.net.config.NetworkConfigRegistry;
@@ -24,6 +25,7 @@
 /**
  * Displays network configuration registry contents.
  */
+@Service
 @Command(scope = "onos", name = "netcfg-registry",
         description = "Displays network configuration registry contents")
 public class NetworkConfigRegistryCommand extends AbstractShellCommand {
@@ -36,7 +38,7 @@
     private boolean shortOnly = false;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         get(NetworkConfigRegistry.class).getConfigFactories().forEach(this::print);
     }
 
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/SubjectKeyCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/SubjectKeyCompleter.java
index 0267023..e0d183d 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/SubjectKeyCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/SubjectKeyCompleter.java
@@ -20,7 +20,6 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import org.apache.karaf.shell.console.completer.ArgumentCompleter.ArgumentList;
 import org.onosproject.cli.AbstractChoicesCompleter;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.config.NetworkConfigRegistry;
@@ -36,8 +35,7 @@
     @Override
     protected List<String> choices() {
         NetworkConfigRegistry service = AbstractShellCommand.get(NetworkConfigRegistry.class);
-        ArgumentList args = getArgumentList();
-        String subjectClassKey = args.getArguments()[args.getCursorArgumentIndex() - 1];
+        String subjectClassKey = commandLine.getArguments()[commandLine.getCursorArgumentIndex() - 1];
 
         SubjectFactory subjectFactory = service.getSubjectFactory(subjectClassKey);
         if (subjectFactory == null) {