GUI -- Added facility to upload and track various sprite JSON definitions. WIP

Change-Id: I5629e07d84b91d2d885737a9011acc4e13538cf2
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
index e63dbf7..cd8c3c2 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandler.java
@@ -145,7 +145,9 @@
                               "cancelTraffic",
                               "requestSummary",
                               "cancelSummary",
-                              "equalizeMasters"
+                              "equalizeMasters",
+                              "spriteListRequest",
+                              "spriteDataRequest"
         ));
     }
 
@@ -211,6 +213,11 @@
         } else if (type.equals("equalizeMasters")) {
             equalizeMasters(event);
 
+        } else if (type.equals("spriteListRequest")) {
+            sendSpriteList(event);
+        } else if (type.equals("spriteDataRequest")) {
+            sendSpriteData(event);
+
         } else if (type.equals("topoStart")) {
             sendAllInitialData();
         } else if (type.equals("topoStop")) {
@@ -563,6 +570,22 @@
         directory.get(MastershipAdminService.class).balanceRoles();
     }
 
+    // Sends a list of sprite names.
+    private void sendSpriteList(ObjectNode event) {
+        ObjectNode root = mapper.createObjectNode();
+        ArrayNode names = mapper.createArrayNode();
+        get(SpriteService.class).getNames().forEach(names::add);
+        root.set("names", names);
+        sendMessage(envelope("spriteListResponse", number(event, "sid"), root));
+    }
+
+    // Sends requested sprite data.
+    private void sendSpriteData(ObjectNode event) {
+        ObjectNode root = mapper.createObjectNode();
+        root.set("defn", get(SpriteService.class).get(event.path("payload").path("name").asText()));
+        sendMessage(envelope("spriteDataResponse", number(event, "sid"), root));
+    }
+
 
     // Adds all internal listeners.
     private void addListeners() {