GUI -- Beginnings of structure for topology Overlay API.
- Re-implemented RequestSummary / ShowSummary in Alt implementation.

Change-Id: Idb86c7bf3ede8f8815abcb488bbf9b0a7041ef79
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
index b4a5999..6ef6826 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
@@ -29,6 +29,8 @@
 import org.onosproject.ui.UiMessageHandlerFactory;
 import org.onosproject.ui.UiView;
 import org.onosproject.ui.UiViewHidden;
+import org.onosproject.ui.impl.topo.OverlayService;
+import org.onosproject.ui.impl.topo.overlay.SummaryGenerator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,7 +48,8 @@
  */
 @Component(immediate = true)
 @Service
-public class UiExtensionManager implements UiExtensionService, SpriteService {
+public class UiExtensionManager
+        implements UiExtensionService, SpriteService, OverlayService {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
@@ -59,9 +62,13 @@
     // Core views & core extension
     private final UiExtension core = createCoreExtension();
 
+    // Topology Message Handler
+    private final AltTopoViewMessageHandler topoHandler =
+            new AltTopoViewMessageHandler();
+
 
     // Creates core UI extension
-    private static UiExtension createCoreExtension() {
+    private UiExtension createCoreExtension() {
         List<UiView> coreViews = of(
                 new UiView(PLATFORM, "app", "Applications", "nav_apps"),
                 new UiView(PLATFORM, "cluster", "Cluster Nodes", "nav_cluster"),
@@ -78,7 +85,7 @@
         UiMessageHandlerFactory messageHandlerFactory =
                 () -> ImmutableList.of(
                         new TopologyViewMessageHandler(),
-//                        new AltTopoViewMessageHandler(),
+//                        topoHandler,
                         new DeviceViewMessageHandler(),
                         new LinkViewMessageHandler(),
                         new HostViewMessageHandler(),
@@ -119,7 +126,8 @@
     @Override
     public synchronized void unregister(UiExtension extension) {
         extensions.remove(extension);
-        extension.views().stream().map(UiView::id).collect(toSet()).forEach(views::remove);
+        extension.views().stream()
+                .map(UiView::id).collect(toSet()).forEach(views::remove);
     }
 
     @Override
@@ -132,9 +140,10 @@
         return views.get(viewId);
     }
 
-
+    // =====================================================================
     // Provisional tracking of sprite definitions
-    private Map<String, JsonNode> sprites = Maps.newHashMap();
+
+    private final Map<String, JsonNode> sprites = Maps.newHashMap();
 
     @Override
     public Set<String> getNames() {
@@ -152,4 +161,18 @@
         return sprites.get(name);
     }
 
+
+    // =====================================================================
+    // Topology Overlay API -- pass through to topology message handler
+
+    // NOTE: while WIP, comment out calls to topoHandler (for checked in code)
+    @Override
+    public void addSummaryGenerator(String overlayId, SummaryGenerator generator) {
+        topoHandler.addSummaryGenerator(overlayId, generator);
+    }
+
+    @Override
+    public void removeSummaryGenerator(String overlayId) {
+        topoHandler.removeSummaryGenerator(overlayId);
+    }
 }