ONOS-3347 - HostMoved event now processed correctly.
- added new DefaultHashMap utility class
- updated TopoViewMsgHdlrBase for cleaner event translation.

Change-Id: I1c5e8c981e2d617366c25f497dc9336e09684a2e
diff --git a/web/gui/src/main/webapp/app/view/topo/topoForce.js b/web/gui/src/main/webapp/app/view/topo/topoForce.js
index 844d7dc..175ee79 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -187,6 +187,35 @@
         }
     }
 
+    function moveHost(data) {
+        var id = data.id,
+            d = lu[id],
+            lnk;
+        if (d) {
+            // first remove the old host link
+            removeLinkElement(d.linkData);
+
+            // merge new data
+            angular.extend(d, data);
+            if (tms.positionNode(d, true)) {
+                sendUpdateMeta(d);
+            }
+
+            // now create a new host link
+            lnk = tms.createHostLink(data);
+            if (lnk) {
+                d.linkData = lnk;
+                network.links.push(lnk);
+                lu[d.ingress] = lnk;
+                lu[d.egress] = lnk;
+            }
+
+            updateNodes();
+            updateLinks();
+            fResume();
+        }
+    }
+
     function removeHost(data) {
         var id = data.id,
             d = lu[id];
@@ -1142,6 +1171,7 @@
                 removeDevice: removeDevice,
                 addHost: addHost,
                 updateHost: updateHost,
+                moveHost: moveHost,
                 removeHost: removeHost,
                 addLink: addLink,
                 updateLink: updateLink,