Committed by
Gerrit Code Review
Add listner for down paths to path painter App and highlights remove when changing overlay
Change-Id: I1bf94468a61bd1a7211532a5b8e9e6cdfbecbda5
Showing
4 changed files
with
72 additions
and
8 deletions
... | @@ -30,6 +30,9 @@ import org.onosproject.net.device.DeviceService; | ... | @@ -30,6 +30,9 @@ import org.onosproject.net.device.DeviceService; |
30 | import org.onosproject.net.topology.GeoDistanceLinkWeight; | 30 | import org.onosproject.net.topology.GeoDistanceLinkWeight; |
31 | import org.onosproject.net.topology.LinkWeight; | 31 | import org.onosproject.net.topology.LinkWeight; |
32 | import org.onosproject.net.topology.PathService; | 32 | import org.onosproject.net.topology.PathService; |
33 | +import org.onosproject.net.topology.TopologyEvent; | ||
34 | +import org.onosproject.net.topology.TopologyListener; | ||
35 | +import org.onosproject.net.topology.TopologyService; | ||
33 | import org.onosproject.ui.RequestHandler; | 36 | import org.onosproject.ui.RequestHandler; |
34 | import org.onosproject.ui.UiConnection; | 37 | import org.onosproject.ui.UiConnection; |
35 | import org.onosproject.ui.UiMessageHandler; | 38 | import org.onosproject.ui.UiMessageHandler; |
... | @@ -50,6 +53,7 @@ import java.util.Set; | ... | @@ -50,6 +53,7 @@ import java.util.Set; |
50 | */ | 53 | */ |
51 | public class PathPainterTopovMessageHandler extends UiMessageHandler { | 54 | public class PathPainterTopovMessageHandler extends UiMessageHandler { |
52 | 55 | ||
56 | + private static final String PAINTER_CLEAR = "ppTopovClear"; | ||
53 | private static final String PAINTER_SET_SRC = "ppTopovSetSrc"; | 57 | private static final String PAINTER_SET_SRC = "ppTopovSetSrc"; |
54 | private static final String PAINTER_SET_DST = "ppTopovSetDst"; | 58 | private static final String PAINTER_SET_DST = "ppTopovSetDst"; |
55 | private static final String PAINTER_SWAP_SRC_DST = "ppTopovSwapSrcDst"; | 59 | private static final String PAINTER_SWAP_SRC_DST = "ppTopovSwapSrcDst"; |
... | @@ -67,7 +71,10 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { | ... | @@ -67,7 +71,10 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { |
67 | public static final String SRC = "Src"; | 71 | public static final String SRC = "Src"; |
68 | private static LinkWeight linkData; | 72 | private static LinkWeight linkData; |
69 | 73 | ||
74 | + private final TopologyListener topologyListener = new InternalTopologyListener(); | ||
75 | + | ||
70 | private Set<Link> allPathLinks; | 76 | private Set<Link> allPathLinks; |
77 | + private boolean listenersRemoved; | ||
71 | 78 | ||
72 | private enum Mode { | 79 | private enum Mode { |
73 | SHORTEST, DISJOINT, GEODATA, SRLG, INVALID | 80 | SHORTEST, DISJOINT, GEODATA, SRLG, INVALID |
... | @@ -83,6 +90,8 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { | ... | @@ -83,6 +90,8 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { |
83 | private List<Path> paths; | 90 | private List<Path> paths; |
84 | private int pathIndex; | 91 | private int pathIndex; |
85 | 92 | ||
93 | + protected TopologyService topologyService; | ||
94 | + | ||
86 | 95 | ||
87 | // ===============-=-=-=-=-=-======================-=-=-=-=-=-=-================================ | 96 | // ===============-=-=-=-=-=-======================-=-=-=-=-=-=-================================ |
88 | 97 | ||
... | @@ -91,12 +100,22 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { | ... | @@ -91,12 +100,22 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { |
91 | public void init(UiConnection connection, ServiceDirectory directory) { | 100 | public void init(UiConnection connection, ServiceDirectory directory) { |
92 | super.init(connection, directory); | 101 | super.init(connection, directory); |
93 | pathService = directory.get(PathService.class); | 102 | pathService = directory.get(PathService.class); |
103 | + topologyService = directory.get(TopologyService.class); | ||
94 | linkData = new GeoDistanceLinkWeight(directory.get(DeviceService.class)); | 104 | linkData = new GeoDistanceLinkWeight(directory.get(DeviceService.class)); |
105 | + addListeners(); | ||
106 | + } | ||
107 | + | ||
108 | + | ||
109 | + @Override | ||
110 | + public void destroy() { | ||
111 | + removeListeners(); | ||
112 | + super.destroy(); | ||
95 | } | 113 | } |
96 | 114 | ||
97 | @Override | 115 | @Override |
98 | protected Collection<RequestHandler> createRequestHandlers() { | 116 | protected Collection<RequestHandler> createRequestHandlers() { |
99 | return ImmutableSet.of( | 117 | return ImmutableSet.of( |
118 | + new ClearHandler(), | ||
100 | new SetSrcHandler(), | 119 | new SetSrcHandler(), |
101 | new SetDstHandler(), | 120 | new SetDstHandler(), |
102 | new SwapSrcDstHandler(), | 121 | new SwapSrcDstHandler(), |
... | @@ -109,6 +128,20 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { | ... | @@ -109,6 +128,20 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { |
109 | // === ------------------------- | 128 | // === ------------------------- |
110 | // === Handler classes | 129 | // === Handler classes |
111 | 130 | ||
131 | + private final class ClearHandler extends RequestHandler { | ||
132 | + | ||
133 | + public ClearHandler() { | ||
134 | + super(PAINTER_CLEAR); | ||
135 | + } | ||
136 | + | ||
137 | + @Override | ||
138 | + public void process(long sid, ObjectNode payload) { | ||
139 | + src = null; | ||
140 | + dst = null; | ||
141 | + sendMessage(TopoJson.highlightsMessage(new Highlights())); | ||
142 | + } | ||
143 | + } | ||
144 | + | ||
112 | private final class SetSrcHandler extends RequestHandler { | 145 | private final class SetSrcHandler extends RequestHandler { |
113 | 146 | ||
114 | public SetSrcHandler() { | 147 | public SetSrcHandler() { |
... | @@ -333,4 +366,23 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { | ... | @@ -333,4 +366,23 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { |
333 | return NodeBadge.text(type); | 366 | return NodeBadge.text(type); |
334 | } | 367 | } |
335 | 368 | ||
369 | + private synchronized void addListeners() { | ||
370 | + listenersRemoved = false; | ||
371 | + topologyService.addListener(topologyListener); | ||
372 | + } | ||
373 | + private synchronized void removeListeners() { | ||
374 | + if (!listenersRemoved) { | ||
375 | + listenersRemoved = true; | ||
376 | + topologyService.removeListener(topologyListener); | ||
377 | + } | ||
378 | + } | ||
379 | + | ||
380 | + // Link event listener. | ||
381 | + private class InternalTopologyListener implements TopologyListener { | ||
382 | + @Override | ||
383 | + public void event(TopologyEvent event) { | ||
384 | + findAndSendPaths(currentMode); | ||
385 | + } | ||
386 | + } | ||
387 | + | ||
336 | } | 388 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -37,6 +37,12 @@ public class PathPainterTopovOverlay extends UiTopoOverlay { | ... | @@ -37,6 +37,12 @@ public class PathPainterTopovOverlay extends UiTopoOverlay { |
37 | } | 37 | } |
38 | 38 | ||
39 | @Override | 39 | @Override |
40 | + public void deactivate() { | ||
41 | + super.deactivate(); | ||
42 | + log.debug("PathPainterOverlay Deactivated"); | ||
43 | + } | ||
44 | + | ||
45 | + @Override | ||
40 | public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) { | 46 | public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) { |
41 | pp.addButton(SRC_BUTTON).addButton(DST_BUTTON); | 47 | pp.addButton(SRC_BUTTON).addButton(DST_BUTTON); |
42 | } | 48 | } | ... | ... |
... | @@ -31,6 +31,7 @@ | ... | @@ -31,6 +31,7 @@ |
31 | swapMessage = 'ppTopovSwapSrcDst', | 31 | swapMessage = 'ppTopovSwapSrcDst', |
32 | modeMessage = 'ppTopovSetMode', | 32 | modeMessage = 'ppTopovSetMode', |
33 | nextPathMessage = 'ppTopovNextPath', | 33 | nextPathMessage = 'ppTopovNextPath', |
34 | + clearMessage = 'ppTopovClear', | ||
34 | prevPathMessage = 'ppTopovPrevPath'; | 35 | prevPathMessage = 'ppTopovPrevPath'; |
35 | 36 | ||
36 | // internal state | 37 | // internal state |
... | @@ -44,6 +45,10 @@ | ... | @@ -44,6 +45,10 @@ |
44 | // === --------------------------- | 45 | // === --------------------------- |
45 | // === Main API functions | 46 | // === Main API functions |
46 | 47 | ||
48 | + function clear() { | ||
49 | + wss.sendEvent(clearMessage); | ||
50 | + flash.flash('Source node: ' + node.id); | ||
51 | + } | ||
47 | 52 | ||
48 | function setSrc(node) { | 53 | function setSrc(node) { |
49 | wss.sendEvent(srcMessage, { | 54 | wss.sendEvent(srcMessage, { |
... | @@ -107,7 +112,8 @@ | ... | @@ -107,7 +112,8 @@ |
107 | setMode: setMode, | 112 | setMode: setMode, |
108 | nextPath: nextPath, | 113 | nextPath: nextPath, |
109 | prevPath: prevPath, | 114 | prevPath: prevPath, |
110 | - swapSrcDst: swapSrcDst | 115 | + swapSrcDst: swapSrcDst, |
116 | + clear: clear | ||
111 | }; | 117 | }; |
112 | }]); | 118 | }]); |
113 | }()); | 119 | }()); | ... | ... |
... | @@ -19,6 +19,13 @@ | ... | @@ -19,6 +19,13 @@ |
19 | glyphId: 'topo', | 19 | glyphId: 'topo', |
20 | tooltip: 'Path Painter Topo Overlay', | 20 | tooltip: 'Path Painter Topo Overlay', |
21 | 21 | ||
22 | + activate: function () { | ||
23 | + $log.debug("Path painter topology overlay ACTIVATED"); | ||
24 | + }, | ||
25 | + deactivate: function () { | ||
26 | + pps.clear(); | ||
27 | + $log.debug("Path painter topology overlay DEACTIVATED"); | ||
28 | + }, | ||
22 | // These glyphs get installed using the overlayId as a prefix. | 29 | // These glyphs get installed using the overlayId as a prefix. |
23 | // e.g. 'src' is installed as 'pp-overlay-src' | 30 | // e.g. 'src' is installed as 'pp-overlay-src' |
24 | // They can be referenced (from this overlay) as '*src' | 31 | // They can be referenced (from this overlay) as '*src' |
... | @@ -123,13 +130,6 @@ | ... | @@ -123,13 +130,6 @@ |
123 | } | 130 | } |
124 | }, | 131 | }, |
125 | 132 | ||
126 | - activate: function () { | ||
127 | - $log.debug("Path painter topology overlay ACTIVATED"); | ||
128 | - }, | ||
129 | - deactivate: function () { | ||
130 | - $log.debug("Path painter topology overlay DEACTIVATED"); | ||
131 | - }, | ||
132 | - | ||
133 | // detail panel button definitions | 133 | // detail panel button definitions |
134 | buttons: { | 134 | buttons: { |
135 | src: { | 135 | src: { | ... | ... |
-
Please register or login to post a comment