Converting builtin applications to be delivered in a self-contained manner via OAR files.

Change-Id: I5b7c6939aacc263248868fac2e0f69124c5f3609
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
index 7f4f9b2..d19c987 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
@@ -18,9 +18,11 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
+import org.onosproject.app.ApplicationAdminService;
 import org.onosproject.app.ApplicationService;
 import org.onosproject.app.ApplicationState;
 import org.onosproject.core.Application;
+import org.onosproject.core.ApplicationId;
 
 import java.util.Arrays;
 import java.util.List;
@@ -37,11 +39,20 @@
      * Creates a new message handler for the application messages.
      */
     protected ApplicationViewMessageHandler() {
-        super(ImmutableSet.of("appDataRequest"));
+        super(ImmutableSet.of("appDataRequest", "appManagementRequest"));
     }
 
     @Override
     public void process(ObjectNode message) {
+        String type = string(message, "event", "unknown");
+        if (type.equals("appDataRequest")) {
+            sendAppList(message);
+        } else if (type.equals("appManagementRequest")) {
+            processManagementCommand(message);
+        }
+    }
+
+    private void sendAppList(ObjectNode message) {
         ObjectNode payload = payload(message);
         String sortCol = string(payload, "sortCol", "id");
         String sortDir = string(payload, "sortDir", "asc");
@@ -58,6 +69,24 @@
         connection().sendMessage("appDataResponse", 0, rootNode);
     }
 
+    private void processManagementCommand(ObjectNode message) {
+        ObjectNode payload = payload(message);
+        String action = string(payload, "action");
+        String name = string(payload, "name");
+        if (action != null && name != null) {
+            ApplicationAdminService service = get(ApplicationAdminService.class);
+            ApplicationId appId = service.getId(name);
+            if (action.equals("activate")) {
+                service.activate(appId);
+            } else if (action.equals("deactivate")) {
+                service.deactivate(appId);
+            } else if (action.equals("uninstall")) {
+                service.uninstall(appId);
+            }
+            sendAppList(message);
+        }
+    }
+
     private TableRow[] generateTableRows(ApplicationService service) {
         List<TableRow> list = service.getApplications().stream()
                 .map(application -> new ApplicationTableRow(service, application))