[ONOS-3113] flow-classifier manager modification

Change-Id: I9e7c8f8f397edb36be0a6a4cc53ee2b2174679c5
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
index e3cbf9a..4843884 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
@@ -15,13 +15,14 @@
  */
 package org.onosproject.vtnrsc.flowclassifier;
 
+import org.onosproject.event.ListenerService;
 import org.onosproject.vtnrsc.FlowClassifier;
 import org.onosproject.vtnrsc.FlowClassifierId;
 
 /**
  * Provides Services for Flow Classifier.
  */
-public interface FlowClassifierService {
+public interface FlowClassifierService extends ListenerService<FlowClassifierEvent, FlowClassifierListener> {
 
     /**
      * Check whether Flow Classifier is present based on given Flow Classifier
@@ -79,18 +80,4 @@
      *         false
      */
     boolean removeFlowClassifier(FlowClassifierId id);
-
-    /**
-     * Adds the specified listener to Flow-Classifier manager.
-     *
-     * @param listener Flow-Classifier listener
-     */
-    void addListener(FlowClassifierListener listener);
-
-    /**
-     * Removes the specified listener to Flow-Classifier manager.
-     *
-     * @param listener Flow-Classifier listener
-     */
-    void removeListener(FlowClassifierListener listener);
 }
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
index b29dc7a..18f63b3 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
@@ -25,6 +25,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;
@@ -32,28 +33,27 @@
 import org.onosproject.store.service.WallClockTimestamp;
 import org.onosproject.vtnrsc.FlowClassifierId;
 import org.onosproject.vtnrsc.FlowClassifier;
+import org.onosproject.vtnrsc.flowclassifier.FlowClassifierEvent;
 import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener;
 import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
 import org.slf4j.Logger;
 
-import java.util.Set;
-
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
 
 /**
  * Provides implementation of the Flow Classifier Service.
  */
 @Component(immediate = true)
 @Service
-public class FlowClassifierManager implements FlowClassifierService {
+public class FlowClassifierManager extends AbstractListenerManager<FlowClassifierEvent, FlowClassifierListener>
+        implements FlowClassifierService {
 
     private static final String FLOW_CLASSIFIER_NOT_NULL = "Flow Classifier cannot be null";
     private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "Flow Classifier Id cannot be null";
     private static final String LISTENER_NOT_NULL = "Listener cannot be null";
 
     private final Logger log = getLogger(FlowClassifierManager.class);
-    private final Set<FlowClassifierListener> listeners = Sets.newCopyOnWriteArraySet();
+
     private EventuallyConsistentMap<FlowClassifierId, FlowClassifier> flowClassifierStore;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -75,7 +75,6 @@
     @Deactivate
     protected void deactivate() {
         flowClassifierStore.destroy();
-        listeners.clear();
         log.info("Flow Classifier service deactivated");
     }
 
@@ -145,16 +144,4 @@
         }
         return true;
     }
-
-    @Override
-    public void addListener(FlowClassifierListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.add(listener);
-    }
-
-    @Override
-    public void removeListener(FlowClassifierListener listener) {
-        checkNotNull(listener, LISTENER_NOT_NULL);
-        listeners.remove(listener);
-    }
 }