fix: (vNet) class load issues for OSGi bundle.

Problem.
1. Inside incubator package, class loader can't search classes defined
   in the other bundles such as onos-core

Solution
1. Added a method to return bundle context, and obtain class loader.

Change-Id: If5ee4cb1a5b9ef5ab7d7e3bbc70408ea8257baea
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java
index e87876c..866e845 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManager.java
@@ -29,9 +29,7 @@
  */
 public abstract class AbstractVirtualListenerManager
         <E extends Event, L extends EventListener<E>>
-    implements ListenerService<E, L>, VnetService {
-
-    private static final String NETWORK_NULL = "Network ID cannot be null";
+        implements ListenerService<E, L>, VnetService {
 
     protected final NetworkId networkId;
     protected final VirtualNetworkService manager;
@@ -39,29 +37,34 @@
 
     protected EventDeliveryService eventDispatcher;
 
-    VirtualListenerRegistryManager listenerManager =
+    private VirtualListenerRegistryManager listenerManager =
             VirtualListenerRegistryManager.getInstance();
 
+    private Class<? extends Event> eventClass;
+
     public AbstractVirtualListenerManager(VirtualNetworkService manager,
-                                          NetworkId networkId) {
+                                          NetworkId networkId,
+                                          Class<? extends Event> eventClass) {
         this.manager = manager;
         this.networkId = networkId;
         this.serviceDirectory = manager.getServiceDirectory();
 
+        this.eventClass = eventClass;
+
         //Set default event delivery service by default
         this.eventDispatcher = serviceDirectory.get(EventDeliveryService.class);
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void addListener(L listener) {
-        listenerManager.getRegistry(networkId, getEventClass())
-                .addListener(listener);
+        listenerManager.getRegistry(networkId, eventClass).addListener(listener);
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void removeListener(L listener) {
-        listenerManager.getRegistry(networkId, getEventClass())
-                .removeListener(listener);
+        listenerManager.getRegistry(networkId, eventClass).removeListener(listener);
     }
 
     /**
@@ -83,23 +86,4 @@
     public NetworkId networkId() {
         return this.networkId;
     }
-
-    /**
-     * Returns the class type of parameter type.
-     * More specifically, it returns the class type of event class.
-     *
-     * @return the class type of provider service of the service
-     */
-    public Class getEventClass() {
-        String className = this.getClass().getGenericSuperclass().toString();
-        String pramType = className.split("<")[1].split(",")[0];
-
-        try {
-            return Class.forName(pramType);
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
 }