GUI -- Further work on refactoring Topology View server side code. Still WIP...
- added topology client heartbeat.
- modified AbstractListenerRegistry to allow for extension.
Change-Id: Ib8ea6ad4ba34f5732d062f1c9ef545f105eb167b
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/TopoUiModelManager.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/TopoUiModelManager.java
index 3a3bf68..c80c2e2 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/TopoUiModelManager.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/TopoUiModelManager.java
@@ -27,7 +27,6 @@
import org.onosproject.cluster.ClusterEvent;
import org.onosproject.cluster.ClusterService;
import org.onosproject.cluster.ControllerNode;
-import org.onosproject.event.AbstractListenerRegistry;
import org.onosproject.event.EventDeliveryService;
import org.onosproject.mastership.MastershipService;
import org.onosproject.net.Device;
@@ -103,9 +102,8 @@
protected EventDeliveryService eventDispatcher;
- private AbstractListenerRegistry<TopoUiEvent, TopoUiListener>
- listenerRegistry = new AbstractListenerRegistry<>();
-
+ private final ModelListenerRegistry listenerRegistry =
+ new ModelListenerRegistry();
private final TopoMessageFactory messageFactory = new TopoMessageFactory();
private final MetaDb metaDb = new MetaDb();
@@ -138,17 +136,6 @@
}
- // TODO: figure out how to cull zombie listeners
- // The problem is when one refreshes the GUI (topology view)
- // a new instance of AltTopoViewMessageHandler is created and added
- // as a listener, but we never got a TopoStop event, which is what
- // causes the listener (for an AltTopoViewMessageHandler instance) to
- // be removed.
- // ==== Somehow need to tie this in to the GUI-disconnected event.
- // This probably requires client-generated heartbeat messages to
- // Keep the connection alive.
-
-
@Override
public void addListener(TopoUiListener listener) {
listenerRegistry.addListener(listener);
@@ -156,7 +143,12 @@
@Override
public void removeListener(TopoUiListener listener) {
- listenerRegistry.removeListener(listener);
+ // we don't really care if the listener is not listed...
+ try {
+ listenerRegistry.removeListener(listener);
+ } catch (IllegalArgumentException e) {
+ log.debug("Oops, listener not registered: {}", listener);
+ }
}
@Override