fix: (vNet) listener registry initialization issue
Problem:
1. Listener registry is only initialized in the addListener method.
It will cause NullPointerException in the EventSink's proces method.
Solutions:
1. Initialize the listener in the constructor.
Change-Id: I1eae5f2d52166b04f3e028d22b41414319f75b51
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 866e845..0b0d85c 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
@@ -19,6 +19,7 @@
import org.onosproject.event.Event;
import org.onosproject.event.EventDeliveryService;
import org.onosproject.event.EventListener;
+import org.onosproject.event.ListenerRegistry;
import org.onosproject.event.ListenerService;
import org.onosproject.incubator.net.virtual.NetworkId;
import org.onosproject.incubator.net.virtual.VirtualNetworkService;
@@ -37,11 +38,11 @@
protected EventDeliveryService eventDispatcher;
+ private ListenerRegistry<E, L> listenerRegistry;
+
private VirtualListenerRegistryManager listenerManager =
VirtualListenerRegistryManager.getInstance();
- private Class<? extends Event> eventClass;
-
public AbstractVirtualListenerManager(VirtualNetworkService manager,
NetworkId networkId,
Class<? extends Event> eventClass) {
@@ -49,22 +50,23 @@
this.networkId = networkId;
this.serviceDirectory = manager.getServiceDirectory();
- this.eventClass = eventClass;
-
//Set default event delivery service by default
this.eventDispatcher = serviceDirectory.get(EventDeliveryService.class);
+
+ //Initialize and reference to the listener registry
+ this.listenerRegistry = listenerManager.getRegistry(networkId, eventClass);
}
@Override
@SuppressWarnings("unchecked")
public void addListener(L listener) {
- listenerManager.getRegistry(networkId, eventClass).addListener(listener);
+ listenerRegistry.addListener(listener);
}
@Override
@SuppressWarnings("unchecked")
public void removeListener(L listener) {
- listenerManager.getRegistry(networkId, eventClass).removeListener(listener);
+ listenerRegistry.removeListener(listener);
}
/**