[ONOS-3110] port-pair manager modification

Change-Id: I0ad39054182016e09b0c665270f70de29cccc56a
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java
index e98a6a2..eebd714 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java
@@ -15,13 +15,13 @@
  */
 package org.onosproject.vtnrsc.portpair;
 
+import org.onosproject.event.ListenerService;
 import org.onosproject.vtnrsc.PortPair;
 import org.onosproject.vtnrsc.PortPairId;
-
 /**
  * Service for interacting with the inventory of port pairs.
  */
-public interface PortPairService {
+public interface PortPairService extends ListenerService<PortPairEvent, PortPairListener> {
 
     /**
      * Returns if the port pair is existed.
@@ -77,18 +77,4 @@
      * @return true if the give port pair is deleted successfully.
      */
     boolean removePortPair(PortPairId portPairId);
-
-    /**
-     * Adds the specified listener to Port-Pair manager.
-     *
-     * @param listener Port-Pair listener
-     */
-    void addListener(PortPairListener listener);
-
-    /**
-     * Removes the specified listener to Port-Pair manager.
-     *
-     * @param listener Port-Pair listener
-     */
-    void removeListener(PortPairListener listener);
 }
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java
index ad6fd4b..827c481 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java
@@ -19,7 +19,6 @@
 import static org.slf4j.LoggerFactory.getLogger;
 
 import java.util.Collections;
-import java.util.Set;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -28,6 +27,7 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
+import org.onosproject.event.AbstractListenerManager;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.EventuallyConsistentMap;
 import org.onosproject.store.service.MultiValuedTimestamp;
@@ -35,25 +35,25 @@
 import org.onosproject.store.service.WallClockTimestamp;
 import org.onosproject.vtnrsc.PortPair;
 import org.onosproject.vtnrsc.PortPairId;
+import org.onosproject.vtnrsc.portpair.PortPairEvent;
 import org.onosproject.vtnrsc.portpair.PortPairListener;
 import org.onosproject.vtnrsc.portpair.PortPairService;
 import org.slf4j.Logger;
 
-import com.google.common.collect.Sets;
-
 /**
  * Provides implementation of the portPairService.
  */
 @Component(immediate = true)
 @Service
-public class PortPairManager implements PortPairService {
+public class PortPairManager extends AbstractListenerManager<PortPairEvent, PortPairListener> implements
+        PortPairService {
 
     private static final String PORT_PAIR_ID_NULL = "PortPair ID cannot be null";
     private static final String PORT_PAIR_NULL = "PortPair cannot be null";
     private static final String LISTENER_NOT_NULL = "Listener cannot be null";
 
     private final Logger log = getLogger(getClass());
-    private final Set<PortPairListener> listeners = Sets.newCopyOnWriteArraySet();
+
     private EventuallyConsistentMap<PortPairId, PortPair> portPairStore;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -67,10 +67,11 @@
                 .register(MultiValuedTimestamp.class)
                 .register(PortPair.class);
 
-        portPairStore = storageService
-                .<PortPairId, PortPair>eventuallyConsistentMapBuilder()
-                .withName("portpairstore").withSerializer(serializer)
-                .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
+        portPairStore = storageService.<PortPairId, PortPair>eventuallyConsistentMapBuilder()
+                .withName("portpairstore")
+                .withSerializer(serializer)
+                .withTimestampProvider((k, v) -> new WallClockTimestamp())
+                .build();
 
         log.info("Started");
     }
@@ -78,7 +79,6 @@
     @Deactivate
     public void deactivate() {
         portPairStore.destroy();
-        listeners.clear();
         log.info("Stopped");
     }
 
@@ -110,8 +110,7 @@
 
         portPairStore.put(portPair.portPairId(), portPair);
         if (!portPairStore.containsKey(portPair.portPairId())) {
-            log.debug("The portPair is created failed which identifier was {}", portPair.portPairId()
-                      .toString());
+            log.debug("The portPair is created failed which identifier was {}", portPair.portPairId().toString());
             return false;
         }
         return true;
@@ -122,16 +121,14 @@
         checkNotNull(portPair, PORT_PAIR_NULL);
 
         if (!portPairStore.containsKey(portPair.portPairId())) {
-            log.debug("The portPair is not exist whose identifier was {} ",
-                      portPair.portPairId().toString());
+            log.debug("The portPair is not exist whose identifier was {} ", portPair.portPairId().toString());
             return false;
         }
 
         portPairStore.put(portPair.portPairId(), portPair);
 
         if (!portPair.equals(portPairStore.get(portPair.portPairId()))) {
-            log.debug("The portPair is updated failed whose identifier was {} ",
-                      portPair.portPairId().toString());
+            log.debug("The portPair is updated failed whose identifier was {} ", portPair.portPairId().toString());
             return false;
         }
         return true;
@@ -143,22 +140,9 @@
 
         portPairStore.remove(portPairId);
         if (portPairStore.containsKey(portPairId)) {
-            log.debug("The portPair is removed failed whose identifier was {}",
-                      portPairId.toString());
+            log.debug("The portPair is removed failed whose identifier was {}", portPairId.toString());
             return false;
         }
         return true;
     }
-
-    @Override
-    public void addListener(PortPairListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(PortPairListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
 }