Renamed AbstractListenerRegistry to ListenerRegistry (since it is not abstract).
- added checkForNonRegistrant() predicate and augmented unit tests.

Change-Id: I7ecc618f01fdc4cead6f143a1e5e0ddd03268efc
diff --git a/core/net/src/main/java/org/onosproject/app/impl/ApplicationManager.java b/core/net/src/main/java/org/onosproject/app/impl/ApplicationManager.java
index 975baa1..a8ff84f 100644
--- a/core/net/src/main/java/org/onosproject/app/impl/ApplicationManager.java
+++ b/core/net/src/main/java/org/onosproject/app/impl/ApplicationManager.java
@@ -33,7 +33,7 @@
 import org.onosproject.core.Application;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.Permission;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.slf4j.Logger;
 
@@ -55,8 +55,8 @@
 
     private static final String APP_ID_NULL = "Application ID cannot be null";
 
-    protected final AbstractListenerRegistry<ApplicationEvent, ApplicationListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<ApplicationEvent, ApplicationListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     private final ApplicationStoreDelegate delegate = new InternalStoreDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java b/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java
index b08c5ca..c8ffe88 100644
--- a/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java
+++ b/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java
@@ -32,7 +32,7 @@
 import org.onosproject.cluster.ClusterStoreDelegate;
 import org.onosproject.cluster.ControllerNode;
 import org.onosproject.cluster.NodeId;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.slf4j.Logger;
 
@@ -54,8 +54,8 @@
 
     private ClusterStoreDelegate delegate = new InternalStoreDelegate();
 
-    protected final AbstractListenerRegistry<ClusterEvent, ClusterEventListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<ClusterEvent, ClusterEventListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected ClusterStore store;
diff --git a/core/net/src/main/java/org/onosproject/cluster/impl/MastershipManager.java b/core/net/src/main/java/org/onosproject/cluster/impl/MastershipManager.java
index cb2fd18..1f3b360 100644
--- a/core/net/src/main/java/org/onosproject/cluster/impl/MastershipManager.java
+++ b/core/net/src/main/java/org/onosproject/cluster/impl/MastershipManager.java
@@ -30,7 +30,7 @@
 import org.onosproject.cluster.NodeId;
 import org.onosproject.cluster.RoleInfo;
 import org.onosproject.core.MetricsHelper;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.mastership.MastershipAdminService;
 import org.onosproject.mastership.MastershipEvent;
@@ -73,8 +73,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    protected final AbstractListenerRegistry<MastershipEvent, MastershipListener>
-    listenerRegistry = new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<MastershipEvent, MastershipListener>
+    listenerRegistry = new ListenerRegistry<>();
 
     private final MastershipStoreDelegate delegate = new InternalDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index 66bfab9..661ddca 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -24,7 +24,7 @@
 import org.apache.felix.scr.annotations.Service;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.cluster.NodeId;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.mastership.MastershipEvent;
 import org.onosproject.mastership.MastershipListener;
@@ -83,8 +83,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    protected final AbstractListenerRegistry<DeviceEvent, DeviceListener> listenerRegistry =
-            new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<DeviceEvent, DeviceListener> listenerRegistry =
+            new ListenerRegistry<>();
 
     private final DeviceStoreDelegate delegate = new InternalStoreDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
index ebc17ca..58ab91f 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
@@ -35,7 +35,7 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.core.IdGenerator;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
@@ -97,8 +97,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerRegistry<FlowRuleEvent, FlowRuleListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    private final ListenerRegistry<FlowRuleEvent, FlowRuleListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     private final FlowRuleStoreDelegate delegate = new InternalStoreDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/net/group/impl/GroupManager.java b/core/net/src/main/java/org/onosproject/net/group/impl/GroupManager.java
index 3c1d77c..0fcb1fc 100644
--- a/core/net/src/main/java/org/onosproject/net/group/impl/GroupManager.java
+++ b/core/net/src/main/java/org/onosproject/net/group/impl/GroupManager.java
@@ -15,13 +15,7 @@
  */
 package org.onosproject.net.group.impl;
 
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-
+import com.google.common.collect.Sets;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -29,8 +23,8 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
 import org.onosproject.core.ApplicationId;
-import org.onosproject.event.AbstractListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.device.DeviceEvent;
 import org.onosproject.net.device.DeviceListener;
@@ -54,7 +48,12 @@
 import org.onosproject.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
-import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Set;
+
+import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Provides implementation of the group service APIs.
@@ -67,8 +66,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerRegistry<GroupEvent, GroupListener>
-                listenerRegistry = new AbstractListenerRegistry<>();
+    private final ListenerRegistry<GroupEvent, GroupListener>
+                listenerRegistry = new ListenerRegistry<>();
     private final GroupStoreDelegate delegate = new InternalGroupStoreDelegate();
     private final DeviceListener deviceListener = new InternalDeviceListener();
 
diff --git a/core/net/src/main/java/org/onosproject/net/host/impl/HostManager.java b/core/net/src/main/java/org/onosproject/net/host/impl/HostManager.java
index 68aff5e..0504442 100644
--- a/core/net/src/main/java/org/onosproject/net/host/impl/HostManager.java
+++ b/core/net/src/main/java/org/onosproject/net/host/impl/HostManager.java
@@ -15,19 +15,17 @@
  */
 package org.onosproject.net.host.impl;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Set;
-
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 import org.onosproject.event.EventDeliveryService;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Host;
@@ -47,11 +45,13 @@
 import org.onosproject.net.packet.PacketService;
 import org.onosproject.net.provider.AbstractProviderRegistry;
 import org.onosproject.net.provider.AbstractProviderService;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.VlanId;
 import org.slf4j.Logger;
 
+import java.util.Set;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.slf4j.LoggerFactory.getLogger;
+
 /**
  * Provides basic implementation of the host SB &amp; NB APIs.
  */
@@ -64,8 +64,8 @@
     public static final String HOST_ID_NULL = "Host ID cannot be null";
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerRegistry<HostEvent, HostListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    private final ListenerRegistry<HostEvent, HostListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     private HostStoreDelegate delegate = new InternalStoreDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
index 70f4c85..10a01ec 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
@@ -24,7 +24,7 @@
 import org.apache.felix.scr.annotations.Service;
 import org.onosproject.core.CoreService;
 import org.onosproject.core.IdGenerator;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.net.flow.FlowRule;
 import org.onosproject.net.flow.FlowRuleOperations;
@@ -83,8 +83,8 @@
     private static final EnumSet<IntentState> RECOMPILE
             = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ);
 
-    private final AbstractListenerRegistry<IntentEvent, IntentListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    private final ListenerRegistry<IntentEvent, IntentListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected CoreService coreService;
diff --git a/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java b/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java
index d2e52a2..75aeb1e 100644
--- a/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java
+++ b/core/net/src/main/java/org/onosproject/net/link/impl/LinkManager.java
@@ -15,16 +15,17 @@
  */
 package org.onosproject.net.link.impl;
 
-import java.util.Set;
-
+import com.google.common.base.Predicate;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Sets;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.event.AbstractListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
@@ -47,9 +48,7 @@
 import org.onosproject.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Sets;
+import java.util.Set;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.slf4j.LoggerFactory.getLogger;
@@ -69,8 +68,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    protected final AbstractListenerRegistry<LinkEvent, LinkListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<LinkEvent, LinkListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     private final LinkStoreDelegate delegate = new InternalStoreDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java b/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java
index ff120fe..57bae5a 100644
--- a/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java
@@ -21,7 +21,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
@@ -66,8 +66,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    protected final AbstractListenerRegistry<LinkResourceEvent, LinkResourceListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<LinkResourceEvent, LinkResourceListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     private LinkResourceStore store;
diff --git a/core/net/src/main/java/org/onosproject/net/topology/impl/TopologyManager.java b/core/net/src/main/java/org/onosproject/net/topology/impl/TopologyManager.java
index 109f11f..956d7a6 100644
--- a/core/net/src/main/java/org/onosproject/net/topology/impl/TopologyManager.java
+++ b/core/net/src/main/java/org/onosproject/net/topology/impl/TopologyManager.java
@@ -21,7 +21,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.event.AbstractListenerRegistry;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.event.Event;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.net.ConnectPoint;
@@ -69,8 +69,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerRegistry<TopologyEvent, TopologyListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    private final ListenerRegistry<TopologyEvent, TopologyListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     private TopologyStoreDelegate delegate = new InternalStoreDelegate();
 
diff --git a/core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java b/core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java
index 4443640..9d42836 100644
--- a/core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java
+++ b/core/net/src/main/java/org/onosproject/net/tunnel/impl/TunnelManager.java
@@ -15,12 +15,6 @@
  */
 package org.onosproject.net.tunnel.impl;
 
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -28,8 +22,8 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
 import org.onosproject.core.CoreService;
-import org.onosproject.event.AbstractListenerRegistry;
 import org.onosproject.event.EventDeliveryService;
+import org.onosproject.event.ListenerRegistry;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Path;
@@ -41,6 +35,7 @@
 import org.onosproject.net.resource.BandwidthResource;
 import org.onosproject.net.tunnel.Label;
 import org.onosproject.net.tunnel.Tunnel;
+import org.onosproject.net.tunnel.Tunnel.Type;
 import org.onosproject.net.tunnel.TunnelAdminService;
 import org.onosproject.net.tunnel.TunnelDescription;
 import org.onosproject.net.tunnel.TunnelEvent;
@@ -52,9 +47,14 @@
 import org.onosproject.net.tunnel.TunnelService;
 import org.onosproject.net.tunnel.TunnelStore;
 import org.onosproject.net.tunnel.TunnelStoreDelegate;
-import org.onosproject.net.tunnel.Tunnel.Type;
 import org.slf4j.Logger;
 
+import java.util.Collection;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+
+import static org.slf4j.LoggerFactory.getLogger;
+
 /**
  * Provides implementation of the tunnel NB/SB APIs.
  */
@@ -67,8 +67,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    protected final AbstractListenerRegistry<TunnelEvent, TunnelListener>
-            listenerRegistry = new AbstractListenerRegistry<>();
+    protected final ListenerRegistry<TunnelEvent, TunnelListener>
+            listenerRegistry = new ListenerRegistry<>();
 
     private final TunnelStoreDelegate delegate = new InternalStoreDelegate();
     private final InternalTunnelListener tunnelListener = new InternalTunnelListener();