Added breadcrumbs array to topo2CurrentLayout response.
Included Region name in "closed region" data structures.
Change-Id: I1d4c223255b7ea8239f38c63d4caebe1bdeddf32
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 6d8ae53..6f436a5 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
@@ -34,7 +34,6 @@
import org.onosproject.net.host.HostService;
import org.onosproject.net.intent.IntentService;
import org.onosproject.net.link.LinkService;
-import org.onosproject.net.region.Region;
import org.onosproject.net.statistic.StatisticService;
import org.onosproject.net.topology.TopologyService;
import org.onosproject.ui.model.topo.UiClusterMember;
@@ -170,21 +169,33 @@
/**
* Returns a JSON representation of the layout to use for displaying in
- * the topology view.
+ * the topology view. The identifiers and names of regions from the
+ * current to the root is included, so that the bread-crumb widget can
+ * be rendered.
*
* @param layout the layout to transform
+ * @param crumbs list of layouts in bread-crumb order
* @return a JSON representation of the data
*/
- ObjectNode layout(UiTopoLayout layout) {
- return objectNode()
+ ObjectNode layout(UiTopoLayout layout, List<UiTopoLayout> crumbs) {
+ ObjectNode result = objectNode()
.put("id", layout.id().toString())
.put("parent", nullIsEmpty(layout.parent()))
.put("region", nullIsEmpty(layout.regionId()))
- .put("regionName", regionName(layout.region()));
+ .put("regionName", UiRegion.safeName(layout.region()));
+ addCrumbs(result, crumbs);
+ return result;
}
- private String regionName(Region region) {
- return region == null ? "" : region.name();
+ private void addCrumbs(ObjectNode result, List<UiTopoLayout> crumbs) {
+ ArrayNode trail = arrayNode();
+ crumbs.forEach(c -> {
+ ObjectNode n = objectNode()
+ .put("id", c.regionId().toString())
+ .put("name", UiRegion.safeName(c.region()));
+ trail.add(n);
+ });
+ result.set("crumbs", trail);
}
/**
@@ -364,6 +375,7 @@
private ObjectNode jsonClosedRegion(UiRegion region) {
return objectNode()
.put("id", region.idAsString())
+ .put("name", region.name())
.put("nodeType", REGION)
.put("nDevs", region.deviceCount());
// TODO: complete closed-region details