Added ability for commands to post properties to be used as params of other commands.

Starting to add monitor GUI.

Change-Id: I9fcf1568d0de27dfd1c19e875f8646fd731a1dfa
diff --git a/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java b/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java
index 6796c6b..a870500 100644
--- a/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java
+++ b/utils/stc/src/main/java/org/onlab/stc/MonitorWebSocketServlet.java
@@ -15,6 +15,7 @@
  */
 package org.onlab.stc;
 
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.io.ByteStreams;
 import com.google.common.net.MediaType;
 import org.eclipse.jetty.websocket.WebSocket;
@@ -34,11 +35,13 @@
 /**
  * Web socket servlet capable of creating web sockets for the STC monitor.
  */
-public class MonitorWebSocketServlet extends WebSocketServlet {
+public class MonitorWebSocketServlet extends WebSocketServlet
+        implements MonitorDelegate {
 
     private static final long PING_DELAY_MS = 5000;
     private static final String DOT = ".";
 
+    private static Monitor monitor;
     private static MonitorWebSocketServlet instance;
 
     private final Set<MonitorWebSocket> sockets = new HashSet<>();
@@ -46,6 +49,15 @@
     private final TimerTask pruner = new Pruner();
 
     /**
+     * Binds the shared process flow monitor.
+     *
+     * @param m process monitor reference
+     */
+    public static void setMonitor(Monitor m) {
+        monitor = m;
+    }
+
+    /**
      * Closes all currently open monitor web-sockets.
      */
     public static void closeAll() {
@@ -59,7 +71,7 @@
     public void init() throws ServletException {
         super.init();
         instance = this;
-        System.out.println("Yo!!!!");
+        monitor.setDelegate(this);
         timer.schedule(pruner, PING_DELAY_MS, PING_DELAY_MS);
     }
 
@@ -92,14 +104,20 @@
 
     @Override
     public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) {
-        System.out.println("Wazup????");
-        MonitorWebSocket socket = new MonitorWebSocket();
+        MonitorWebSocket socket = new MonitorWebSocket(monitor);
         synchronized (sockets) {
             sockets.add(socket);
         }
         return socket;
     }
 
+    @Override
+    public void notify(ObjectNode event) {
+        if (instance != null) {
+            instance.sockets.forEach(ws -> ws.sendMessage(event));
+        }
+    }
+
     // Task for pruning web-sockets that are idle.
     private class Pruner extends TimerTask {
         @Override