ONOS-4326: Working on topology topo2start processing.
- Added getPeers() to UiTopoLayoutService.
- Fixed wipe-out command to leave the default layout alone.
- Fixed handling of null-region (associated with default layout).
- Added refresh() method to model cache.
- Fixed regions-topo-2 device IDs

Change-Id: Iee49b47ff6702bed9751be7b63392577422d4763
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
index df6dba9..02df84c 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
@@ -181,7 +181,9 @@
             return payload;
         }
         payload.put("id", region.idAsString());
-        payload.set("subregions", jsonSubRegions(subRegions));
+        if (subRegions != null) {
+            payload.set("subregions", jsonSubRegions(subRegions));
+        }
 
         List<String> layerTags = region.layerOrder();
         List<Set<UiNode>> splitDevices = splitByLayer(layerTags, region.devices());
@@ -226,31 +228,6 @@
         return result;
     }
 
-    /**
-     * Returns a JSON payload that encapsulates the devices, hosts, links that
-     * do not belong to any region.
-     *
-     * @param oDevices  orphan devices
-     * @param oHosts    orphan hosts
-     * @param oLinks    orphan links
-     * @param layerTags layer tags
-     * @return a JSON representation of the data
-     */
-    ObjectNode orphans(Set<UiDevice> oDevices, Set<UiHost> oHosts,
-                       Set<UiLink> oLinks, List<String> layerTags) {
-
-        ObjectNode payload = objectNode();
-
-        List<Set<UiNode>> splitDevices = splitByLayer(layerTags, oDevices);
-        List<Set<UiNode>> splitHosts = splitByLayer(layerTags, oHosts);
-
-        payload.set("devices", jsonGrouped(splitDevices));
-        payload.set("hosts", jsonGrouped(splitHosts));
-        payload.set("links", jsonLinks(oLinks));
-        payload.set("layerOrder", jsonStrings(layerTags));
-
-        return payload;
-    }
 
     private ObjectNode json(UiNode node) {
         if (node instanceof UiRegion) {
@@ -270,7 +247,7 @@
                 .put("id", device.idAsString())
                 .put("type", device.type())
                 .put("online", device.isOnline())
-                .put("master", device.master().toString())
+                .put("master", nullIsEmpty(device.master()))
                 .put("layer", device.layer());
 
         // TODO: complete device details
@@ -303,7 +280,8 @@
 
     private ObjectNode jsonClosedRegion(UiRegion region) {
         return objectNode()
-                .put("id", region.idAsString());
+                .put("id", region.idAsString())
+                .put("nDevs", region.deviceCount());
         // TODO: complete closed-region details
     }