Simon Hunt

Renamed AbstractListenerRegistry to ListenerRegistry (since it is not abstract).

- added checkForNonRegistrant() predicate and augmented unit tests.

Change-Id: I7ecc618f01fdc4cead6f143a1e5e0ddd03268efc
Showing 21 changed files with 177 additions and 132 deletions
...@@ -28,15 +28,20 @@ import static org.slf4j.LoggerFactory.getLogger; ...@@ -28,15 +28,20 @@ import static org.slf4j.LoggerFactory.getLogger;
28 * Base implementation of an event sink and a registry capable of tracking 28 * Base implementation of an event sink and a registry capable of tracking
29 * listeners and dispatching events to them as part of event sink processing. 29 * listeners and dispatching events to them as part of event sink processing.
30 */ 30 */
31 -public class AbstractListenerRegistry<E extends Event, L extends EventListener<E>> 31 +public class ListenerRegistry<E extends Event, L extends EventListener<E>>
32 implements EventSink<E> { 32 implements EventSink<E> {
33 33
34 private final Logger log = getLogger(getClass()); 34 private final Logger log = getLogger(getClass());
35 35
36 - protected final Set<L> listeners = new CopyOnWriteArraySet<>();
37 private volatile boolean shutdown = false; 36 private volatile boolean shutdown = false;
38 37
39 /** 38 /**
39 + * Set of listeners that have registered.
40 + */
41 + protected final Set<L> listeners = new CopyOnWriteArraySet<>();
42 +
43 +
44 + /**
40 * Adds the specified listener. 45 * Adds the specified listener.
41 * 46 *
42 * @param listener listener to be added 47 * @param listener listener to be added
...@@ -53,7 +58,9 @@ public class AbstractListenerRegistry<E extends Event, L extends EventListener<E ...@@ -53,7 +58,9 @@ public class AbstractListenerRegistry<E extends Event, L extends EventListener<E
53 */ 58 */
54 public void removeListener(L listener) { 59 public void removeListener(L listener) {
55 checkNotNull(listener, "Listener cannot be null"); 60 checkNotNull(listener, "Listener cannot be null");
56 - checkArgument(listeners.remove(listener), "Listener not registered"); 61 + if (checkForNonRegistrant()) {
62 + checkArgument(listeners.remove(listener), "Listener not registered");
63 + }
57 } 64 }
58 65
59 @Override 66 @Override
...@@ -68,6 +75,19 @@ public class AbstractListenerRegistry<E extends Event, L extends EventListener<E ...@@ -68,6 +75,19 @@ public class AbstractListenerRegistry<E extends Event, L extends EventListener<E
68 } 75 }
69 76
70 /** 77 /**
78 + * Predicate indicating whether we should throw an exception if the
79 + * argument to {@link #removeListener} is not in the current set of
80 + * listeners.
81 + * <p>
82 + * This default implementation returns <code>true</code>.
83 + *
84 + * @return true if non-listed listeners should cause exception on remove
85 + */
86 + protected boolean checkForNonRegistrant() {
87 + return true;
88 + }
89 +
90 + /**
71 * Reports a problem encountered while processing an event. 91 * Reports a problem encountered while processing an event.
72 * 92 *
73 * @param event event being processed 93 * @param event event being processed
...@@ -92,5 +112,4 @@ public class AbstractListenerRegistry<E extends Event, L extends EventListener<E ...@@ -92,5 +112,4 @@ public class AbstractListenerRegistry<E extends Event, L extends EventListener<E
92 public void deactivate() { 112 public void deactivate() {
93 shutdown = true; 113 shutdown = true;
94 } 114 }
95 -
96 } 115 }
......
...@@ -15,50 +15,79 @@ ...@@ -15,50 +15,79 @@
15 */ 15 */
16 package org.onosproject.event; 16 package org.onosproject.event;
17 17
18 +import org.junit.Before;
18 import org.junit.Test; 19 import org.junit.Test;
19 20
20 import static org.junit.Assert.assertFalse; 21 import static org.junit.Assert.assertFalse;
21 import static org.junit.Assert.assertTrue; 22 import static org.junit.Assert.assertTrue;
22 23
23 /** 24 /**
24 - * Tests of the base listener manager. 25 + * Unit tests for {@link ListenerRegistry}.
25 */ 26 */
26 -public class AbstractListenerRegistryTest { 27 +public class ListenerRegistryTest {
28 +
29 + private static class RelaxedRegistry extends TestListenerRegistry {
30 + @Override
31 + protected boolean checkForNonRegistrant() {
32 + return false;
33 + }
34 + }
35 +
36 + private static final TestEvent FOO_EVENT =
37 + new TestEvent(TestEvent.Type.FOO, "foo");
38 + private static final TestEvent BAR_EVENT =
39 + new TestEvent(TestEvent.Type.BAR, "bar");
40 +
41 + private TestListener listener;
42 + private TestListener secondListener;
43 + private TestListenerRegistry manager;
44 +
45 + @Before
46 + public void setUp() {
47 + listener = new TestListener();
48 + secondListener = new TestListener();
49 + manager = new TestListenerRegistry();
50 + }
27 51
28 @Test 52 @Test
29 public void basics() { 53 public void basics() {
30 - TestListener listener = new TestListener();
31 - TestListener secondListener = new TestListener();
32 - TestListenerRegistry manager = new TestListenerRegistry();
33 manager.addListener(listener); 54 manager.addListener(listener);
34 manager.addListener(secondListener); 55 manager.addListener(secondListener);
35 56
36 - TestEvent event = new TestEvent(TestEvent.Type.BAR, "bar"); 57 + manager.process(BAR_EVENT);
37 - manager.process(event); 58 + assertTrue("BAR not processed", listener.events.contains(BAR_EVENT));
38 - assertTrue("event not processed", listener.events.contains(event)); 59 + assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT));
39 - assertTrue("event not processed", secondListener.events.contains(event));
40 60
41 manager.removeListener(listener); 61 manager.removeListener(listener);
42 62
43 - TestEvent another = new TestEvent(TestEvent.Type.FOO, "foo"); 63 + manager.process(FOO_EVENT);
44 - manager.process(another); 64 + assertFalse("FOO processed", listener.events.contains(FOO_EVENT));
45 - assertFalse("event processed", listener.events.contains(another)); 65 + assertTrue("FOO not processed", secondListener.events.contains(FOO_EVENT));
46 - assertTrue("event not processed", secondListener.events.contains(event));
47 } 66 }
48 67
49 @Test 68 @Test
50 public void badListener() { 69 public void badListener() {
51 - TestListener listener = new BrokenListener(); 70 + listener = new BrokenListener();
52 - TestListener secondListener = new TestListener(); 71 +
53 - TestListenerRegistry manager = new TestListenerRegistry();
54 manager.addListener(listener); 72 manager.addListener(listener);
55 manager.addListener(secondListener); 73 manager.addListener(secondListener);
56 74
57 - TestEvent event = new TestEvent(TestEvent.Type.BAR, "bar"); 75 + manager.process(BAR_EVENT);
58 - manager.process(event); 76 + assertFalse("BAR processed", listener.events.contains(BAR_EVENT));
59 - assertFalse("event processed", listener.events.contains(event));
60 assertFalse("error not reported", manager.errors.isEmpty()); 77 assertFalse("error not reported", manager.errors.isEmpty());
61 - assertTrue("event not processed", secondListener.events.contains(event)); 78 + assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT));
79 + }
80 +
81 + @Test(expected = IllegalArgumentException.class)
82 + public void removeNonListenerCausesException() {
83 + manager.removeListener(listener);
84 + }
85 +
86 + @Test
87 + public void removeNonListenerIgnored() {
88 + manager = new RelaxedRegistry();
89 + manager.removeListener(listener);
90 + assertTrue("what?", manager.listeners.isEmpty());
62 } 91 }
63 92
64 } 93 }
......
...@@ -22,7 +22,7 @@ import java.util.List; ...@@ -22,7 +22,7 @@ import java.util.List;
22 * Test event listener manager fixture. 22 * Test event listener manager fixture.
23 */ 23 */
24 public class TestListenerRegistry 24 public class TestListenerRegistry
25 - extends AbstractListenerRegistry<TestEvent, TestListener> { 25 + extends ListenerRegistry<TestEvent, TestListener> {
26 26
27 public final List<Throwable> errors = new ArrayList<>(); 27 public final List<Throwable> errors = new ArrayList<>();
28 28
......
...@@ -33,7 +33,7 @@ import org.onosproject.app.ApplicationStoreDelegate; ...@@ -33,7 +33,7 @@ import org.onosproject.app.ApplicationStoreDelegate;
33 import org.onosproject.core.Application; 33 import org.onosproject.core.Application;
34 import org.onosproject.core.ApplicationId; 34 import org.onosproject.core.ApplicationId;
35 import org.onosproject.core.Permission; 35 import org.onosproject.core.Permission;
36 -import org.onosproject.event.AbstractListenerRegistry; 36 +import org.onosproject.event.ListenerRegistry;
37 import org.onosproject.event.EventDeliveryService; 37 import org.onosproject.event.EventDeliveryService;
38 import org.slf4j.Logger; 38 import org.slf4j.Logger;
39 39
...@@ -55,8 +55,8 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS ...@@ -55,8 +55,8 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS
55 55
56 private static final String APP_ID_NULL = "Application ID cannot be null"; 56 private static final String APP_ID_NULL = "Application ID cannot be null";
57 57
58 - protected final AbstractListenerRegistry<ApplicationEvent, ApplicationListener> 58 + protected final ListenerRegistry<ApplicationEvent, ApplicationListener>
59 - listenerRegistry = new AbstractListenerRegistry<>(); 59 + listenerRegistry = new ListenerRegistry<>();
60 60
61 private final ApplicationStoreDelegate delegate = new InternalStoreDelegate(); 61 private final ApplicationStoreDelegate delegate = new InternalStoreDelegate();
62 62
......
...@@ -32,7 +32,7 @@ import org.onosproject.cluster.ClusterStore; ...@@ -32,7 +32,7 @@ import org.onosproject.cluster.ClusterStore;
32 import org.onosproject.cluster.ClusterStoreDelegate; 32 import org.onosproject.cluster.ClusterStoreDelegate;
33 import org.onosproject.cluster.ControllerNode; 33 import org.onosproject.cluster.ControllerNode;
34 import org.onosproject.cluster.NodeId; 34 import org.onosproject.cluster.NodeId;
35 -import org.onosproject.event.AbstractListenerRegistry; 35 +import org.onosproject.event.ListenerRegistry;
36 import org.onosproject.event.EventDeliveryService; 36 import org.onosproject.event.EventDeliveryService;
37 import org.slf4j.Logger; 37 import org.slf4j.Logger;
38 38
...@@ -54,8 +54,8 @@ public class ClusterManager implements ClusterService, ClusterAdminService { ...@@ -54,8 +54,8 @@ public class ClusterManager implements ClusterService, ClusterAdminService {
54 54
55 private ClusterStoreDelegate delegate = new InternalStoreDelegate(); 55 private ClusterStoreDelegate delegate = new InternalStoreDelegate();
56 56
57 - protected final AbstractListenerRegistry<ClusterEvent, ClusterEventListener> 57 + protected final ListenerRegistry<ClusterEvent, ClusterEventListener>
58 - listenerRegistry = new AbstractListenerRegistry<>(); 58 + listenerRegistry = new ListenerRegistry<>();
59 59
60 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 60 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
61 protected ClusterStore store; 61 protected ClusterStore store;
......
...@@ -30,7 +30,7 @@ import org.onosproject.cluster.ControllerNode; ...@@ -30,7 +30,7 @@ import org.onosproject.cluster.ControllerNode;
30 import org.onosproject.cluster.NodeId; 30 import org.onosproject.cluster.NodeId;
31 import org.onosproject.cluster.RoleInfo; 31 import org.onosproject.cluster.RoleInfo;
32 import org.onosproject.core.MetricsHelper; 32 import org.onosproject.core.MetricsHelper;
33 -import org.onosproject.event.AbstractListenerRegistry; 33 +import org.onosproject.event.ListenerRegistry;
34 import org.onosproject.event.EventDeliveryService; 34 import org.onosproject.event.EventDeliveryService;
35 import org.onosproject.mastership.MastershipAdminService; 35 import org.onosproject.mastership.MastershipAdminService;
36 import org.onosproject.mastership.MastershipEvent; 36 import org.onosproject.mastership.MastershipEvent;
...@@ -73,8 +73,8 @@ public class MastershipManager ...@@ -73,8 +73,8 @@ public class MastershipManager
73 73
74 private final Logger log = getLogger(getClass()); 74 private final Logger log = getLogger(getClass());
75 75
76 - protected final AbstractListenerRegistry<MastershipEvent, MastershipListener> 76 + protected final ListenerRegistry<MastershipEvent, MastershipListener>
77 - listenerRegistry = new AbstractListenerRegistry<>(); 77 + listenerRegistry = new ListenerRegistry<>();
78 78
79 private final MastershipStoreDelegate delegate = new InternalDelegate(); 79 private final MastershipStoreDelegate delegate = new InternalDelegate();
80 80
......
...@@ -24,7 +24,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; ...@@ -24,7 +24,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality;
24 import org.apache.felix.scr.annotations.Service; 24 import org.apache.felix.scr.annotations.Service;
25 import org.onosproject.cluster.ClusterService; 25 import org.onosproject.cluster.ClusterService;
26 import org.onosproject.cluster.NodeId; 26 import org.onosproject.cluster.NodeId;
27 -import org.onosproject.event.AbstractListenerRegistry; 27 +import org.onosproject.event.ListenerRegistry;
28 import org.onosproject.event.EventDeliveryService; 28 import org.onosproject.event.EventDeliveryService;
29 import org.onosproject.mastership.MastershipEvent; 29 import org.onosproject.mastership.MastershipEvent;
30 import org.onosproject.mastership.MastershipListener; 30 import org.onosproject.mastership.MastershipListener;
...@@ -83,8 +83,8 @@ public class DeviceManager ...@@ -83,8 +83,8 @@ public class DeviceManager
83 83
84 private final Logger log = getLogger(getClass()); 84 private final Logger log = getLogger(getClass());
85 85
86 - protected final AbstractListenerRegistry<DeviceEvent, DeviceListener> listenerRegistry = 86 + protected final ListenerRegistry<DeviceEvent, DeviceListener> listenerRegistry =
87 - new AbstractListenerRegistry<>(); 87 + new ListenerRegistry<>();
88 88
89 private final DeviceStoreDelegate delegate = new InternalStoreDelegate(); 89 private final DeviceStoreDelegate delegate = new InternalStoreDelegate();
90 90
......
...@@ -35,7 +35,7 @@ import org.onosproject.cfg.ComponentConfigService; ...@@ -35,7 +35,7 @@ import org.onosproject.cfg.ComponentConfigService;
35 import org.onosproject.core.ApplicationId; 35 import org.onosproject.core.ApplicationId;
36 import org.onosproject.core.CoreService; 36 import org.onosproject.core.CoreService;
37 import org.onosproject.core.IdGenerator; 37 import org.onosproject.core.IdGenerator;
38 -import org.onosproject.event.AbstractListenerRegistry; 38 +import org.onosproject.event.ListenerRegistry;
39 import org.onosproject.event.EventDeliveryService; 39 import org.onosproject.event.EventDeliveryService;
40 import org.onosproject.net.Device; 40 import org.onosproject.net.Device;
41 import org.onosproject.net.DeviceId; 41 import org.onosproject.net.DeviceId;
...@@ -97,8 +97,8 @@ public class FlowRuleManager ...@@ -97,8 +97,8 @@ public class FlowRuleManager
97 97
98 private final Logger log = getLogger(getClass()); 98 private final Logger log = getLogger(getClass());
99 99
100 - private final AbstractListenerRegistry<FlowRuleEvent, FlowRuleListener> 100 + private final ListenerRegistry<FlowRuleEvent, FlowRuleListener>
101 - listenerRegistry = new AbstractListenerRegistry<>(); 101 + listenerRegistry = new ListenerRegistry<>();
102 102
103 private final FlowRuleStoreDelegate delegate = new InternalStoreDelegate(); 103 private final FlowRuleStoreDelegate delegate = new InternalStoreDelegate();
104 104
......
...@@ -15,13 +15,7 @@ ...@@ -15,13 +15,7 @@
15 */ 15 */
16 package org.onosproject.net.group.impl; 16 package org.onosproject.net.group.impl;
17 17
18 -import static org.slf4j.LoggerFactory.getLogger; 18 +import com.google.common.collect.Sets;
19 -
20 -import java.util.Collection;
21 -import java.util.Collections;
22 -import java.util.Iterator;
23 -import java.util.Set;
24 -
25 import org.apache.felix.scr.annotations.Activate; 19 import org.apache.felix.scr.annotations.Activate;
26 import org.apache.felix.scr.annotations.Component; 20 import org.apache.felix.scr.annotations.Component;
27 import org.apache.felix.scr.annotations.Deactivate; 21 import org.apache.felix.scr.annotations.Deactivate;
...@@ -29,8 +23,8 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -29,8 +23,8 @@ import org.apache.felix.scr.annotations.Reference;
29 import org.apache.felix.scr.annotations.ReferenceCardinality; 23 import org.apache.felix.scr.annotations.ReferenceCardinality;
30 import org.apache.felix.scr.annotations.Service; 24 import org.apache.felix.scr.annotations.Service;
31 import org.onosproject.core.ApplicationId; 25 import org.onosproject.core.ApplicationId;
32 -import org.onosproject.event.AbstractListenerRegistry;
33 import org.onosproject.event.EventDeliveryService; 26 import org.onosproject.event.EventDeliveryService;
27 +import org.onosproject.event.ListenerRegistry;
34 import org.onosproject.net.DeviceId; 28 import org.onosproject.net.DeviceId;
35 import org.onosproject.net.device.DeviceEvent; 29 import org.onosproject.net.device.DeviceEvent;
36 import org.onosproject.net.device.DeviceListener; 30 import org.onosproject.net.device.DeviceListener;
...@@ -54,7 +48,12 @@ import org.onosproject.net.provider.AbstractProviderRegistry; ...@@ -54,7 +48,12 @@ import org.onosproject.net.provider.AbstractProviderRegistry;
54 import org.onosproject.net.provider.AbstractProviderService; 48 import org.onosproject.net.provider.AbstractProviderService;
55 import org.slf4j.Logger; 49 import org.slf4j.Logger;
56 50
57 -import com.google.common.collect.Sets; 51 +import java.util.Collection;
52 +import java.util.Collections;
53 +import java.util.Iterator;
54 +import java.util.Set;
55 +
56 +import static org.slf4j.LoggerFactory.getLogger;
58 57
59 /** 58 /**
60 * Provides implementation of the group service APIs. 59 * Provides implementation of the group service APIs.
...@@ -67,8 +66,8 @@ public class GroupManager ...@@ -67,8 +66,8 @@ public class GroupManager
67 66
68 private final Logger log = getLogger(getClass()); 67 private final Logger log = getLogger(getClass());
69 68
70 - private final AbstractListenerRegistry<GroupEvent, GroupListener> 69 + private final ListenerRegistry<GroupEvent, GroupListener>
71 - listenerRegistry = new AbstractListenerRegistry<>(); 70 + listenerRegistry = new ListenerRegistry<>();
72 private final GroupStoreDelegate delegate = new InternalGroupStoreDelegate(); 71 private final GroupStoreDelegate delegate = new InternalGroupStoreDelegate();
73 private final DeviceListener deviceListener = new InternalDeviceListener(); 72 private final DeviceListener deviceListener = new InternalDeviceListener();
74 73
......
...@@ -15,19 +15,17 @@ ...@@ -15,19 +15,17 @@
15 */ 15 */
16 package org.onosproject.net.host.impl; 16 package org.onosproject.net.host.impl;
17 17
18 -import static com.google.common.base.Preconditions.checkNotNull;
19 -import static org.slf4j.LoggerFactory.getLogger;
20 -
21 -import java.util.Set;
22 -
23 import org.apache.felix.scr.annotations.Activate; 18 import org.apache.felix.scr.annotations.Activate;
24 import org.apache.felix.scr.annotations.Component; 19 import org.apache.felix.scr.annotations.Component;
25 import org.apache.felix.scr.annotations.Deactivate; 20 import org.apache.felix.scr.annotations.Deactivate;
26 import org.apache.felix.scr.annotations.Reference; 21 import org.apache.felix.scr.annotations.Reference;
27 import org.apache.felix.scr.annotations.ReferenceCardinality; 22 import org.apache.felix.scr.annotations.ReferenceCardinality;
28 import org.apache.felix.scr.annotations.Service; 23 import org.apache.felix.scr.annotations.Service;
29 -import org.onosproject.event.AbstractListenerRegistry; 24 +import org.onlab.packet.IpAddress;
25 +import org.onlab.packet.MacAddress;
26 +import org.onlab.packet.VlanId;
30 import org.onosproject.event.EventDeliveryService; 27 import org.onosproject.event.EventDeliveryService;
28 +import org.onosproject.event.ListenerRegistry;
31 import org.onosproject.net.ConnectPoint; 29 import org.onosproject.net.ConnectPoint;
32 import org.onosproject.net.DeviceId; 30 import org.onosproject.net.DeviceId;
33 import org.onosproject.net.Host; 31 import org.onosproject.net.Host;
...@@ -47,11 +45,13 @@ import org.onosproject.net.host.PortAddresses; ...@@ -47,11 +45,13 @@ import org.onosproject.net.host.PortAddresses;
47 import org.onosproject.net.packet.PacketService; 45 import org.onosproject.net.packet.PacketService;
48 import org.onosproject.net.provider.AbstractProviderRegistry; 46 import org.onosproject.net.provider.AbstractProviderRegistry;
49 import org.onosproject.net.provider.AbstractProviderService; 47 import org.onosproject.net.provider.AbstractProviderService;
50 -import org.onlab.packet.IpAddress;
51 -import org.onlab.packet.MacAddress;
52 -import org.onlab.packet.VlanId;
53 import org.slf4j.Logger; 48 import org.slf4j.Logger;
54 49
50 +import java.util.Set;
51 +
52 +import static com.google.common.base.Preconditions.checkNotNull;
53 +import static org.slf4j.LoggerFactory.getLogger;
54 +
55 /** 55 /**
56 * Provides basic implementation of the host SB &amp; NB APIs. 56 * Provides basic implementation of the host SB &amp; NB APIs.
57 */ 57 */
...@@ -64,8 +64,8 @@ public class HostManager ...@@ -64,8 +64,8 @@ public class HostManager
64 public static final String HOST_ID_NULL = "Host ID cannot be null"; 64 public static final String HOST_ID_NULL = "Host ID cannot be null";
65 private final Logger log = getLogger(getClass()); 65 private final Logger log = getLogger(getClass());
66 66
67 - private final AbstractListenerRegistry<HostEvent, HostListener> 67 + private final ListenerRegistry<HostEvent, HostListener>
68 - listenerRegistry = new AbstractListenerRegistry<>(); 68 + listenerRegistry = new ListenerRegistry<>();
69 69
70 private HostStoreDelegate delegate = new InternalStoreDelegate(); 70 private HostStoreDelegate delegate = new InternalStoreDelegate();
71 71
......
...@@ -24,7 +24,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; ...@@ -24,7 +24,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality;
24 import org.apache.felix.scr.annotations.Service; 24 import org.apache.felix.scr.annotations.Service;
25 import org.onosproject.core.CoreService; 25 import org.onosproject.core.CoreService;
26 import org.onosproject.core.IdGenerator; 26 import org.onosproject.core.IdGenerator;
27 -import org.onosproject.event.AbstractListenerRegistry; 27 +import org.onosproject.event.ListenerRegistry;
28 import org.onosproject.event.EventDeliveryService; 28 import org.onosproject.event.EventDeliveryService;
29 import org.onosproject.net.flow.FlowRule; 29 import org.onosproject.net.flow.FlowRule;
30 import org.onosproject.net.flow.FlowRuleOperations; 30 import org.onosproject.net.flow.FlowRuleOperations;
...@@ -83,8 +83,8 @@ public class IntentManager ...@@ -83,8 +83,8 @@ public class IntentManager
83 private static final EnumSet<IntentState> RECOMPILE 83 private static final EnumSet<IntentState> RECOMPILE
84 = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ); 84 = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ);
85 85
86 - private final AbstractListenerRegistry<IntentEvent, IntentListener> 86 + private final ListenerRegistry<IntentEvent, IntentListener>
87 - listenerRegistry = new AbstractListenerRegistry<>(); 87 + listenerRegistry = new ListenerRegistry<>();
88 88
89 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 89 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
90 protected CoreService coreService; 90 protected CoreService coreService;
......
...@@ -15,16 +15,17 @@ ...@@ -15,16 +15,17 @@
15 */ 15 */
16 package org.onosproject.net.link.impl; 16 package org.onosproject.net.link.impl;
17 17
18 -import java.util.Set; 18 +import com.google.common.base.Predicate;
19 - 19 +import com.google.common.collect.FluentIterable;
20 +import com.google.common.collect.Sets;
20 import org.apache.felix.scr.annotations.Activate; 21 import org.apache.felix.scr.annotations.Activate;
21 import org.apache.felix.scr.annotations.Component; 22 import org.apache.felix.scr.annotations.Component;
22 import org.apache.felix.scr.annotations.Deactivate; 23 import org.apache.felix.scr.annotations.Deactivate;
23 import org.apache.felix.scr.annotations.Reference; 24 import org.apache.felix.scr.annotations.Reference;
24 import org.apache.felix.scr.annotations.ReferenceCardinality; 25 import org.apache.felix.scr.annotations.ReferenceCardinality;
25 import org.apache.felix.scr.annotations.Service; 26 import org.apache.felix.scr.annotations.Service;
26 -import org.onosproject.event.AbstractListenerRegistry;
27 import org.onosproject.event.EventDeliveryService; 27 import org.onosproject.event.EventDeliveryService;
28 +import org.onosproject.event.ListenerRegistry;
28 import org.onosproject.net.ConnectPoint; 29 import org.onosproject.net.ConnectPoint;
29 import org.onosproject.net.DeviceId; 30 import org.onosproject.net.DeviceId;
30 import org.onosproject.net.Link; 31 import org.onosproject.net.Link;
...@@ -47,9 +48,7 @@ import org.onosproject.net.provider.AbstractProviderRegistry; ...@@ -47,9 +48,7 @@ import org.onosproject.net.provider.AbstractProviderRegistry;
47 import org.onosproject.net.provider.AbstractProviderService; 48 import org.onosproject.net.provider.AbstractProviderService;
48 import org.slf4j.Logger; 49 import org.slf4j.Logger;
49 50
50 -import com.google.common.base.Predicate; 51 +import java.util.Set;
51 -import com.google.common.collect.FluentIterable;
52 -import com.google.common.collect.Sets;
53 52
54 import static com.google.common.base.Preconditions.checkNotNull; 53 import static com.google.common.base.Preconditions.checkNotNull;
55 import static org.slf4j.LoggerFactory.getLogger; 54 import static org.slf4j.LoggerFactory.getLogger;
...@@ -69,8 +68,8 @@ public class LinkManager ...@@ -69,8 +68,8 @@ public class LinkManager
69 68
70 private final Logger log = getLogger(getClass()); 69 private final Logger log = getLogger(getClass());
71 70
72 - protected final AbstractListenerRegistry<LinkEvent, LinkListener> 71 + protected final ListenerRegistry<LinkEvent, LinkListener>
73 - listenerRegistry = new AbstractListenerRegistry<>(); 72 + listenerRegistry = new ListenerRegistry<>();
74 73
75 private final LinkStoreDelegate delegate = new InternalStoreDelegate(); 74 private final LinkStoreDelegate delegate = new InternalStoreDelegate();
76 75
......
...@@ -21,7 +21,7 @@ import org.apache.felix.scr.annotations.Deactivate; ...@@ -21,7 +21,7 @@ import org.apache.felix.scr.annotations.Deactivate;
21 import org.apache.felix.scr.annotations.Reference; 21 import org.apache.felix.scr.annotations.Reference;
22 import org.apache.felix.scr.annotations.ReferenceCardinality; 22 import org.apache.felix.scr.annotations.ReferenceCardinality;
23 import org.apache.felix.scr.annotations.Service; 23 import org.apache.felix.scr.annotations.Service;
24 -import org.onosproject.event.AbstractListenerRegistry; 24 +import org.onosproject.event.ListenerRegistry;
25 import org.onosproject.event.EventDeliveryService; 25 import org.onosproject.event.EventDeliveryService;
26 import org.onosproject.net.Link; 26 import org.onosproject.net.Link;
27 import org.onosproject.net.intent.IntentId; 27 import org.onosproject.net.intent.IntentId;
...@@ -66,8 +66,8 @@ public class LinkResourceManager implements LinkResourceService { ...@@ -66,8 +66,8 @@ public class LinkResourceManager implements LinkResourceService {
66 66
67 private final Logger log = getLogger(getClass()); 67 private final Logger log = getLogger(getClass());
68 68
69 - protected final AbstractListenerRegistry<LinkResourceEvent, LinkResourceListener> 69 + protected final ListenerRegistry<LinkResourceEvent, LinkResourceListener>
70 - listenerRegistry = new AbstractListenerRegistry<>(); 70 + listenerRegistry = new ListenerRegistry<>();
71 71
72 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 72 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
73 private LinkResourceStore store; 73 private LinkResourceStore store;
......
...@@ -21,7 +21,7 @@ import org.apache.felix.scr.annotations.Deactivate; ...@@ -21,7 +21,7 @@ import org.apache.felix.scr.annotations.Deactivate;
21 import org.apache.felix.scr.annotations.Reference; 21 import org.apache.felix.scr.annotations.Reference;
22 import org.apache.felix.scr.annotations.ReferenceCardinality; 22 import org.apache.felix.scr.annotations.ReferenceCardinality;
23 import org.apache.felix.scr.annotations.Service; 23 import org.apache.felix.scr.annotations.Service;
24 -import org.onosproject.event.AbstractListenerRegistry; 24 +import org.onosproject.event.ListenerRegistry;
25 import org.onosproject.event.Event; 25 import org.onosproject.event.Event;
26 import org.onosproject.event.EventDeliveryService; 26 import org.onosproject.event.EventDeliveryService;
27 import org.onosproject.net.ConnectPoint; 27 import org.onosproject.net.ConnectPoint;
...@@ -69,8 +69,8 @@ public class TopologyManager ...@@ -69,8 +69,8 @@ public class TopologyManager
69 69
70 private final Logger log = getLogger(getClass()); 70 private final Logger log = getLogger(getClass());
71 71
72 - private final AbstractListenerRegistry<TopologyEvent, TopologyListener> 72 + private final ListenerRegistry<TopologyEvent, TopologyListener>
73 - listenerRegistry = new AbstractListenerRegistry<>(); 73 + listenerRegistry = new ListenerRegistry<>();
74 74
75 private TopologyStoreDelegate delegate = new InternalStoreDelegate(); 75 private TopologyStoreDelegate delegate = new InternalStoreDelegate();
76 76
......
...@@ -15,12 +15,6 @@ ...@@ -15,12 +15,6 @@
15 */ 15 */
16 package org.onosproject.net.tunnel.impl; 16 package org.onosproject.net.tunnel.impl;
17 17
18 -import static org.slf4j.LoggerFactory.getLogger;
19 -
20 -import java.util.Collection;
21 -import java.util.Set;
22 -import java.util.concurrent.ExecutorService;
23 -
24 import org.apache.felix.scr.annotations.Activate; 18 import org.apache.felix.scr.annotations.Activate;
25 import org.apache.felix.scr.annotations.Component; 19 import org.apache.felix.scr.annotations.Component;
26 import org.apache.felix.scr.annotations.Deactivate; 20 import org.apache.felix.scr.annotations.Deactivate;
...@@ -28,8 +22,8 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -28,8 +22,8 @@ import org.apache.felix.scr.annotations.Reference;
28 import org.apache.felix.scr.annotations.ReferenceCardinality; 22 import org.apache.felix.scr.annotations.ReferenceCardinality;
29 import org.apache.felix.scr.annotations.Service; 23 import org.apache.felix.scr.annotations.Service;
30 import org.onosproject.core.CoreService; 24 import org.onosproject.core.CoreService;
31 -import org.onosproject.event.AbstractListenerRegistry;
32 import org.onosproject.event.EventDeliveryService; 25 import org.onosproject.event.EventDeliveryService;
26 +import org.onosproject.event.ListenerRegistry;
33 import org.onosproject.net.ConnectPoint; 27 import org.onosproject.net.ConnectPoint;
34 import org.onosproject.net.DeviceId; 28 import org.onosproject.net.DeviceId;
35 import org.onosproject.net.Path; 29 import org.onosproject.net.Path;
...@@ -41,6 +35,7 @@ import org.onosproject.net.provider.ProviderId; ...@@ -41,6 +35,7 @@ import org.onosproject.net.provider.ProviderId;
41 import org.onosproject.net.resource.BandwidthResource; 35 import org.onosproject.net.resource.BandwidthResource;
42 import org.onosproject.net.tunnel.Label; 36 import org.onosproject.net.tunnel.Label;
43 import org.onosproject.net.tunnel.Tunnel; 37 import org.onosproject.net.tunnel.Tunnel;
38 +import org.onosproject.net.tunnel.Tunnel.Type;
44 import org.onosproject.net.tunnel.TunnelAdminService; 39 import org.onosproject.net.tunnel.TunnelAdminService;
45 import org.onosproject.net.tunnel.TunnelDescription; 40 import org.onosproject.net.tunnel.TunnelDescription;
46 import org.onosproject.net.tunnel.TunnelEvent; 41 import org.onosproject.net.tunnel.TunnelEvent;
...@@ -52,9 +47,14 @@ import org.onosproject.net.tunnel.TunnelProviderService; ...@@ -52,9 +47,14 @@ import org.onosproject.net.tunnel.TunnelProviderService;
52 import org.onosproject.net.tunnel.TunnelService; 47 import org.onosproject.net.tunnel.TunnelService;
53 import org.onosproject.net.tunnel.TunnelStore; 48 import org.onosproject.net.tunnel.TunnelStore;
54 import org.onosproject.net.tunnel.TunnelStoreDelegate; 49 import org.onosproject.net.tunnel.TunnelStoreDelegate;
55 -import org.onosproject.net.tunnel.Tunnel.Type;
56 import org.slf4j.Logger; 50 import org.slf4j.Logger;
57 51
52 +import java.util.Collection;
53 +import java.util.Set;
54 +import java.util.concurrent.ExecutorService;
55 +
56 +import static org.slf4j.LoggerFactory.getLogger;
57 +
58 /** 58 /**
59 * Provides implementation of the tunnel NB/SB APIs. 59 * Provides implementation of the tunnel NB/SB APIs.
60 */ 60 */
...@@ -67,8 +67,8 @@ public class TunnelManager extends AbstractProviderRegistry<TunnelProvider, Tunn ...@@ -67,8 +67,8 @@ public class TunnelManager extends AbstractProviderRegistry<TunnelProvider, Tunn
67 67
68 private final Logger log = getLogger(getClass()); 68 private final Logger log = getLogger(getClass());
69 69
70 - protected final AbstractListenerRegistry<TunnelEvent, TunnelListener> 70 + protected final ListenerRegistry<TunnelEvent, TunnelListener>
71 - listenerRegistry = new AbstractListenerRegistry<>(); 71 + listenerRegistry = new ListenerRegistry<>();
72 72
73 private final TunnelStoreDelegate delegate = new InternalStoreDelegate(); 73 private final TunnelStoreDelegate delegate = new InternalStoreDelegate();
74 private final InternalTunnelListener tunnelListener = new InternalTunnelListener(); 74 private final InternalTunnelListener tunnelListener = new InternalTunnelListener();
......
...@@ -33,7 +33,7 @@ import org.onosproject.cluster.LeadershipEvent; ...@@ -33,7 +33,7 @@ import org.onosproject.cluster.LeadershipEvent;
33 import org.onosproject.cluster.LeadershipEventListener; 33 import org.onosproject.cluster.LeadershipEventListener;
34 import org.onosproject.cluster.LeadershipService; 34 import org.onosproject.cluster.LeadershipService;
35 import org.onosproject.cluster.NodeId; 35 import org.onosproject.cluster.NodeId;
36 -import org.onosproject.event.AbstractListenerRegistry; 36 +import org.onosproject.event.ListenerRegistry;
37 import org.onosproject.event.EventDeliveryService; 37 import org.onosproject.event.EventDeliveryService;
38 import org.onosproject.store.cluster.messaging.ClusterCommunicationService; 38 import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
39 import org.onosproject.store.cluster.messaging.ClusterMessage; 39 import org.onosproject.store.cluster.messaging.ClusterMessage;
...@@ -109,7 +109,7 @@ public class HazelcastLeadershipService implements LeadershipService { ...@@ -109,7 +109,7 @@ public class HazelcastLeadershipService implements LeadershipService {
109 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 109 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
110 protected EventDeliveryService eventDispatcher; 110 protected EventDeliveryService eventDispatcher;
111 111
112 - private AbstractListenerRegistry<LeadershipEvent, LeadershipEventListener> 112 + private ListenerRegistry<LeadershipEvent, LeadershipEventListener>
113 listenerRegistry; 113 listenerRegistry;
114 private final Map<String, Topic> topics = Maps.newConcurrentMap(); 114 private final Map<String, Topic> topics = Maps.newConcurrentMap();
115 private NodeId localNodeId; 115 private NodeId localNodeId;
...@@ -122,7 +122,7 @@ public class HazelcastLeadershipService implements LeadershipService { ...@@ -122,7 +122,7 @@ public class HazelcastLeadershipService implements LeadershipService {
122 @Activate 122 @Activate
123 protected void activate() { 123 protected void activate() {
124 localNodeId = clusterService.getLocalNode().id(); 124 localNodeId = clusterService.getLocalNode().id();
125 - listenerRegistry = new AbstractListenerRegistry<>(); 125 + listenerRegistry = new ListenerRegistry<>();
126 eventDispatcher.addSink(LeadershipEvent.class, listenerRegistry); 126 eventDispatcher.addSink(LeadershipEvent.class, listenerRegistry);
127 127
128 TopicConfig topicConfig = new TopicConfig(); 128 TopicConfig topicConfig = new TopicConfig();
......
...@@ -19,7 +19,7 @@ import org.onosproject.cluster.LeadershipEvent; ...@@ -19,7 +19,7 @@ import org.onosproject.cluster.LeadershipEvent;
19 import org.onosproject.cluster.LeadershipEventListener; 19 import org.onosproject.cluster.LeadershipEventListener;
20 import org.onosproject.cluster.LeadershipService; 20 import org.onosproject.cluster.LeadershipService;
21 import org.onosproject.cluster.NodeId; 21 import org.onosproject.cluster.NodeId;
22 -import org.onosproject.event.AbstractListenerRegistry; 22 +import org.onosproject.event.ListenerRegistry;
23 import org.onosproject.event.EventDeliveryService; 23 import org.onosproject.event.EventDeliveryService;
24 import org.onosproject.store.cluster.messaging.ClusterCommunicationService; 24 import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
25 import org.onosproject.store.cluster.messaging.MessageSubject; 25 import org.onosproject.store.cluster.messaging.MessageSubject;
...@@ -85,7 +85,7 @@ public class DistributedLeadershipManager implements LeadershipService { ...@@ -85,7 +85,7 @@ public class DistributedLeadershipManager implements LeadershipService {
85 private ConsistentMap<String, NodeId> leaderMap; 85 private ConsistentMap<String, NodeId> leaderMap;
86 private ConsistentMap<String, List<NodeId>> candidateMap; 86 private ConsistentMap<String, List<NodeId>> candidateMap;
87 87
88 - private AbstractListenerRegistry<LeadershipEvent, LeadershipEventListener> 88 + private ListenerRegistry<LeadershipEvent, LeadershipEventListener>
89 listenerRegistry; 89 listenerRegistry;
90 private final Map<String, Leadership> leaderBoard = Maps.newConcurrentMap(); 90 private final Map<String, Leadership> leaderBoard = Maps.newConcurrentMap();
91 private final Map<String, Leadership> candidateBoard = Maps.newConcurrentMap(); 91 private final Map<String, Leadership> candidateBoard = Maps.newConcurrentMap();
...@@ -135,7 +135,7 @@ public class DistributedLeadershipManager implements LeadershipService { ...@@ -135,7 +135,7 @@ public class DistributedLeadershipManager implements LeadershipService {
135 leadershipStatusBroadcaster.scheduleWithFixedDelay( 135 leadershipStatusBroadcaster.scheduleWithFixedDelay(
136 this::sendLeadershipStatus, 0, LEADERSHIP_STATUS_UPDATE_INTERVAL_SEC, TimeUnit.SECONDS); 136 this::sendLeadershipStatus, 0, LEADERSHIP_STATUS_UPDATE_INTERVAL_SEC, TimeUnit.SECONDS);
137 137
138 - listenerRegistry = new AbstractListenerRegistry<>(); 138 + listenerRegistry = new ListenerRegistry<>();
139 eventDispatcher.addSink(LeadershipEvent.class, listenerRegistry); 139 eventDispatcher.addSink(LeadershipEvent.class, listenerRegistry);
140 140
141 log.info("Started"); 141 log.info("Started");
......
...@@ -15,15 +15,9 @@ ...@@ -15,15 +15,9 @@
15 */ 15 */
16 package org.onosproject.store.flow.impl; 16 package org.onosproject.store.flow.impl;
17 17
18 -import static com.google.common.base.Preconditions.checkNotNull; 18 +import com.google.common.base.Objects;
19 -import static org.slf4j.LoggerFactory.getLogger; 19 +import com.google.common.collect.ImmutableList;
20 -import static org.onosproject.store.flow.ReplicaInfoEvent.Type.MASTER_CHANGED; 20 +import com.google.common.collect.Maps;
21 -import static org.onosproject.store.flow.ReplicaInfoEvent.Type.BACKUPS_CHANGED;
22 -
23 -import java.util.Collections;
24 -import java.util.List;
25 -import java.util.Map;
26 -
27 import org.apache.felix.scr.annotations.Activate; 21 import org.apache.felix.scr.annotations.Activate;
28 import org.apache.felix.scr.annotations.Component; 22 import org.apache.felix.scr.annotations.Component;
29 import org.apache.felix.scr.annotations.Deactivate; 23 import org.apache.felix.scr.annotations.Deactivate;
...@@ -32,8 +26,8 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; ...@@ -32,8 +26,8 @@ import org.apache.felix.scr.annotations.ReferenceCardinality;
32 import org.apache.felix.scr.annotations.Service; 26 import org.apache.felix.scr.annotations.Service;
33 import org.onosproject.cluster.NodeId; 27 import org.onosproject.cluster.NodeId;
34 import org.onosproject.cluster.RoleInfo; 28 import org.onosproject.cluster.RoleInfo;
35 -import org.onosproject.event.AbstractListenerRegistry;
36 import org.onosproject.event.EventDeliveryService; 29 import org.onosproject.event.EventDeliveryService;
30 +import org.onosproject.event.ListenerRegistry;
37 import org.onosproject.mastership.MastershipEvent; 31 import org.onosproject.mastership.MastershipEvent;
38 import org.onosproject.mastership.MastershipListener; 32 import org.onosproject.mastership.MastershipListener;
39 import org.onosproject.mastership.MastershipService; 33 import org.onosproject.mastership.MastershipService;
...@@ -44,9 +38,14 @@ import org.onosproject.store.flow.ReplicaInfoEventListener; ...@@ -44,9 +38,14 @@ import org.onosproject.store.flow.ReplicaInfoEventListener;
44 import org.onosproject.store.flow.ReplicaInfoService; 38 import org.onosproject.store.flow.ReplicaInfoService;
45 import org.slf4j.Logger; 39 import org.slf4j.Logger;
46 40
47 -import com.google.common.base.Objects; 41 +import java.util.Collections;
48 -import com.google.common.collect.ImmutableList; 42 +import java.util.List;
49 -import com.google.common.collect.Maps; 43 +import java.util.Map;
44 +
45 +import static com.google.common.base.Preconditions.checkNotNull;
46 +import static org.onosproject.store.flow.ReplicaInfoEvent.Type.BACKUPS_CHANGED;
47 +import static org.onosproject.store.flow.ReplicaInfoEvent.Type.MASTER_CHANGED;
48 +import static org.slf4j.LoggerFactory.getLogger;
50 49
51 /** 50 /**
52 * Manages replica placement information. 51 * Manages replica placement information.
...@@ -65,8 +64,8 @@ public class ReplicaInfoManager implements ReplicaInfoService { ...@@ -65,8 +64,8 @@ public class ReplicaInfoManager implements ReplicaInfoService {
65 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 64 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
66 protected MastershipService mastershipService; 65 protected MastershipService mastershipService;
67 66
68 - protected final AbstractListenerRegistry<ReplicaInfoEvent, ReplicaInfoEventListener> 67 + protected final ListenerRegistry<ReplicaInfoEvent, ReplicaInfoEventListener>
69 - listenerRegistry = new AbstractListenerRegistry<>(); 68 + listenerRegistry = new ListenerRegistry<>();
70 69
71 private final Map<DeviceId, ReplicaInfo> deviceReplicaInfoMap = Maps.newConcurrentMap(); 70 private final Map<DeviceId, ReplicaInfo> deviceReplicaInfoMap = Maps.newConcurrentMap();
72 71
......
...@@ -15,25 +15,18 @@ ...@@ -15,25 +15,18 @@
15 */ 15 */
16 package org.onosproject.store.flow.impl; 16 package org.onosproject.store.flow.impl;
17 17
18 -import static com.google.common.base.Preconditions.checkState; 18 +import com.google.common.base.Optional;
19 -import static org.junit.Assert.*; 19 +import com.google.common.collect.Maps;
20 -
21 -import java.util.Collections;
22 -import java.util.Map;
23 -import java.util.LinkedList;
24 -import java.util.concurrent.CountDownLatch;
25 -import java.util.concurrent.TimeUnit;
26 -
27 import org.junit.After; 20 import org.junit.After;
28 import org.junit.Before; 21 import org.junit.Before;
29 import org.junit.Test; 22 import org.junit.Test;
30 import org.onosproject.cluster.NodeId; 23 import org.onosproject.cluster.NodeId;
31 import org.onosproject.cluster.RoleInfo; 24 import org.onosproject.cluster.RoleInfo;
32 -import org.onosproject.event.AbstractListenerRegistry;
33 import org.onosproject.event.DefaultEventSinkRegistry; 25 import org.onosproject.event.DefaultEventSinkRegistry;
34 import org.onosproject.event.Event; 26 import org.onosproject.event.Event;
35 import org.onosproject.event.EventDeliveryService; 27 import org.onosproject.event.EventDeliveryService;
36 import org.onosproject.event.EventSink; 28 import org.onosproject.event.EventSink;
29 +import org.onosproject.event.ListenerRegistry;
37 import org.onosproject.mastership.MastershipEvent; 30 import org.onosproject.mastership.MastershipEvent;
38 import org.onosproject.mastership.MastershipEvent.Type; 31 import org.onosproject.mastership.MastershipEvent.Type;
39 import org.onosproject.mastership.MastershipListener; 32 import org.onosproject.mastership.MastershipListener;
...@@ -45,8 +38,15 @@ import org.onosproject.store.flow.ReplicaInfoEvent; ...@@ -45,8 +38,15 @@ import org.onosproject.store.flow.ReplicaInfoEvent;
45 import org.onosproject.store.flow.ReplicaInfoEventListener; 38 import org.onosproject.store.flow.ReplicaInfoEventListener;
46 import org.onosproject.store.flow.ReplicaInfoService; 39 import org.onosproject.store.flow.ReplicaInfoService;
47 40
48 -import com.google.common.base.Optional; 41 +import java.util.Collections;
49 -import com.google.common.collect.Maps; 42 +import java.util.LinkedList;
43 +import java.util.Map;
44 +import java.util.concurrent.CountDownLatch;
45 +import java.util.concurrent.TimeUnit;
46 +
47 +import static com.google.common.base.Preconditions.checkState;
48 +import static org.junit.Assert.assertEquals;
49 +import static org.junit.Assert.assertTrue;
50 50
51 public class ReplicaInfoManagerTest { 51 public class ReplicaInfoManagerTest {
52 52
...@@ -58,14 +58,14 @@ public class ReplicaInfoManagerTest { ...@@ -58,14 +58,14 @@ public class ReplicaInfoManagerTest {
58 private ReplicaInfoManager mgr; 58 private ReplicaInfoManager mgr;
59 private ReplicaInfoService service; 59 private ReplicaInfoService service;
60 60
61 - private AbstractListenerRegistry<MastershipEvent, MastershipListener> 61 + private ListenerRegistry<MastershipEvent, MastershipListener>
62 mastershipListenerRegistry; 62 mastershipListenerRegistry;
63 private TestEventDispatcher eventDispatcher; 63 private TestEventDispatcher eventDispatcher;
64 64
65 65
66 @Before 66 @Before
67 public void setUp() throws Exception { 67 public void setUp() throws Exception {
68 - mastershipListenerRegistry = new AbstractListenerRegistry<>(); 68 + mastershipListenerRegistry = new ListenerRegistry<>();
69 69
70 mgr = new ReplicaInfoManager(); 70 mgr = new ReplicaInfoManager();
71 service = mgr; 71 service = mgr;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
17 17
18 package org.onosproject.ui.impl.topo; 18 package org.onosproject.ui.impl.topo;
19 19
20 -import org.onosproject.event.AbstractListenerRegistry; 20 +import org.onosproject.event.ListenerRegistry;
21 import org.slf4j.Logger; 21 import org.slf4j.Logger;
22 22
23 import java.util.HashSet; 23 import java.util.HashSet;
...@@ -31,7 +31,7 @@ import static org.slf4j.LoggerFactory.getLogger; ...@@ -31,7 +31,7 @@ import static org.slf4j.LoggerFactory.getLogger;
31 */ 31 */
32 // package private 32 // package private
33 class ModelListenerRegistry 33 class ModelListenerRegistry
34 - extends AbstractListenerRegistry<TopoUiEvent, TopoUiListener> { 34 + extends ListenerRegistry<TopoUiEvent, TopoUiListener> {
35 35
36 private final Logger log = getLogger(getClass()); 36 private final Logger log = getLogger(getClass());
37 37
...@@ -58,4 +58,9 @@ class ModelListenerRegistry ...@@ -58,4 +58,9 @@ class ModelListenerRegistry
58 removeListener(z); 58 removeListener(z);
59 } 59 }
60 } 60 }
61 +
62 + @Override
63 + protected boolean checkForNonRegistrant() {
64 + return false;
65 + }
61 } 66 }
......
...@@ -143,12 +143,7 @@ public class TopoUiModelManager implements TopoUiModelService { ...@@ -143,12 +143,7 @@ public class TopoUiModelManager implements TopoUiModelService {
143 143
144 @Override 144 @Override
145 public void removeListener(TopoUiListener listener) { 145 public void removeListener(TopoUiListener listener) {
146 - // we don't really care if the listener is not listed... 146 + listenerRegistry.removeListener(listener);
147 - try {
148 - listenerRegistry.removeListener(listener);
149 - } catch (IllegalArgumentException e) {
150 - log.debug("Oops, listener not registered: {}", listener);
151 - }
152 } 147 }
153 148
154 @Override 149 @Override
......