[ONOS-5833] (vCore) Refactor vnet services
to enable event delivery mechanism

Changes
1. Abstact Vnet Listener Manager is added
2. Refactor Vnet services to use it

Change-Id: I178342bfc882c0739f216960358a281903e1385a
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceManager.java
index 4b9221e..5f8f433 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceManager.java
@@ -17,12 +17,11 @@
 package org.onosproject.incubator.net.virtual.impl;
 
 import com.google.common.collect.ImmutableList;
-import org.onosproject.event.AbstractListenerManager;
+import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.incubator.net.virtual.VirtualDevice;
-import org.onosproject.incubator.net.virtual.VirtualNetwork;
 import org.onosproject.incubator.net.virtual.VirtualNetworkService;
 import org.onosproject.incubator.net.virtual.VirtualPort;
-import org.onosproject.incubator.net.virtual.VnetService;
+import org.onosproject.incubator.net.virtual.event.AbstractVirtualListenerManager;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.MastershipRole;
@@ -43,45 +42,39 @@
  * Device service implementation built on the virtual network service.
  */
 public class VirtualNetworkDeviceManager
-        extends AbstractListenerManager<DeviceEvent, DeviceListener>
-        implements DeviceService, VnetService {
+        extends AbstractVirtualListenerManager<DeviceEvent, DeviceListener>
+        implements DeviceService {
 
-    private static final String NETWORK_NULL = "Network ID cannot be null";
     private static final String TYPE_NULL = "Type cannot be null";
     private static final String DEVICE_NULL = "Device cannot be null";
     private static final String PORT_NUMBER_NULL = "PortNumber cannot be null";
 
-    private final VirtualNetwork network;
-    private final VirtualNetworkService manager;
-
     /**
      * Creates a new VirtualNetworkDeviceService object.
      *
      * @param virtualNetworkManager virtual network manager service
-     * @param network               virtual network
+     * @param networkId a virtual network identifier
      */
     public VirtualNetworkDeviceManager(VirtualNetworkService virtualNetworkManager,
-                                       VirtualNetwork network) {
-        checkNotNull(network, NETWORK_NULL);
-        this.network = network;
-        this.manager = virtualNetworkManager;
+                                       NetworkId networkId) {
+        super(virtualNetworkManager, networkId);
     }
 
     @Override
     public int getDeviceCount() {
-        return manager.getVirtualDevices(this.network.id()).size();
+        return manager.getVirtualDevices(this.networkId).size();
     }
 
     @Override
     public Iterable<Device> getDevices() {
         return manager.getVirtualDevices(
-                this.network.id()).stream().collect(Collectors.toSet());
+                this.networkId).stream().collect(Collectors.toSet());
     }
 
     @Override
     public Iterable<Device> getDevices(Device.Type type) {
         checkNotNull(type, TYPE_NULL);
-        return manager.getVirtualDevices(this.network.id())
+        return manager.getVirtualDevices(this.networkId)
                 .stream()
                 .filter(device -> type.equals(device.type()))
                 .collect(Collectors.toSet());
@@ -101,7 +94,7 @@
     public Device getDevice(DeviceId deviceId) {
         checkNotNull(deviceId, DEVICE_NULL);
         Optional<VirtualDevice> foundDevice =
-                manager.getVirtualDevices(this.network.id())
+                manager.getVirtualDevices(this.networkId)
                 .stream()
                 .filter(device -> deviceId.equals(device.id()))
                 .findFirst();
@@ -121,7 +114,7 @@
     @Override
     public List<Port> getPorts(DeviceId deviceId) {
         checkNotNull(deviceId, DEVICE_NULL);
-        return manager.getVirtualPorts(this.network.id(), deviceId)
+        return manager.getVirtualPorts(this.networkId, deviceId)
                 .stream()
                 .collect(Collectors.toList());
     }
@@ -163,7 +156,7 @@
         checkNotNull(deviceId, DEVICE_NULL);
 
         Optional<VirtualPort> foundPort =
-                manager.getVirtualPorts(this.network.id(), deviceId)
+                manager.getVirtualPorts(this.networkId, deviceId)
                 .stream()
                 .filter(port -> port.number().equals(portNumber))
                 .findFirst();
@@ -179,11 +172,6 @@
     }
 
     @Override
-    public VirtualNetwork network() {
-        return network;
-    }
-
-    @Override
     public String localStatus(DeviceId deviceId) {
         // TODO not supported at this time
         return null;