ONOS-1479 -- GUI - augmenting topology view for extensibility: WIP.
- Major refactoring of TopologyViewMessageHandler and related classes.

Change-Id: I920f7f9f7317f3987a9a8da35ac086e9f8cab8d3
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
index a311b2d..18a5acd 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
@@ -24,7 +24,8 @@
 import org.onosproject.net.link.LinkService;
 import org.onosproject.ui.RequestHandler;
 import org.onosproject.ui.UiMessageHandler;
-import org.onosproject.ui.impl.TopologyViewMessageHandlerBase.BiLink;
+import org.onosproject.ui.impl.topo.BiLink;
+import org.onosproject.ui.impl.topo.TopoUtils;
 import org.onosproject.ui.table.TableModel;
 import org.onosproject.ui.table.TableRequestHandler;
 import org.onosproject.ui.table.cell.ConnectPointFormatter;
@@ -33,13 +34,14 @@
 import java.util.Collection;
 import java.util.Map;
 
-import static org.onosproject.ui.impl.TopologyViewMessageHandlerBase.addLink;
-
 /**
  * Message handler for link view related messages.
  */
 public class LinkViewMessageHandler extends UiMessageHandler {
 
+    private static final String A_BOTH_B = "A ↔ B";
+    private static final String A_SINGLE_B = "A → B";
+
     private static final String LINK_DATA_REQ = "linkDataRequest";
     private static final String LINK_DATA_RESP = "linkDataResponse";
     private static final String LINKS = "links";
@@ -94,38 +96,39 @@
 
             // First consolidate all uni-directional links into two-directional ones.
             Map<LinkKey, BiLink> biLinks = Maps.newHashMap();
-            ls.getLinks().forEach(link -> addLink(biLinks, link));
+            ls.getLinks().forEach(link -> TopoUtils.addLink(biLinks, link));
 
             // Now scan over all bi-links and produce table rows from them.
             biLinks.values().forEach(biLink -> populateRow(tm.addRow(), biLink));
         }
 
         private void populateRow(TableModel.Row row, BiLink biLink) {
-            row.cell(ONE, biLink.one.src())
-                .cell(TWO, biLink.one.dst())
+            row.cell(ONE, biLink.one().src())
+                .cell(TWO, biLink.one().dst())
                 .cell(TYPE, linkType(biLink))
                 .cell(STATE, linkState(biLink))
                 .cell(DIRECTION, linkDir(biLink))
-                .cell(DURABLE, biLink.one.isDurable());
+                .cell(DURABLE, biLink.one().isDurable());
         }
 
         private String linkType(BiLink link) {
             StringBuilder sb = new StringBuilder();
-            sb.append(link.one.type());
-            if (link.two != null && link.two.type() != link.one.type()) {
-                sb.append(" / ").append(link.two.type());
+            sb.append(link.one().type());
+            if (link.two() != null && link.two().type() != link.one().type()) {
+                sb.append(" / ").append(link.two().type());
             }
             return sb.toString();
         }
 
         private String linkState(BiLink link) {
-            return (link.one.state() == Link.State.ACTIVE ||
-                    link.two.state() == Link.State.ACTIVE) ?
+            return (link.one().state() == Link.State.ACTIVE ||
+                    link.two().state() == Link.State.ACTIVE) ?
                     ICON_ID_ONLINE : ICON_ID_OFFLINE;
         }
 
         private String linkDir(BiLink link) {
-            return link.two != null ? "A &harr; B" : "A &rarr; B";
+            return link.two() != null ? A_BOTH_B : A_SINGLE_B;
         }
     }
+
 }