ONOS-6259: Topo2 - Implement server-side highlighting model
- Generated highlights message now sent back to the client
  with the event id "topo2Highlights".

Change-Id: I873ebd38a0636a7d9b5c2a6caf98c6b33de2cc87
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java b/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java
index d9edbd7..653b0f9 100644
--- a/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java
+++ b/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java
@@ -28,6 +28,7 @@
 public final class TopoJson {
     // package-private for unit test access
     static final String SHOW_HIGHLIGHTS = "showHighlights";
+    static final String TOPO2_HIGHLIGHTS = "topo2Highlights";
 
     static final String DEVICES = "devices";
     static final String HOSTS = "hosts";
@@ -76,6 +77,17 @@
     }
 
     /**
+     * Returns a formatted message ready to send to the topology-2 view
+     * to render highlights.
+     *
+     * @param highlights highlights model to transform
+     * @return fully formatted "show highlights" message
+     */
+    public static ObjectNode topo2HighlightsMessage(Highlights highlights) {
+        return envelope(TOPO2_HIGHLIGHTS, json(highlights));
+    }
+
+    /**
      * Transforms the given highlights model into a JSON message payload.
      *
      * @param highlights the model to transform
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2TrafficMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2TrafficMessageHandler.java
index 182fbfb..ce7175b 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2TrafficMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2TrafficMessageHandler.java
@@ -25,11 +25,14 @@
 import org.onosproject.ui.UiMessageHandler;
 import org.onosproject.ui.impl.TrafficMonitorBase.Mode;
 import org.onosproject.ui.impl.topo.util.ServicesBundle;
+import org.onosproject.ui.topo.Highlights;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Collection;
 
+import static org.onosproject.ui.topo.TopoJson.topo2HighlightsMessage;
+
 /**
  * Server-side component to handle messages pertaining to topo-2 traffic.
  */
@@ -92,6 +95,15 @@
         traffic.stopMonitoring();
     }
 
+    /**
+     * Sends a highlights message back to the client.
+     *
+     * @param highlights the highlights for transmission
+     */
+    void sendHighlights(Highlights highlights) {
+        sendMessage(topo2HighlightsMessage(highlights));
+    }
+
     // ==================================================================
 
     private final class Topo2AllTraffic extends RequestHandler {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java
index 0653832..8f056fa 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Traffic2Monitor.java
@@ -54,33 +54,25 @@
     @Override
     protected void sendAllFlowTraffic() {
         log.debug("TOPO-2-TRAFFIC: sendAllFlowTraffic");
-        Highlights h = trafficSummary(TrafficLink.StatsType.FLOW_STATS);
-
-        // TODO
+        msgHandler.sendHighlights(trafficSummary(TrafficLink.StatsType.FLOW_STATS));
     }
 
     @Override
     protected void sendAllPortTrafficBits() {
         log.debug("TOPO-2-TRAFFIC: sendAllPortTrafficBits");
-        Highlights h = trafficSummary(TrafficLink.StatsType.PORT_STATS);
-
-        // TODO
+        msgHandler.sendHighlights(trafficSummary(TrafficLink.StatsType.PORT_STATS));
     }
 
     @Override
     protected void sendAllPortTrafficPackets() {
         log.debug("TOPO-2-TRAFFIC: sendAllPortTrafficPackets");
-        Highlights h = trafficSummary(TrafficLink.StatsType.PORT_PACKET_STATS);
-
-        // TODO
+        msgHandler.sendHighlights(trafficSummary(TrafficLink.StatsType.PORT_PACKET_STATS));
     }
 
     @Override
     protected void sendClearHighlights() {
         log.debug("TOPO-2-TRAFFIC: sendClearHighlights");
-        Highlights h = new Highlights();
-
-        // TODO
+        msgHandler.sendHighlights(new Highlights());
     }