[WIP] Upgrade ONOS to karaf version 4.2.1

Change-Id: I7cd40c995bdf1c80f94b1895fb3344e32404c7fa
diff --git a/cli/src/main/java/org/onosproject/cli/app/ApplicationCommand.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationCommand.java
index 4db129d..55e7a93 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationCommand.java
@@ -16,8 +16,9 @@
 package org.onosproject.cli.app;
 
 import com.google.common.io.ByteStreams;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
+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.onosproject.app.ApplicationAdminService;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.Application;
@@ -31,6 +32,7 @@
 /**
  * Manages application inventory.
  */
+@Service
 @Command(scope = "onos", name = "app",
         description = "Manages application inventory")
 public class ApplicationCommand extends AbstractShellCommand {
@@ -51,7 +53,7 @@
     String[] names = null;
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         ApplicationAdminService service = get(ApplicationAdminService.class);
         if (command.equals(INSTALL)) {
             for (String name : names) {
diff --git a/cli/src/main/java/org/onosproject/cli/app/ApplicationIdListCommand.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationIdListCommand.java
index 15e7227..8e8a482 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationIdListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationIdListCommand.java
@@ -18,7 +18,8 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
-import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.utils.Comparators;
 import org.onosproject.core.ApplicationId;
@@ -32,12 +33,13 @@
 /**
  * Lists application ID information.
  */
+@Service
 @Command(scope = "onos", name = "app-ids",
          description = "Lists application ID information")
 public class ApplicationIdListCommand extends AbstractShellCommand {
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         CoreService service = get(CoreService.class);
         List<ApplicationId> ids = newArrayList(service.getAppIds());
         Collections.sort(ids, Comparators.APP_ID_COMPARATOR);
diff --git a/cli/src/main/java/org/onosproject/cli/app/ApplicationIdWithIntentNameCompleter.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationIdWithIntentNameCompleter.java
index 275d6b9..d9e1a15 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationIdWithIntentNameCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationIdWithIntentNameCompleter.java
@@ -18,17 +18,21 @@
 import java.util.List;
 import java.util.SortedSet;
 
-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.cli.AbstractShellCommand;
 import org.onosproject.net.intent.IntentService;
 
 /**
  * Application name completer.
  */
+@Service
 public class ApplicationIdWithIntentNameCompleter 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();
 
@@ -41,7 +45,7 @@
                         strings.add(intent.appId().name()));
 
         // 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/app/ApplicationNameCompleter.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java
index 3f93ced..badbcd8 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java
@@ -15,8 +15,9 @@
  */
 package org.onosproject.cli.app;
 
-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.app.ApplicationService;
 import org.onosproject.app.ApplicationState;
 import org.onosproject.cli.AbstractCompleter;
@@ -44,13 +45,12 @@
  */
 public class ApplicationNameCompleter 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();
 
         // Command name is the second argument.
-        ArgumentCompleter.ArgumentList list = getArgumentList();
-        String cmd = list.getArguments()[1];
+        String cmd = commandLine.getArguments()[1];
 
         // Grab apps already on the command (to prevent tab-completed duplicates)
         // FIXME: This does not work.
@@ -80,7 +80,7 @@
         }
 
         // add unique suffix to candidates, if user has something in buffer
-        if (!Strings.isNullOrEmpty(buffer)) {
+        if (!Strings.isNullOrEmpty(commandLine.getCursorArgument())) {
             List<String> suffixCandidates = strings.stream()
                     // remove onos common prefix
                     .map(full -> full.replaceFirst("org\\.onosproject\\.", ""))
@@ -107,7 +107,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/app/ApplicationsListCommand.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java
index 5b0c1ef..24b2da1 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java
@@ -20,8 +20,9 @@
 import java.util.Comparator;
 import java.util.List;
 
-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.app.ApplicationService;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.utils.Comparators;
@@ -37,6 +38,7 @@
 /**
  * Lists application information.
  */
+@Service
 @Command(scope = "onos", name = "apps",
         description = "Lists application information")
 public class ApplicationsListCommand extends AbstractShellCommand {
@@ -61,7 +63,7 @@
 
 
     @Override
-    protected void execute() {
+    protected void doExecute() {
         ApplicationService service = get(ApplicationService.class);
         List<Application> apps = newArrayList(service.getApplications());
         if (sortByName) {