[ONOS-3535] Accumulate control message stats using monitor service

- Augment the control message class to have device id
- Initial implementation of accumulating control message stats
- Add more adpator for unit test
- Change Collection<ControlMessage> to Set<ControlMessage>
- Fix the arithmatic exception
- Fix some javadoc warnings

Change-Id: I2abaf0d91edca5419b26f1c5a69246bcdb9201bf
diff --git a/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageEvent.java b/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageEvent.java
index 83858be..40c3529 100644
--- a/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageEvent.java
+++ b/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageEvent.java
@@ -15,10 +15,10 @@
  */
 package org.onosproject.cpman.message;
 
-import org.onosproject.event.AbstractEvent;
 import org.onosproject.cpman.ControlMessage;
+import org.onosproject.event.AbstractEvent;
 
-import java.util.Collection;
+import java.util.Set;
 
 import static com.google.common.base.MoreObjects.toStringHelper;
 
@@ -26,7 +26,7 @@
  * Describes control message event.
  */
 public class ControlMessageEvent
-        extends AbstractEvent<ControlMessageEvent.Type, Collection<ControlMessage>> {
+        extends AbstractEvent<ControlMessageEvent.Type, Set<ControlMessage>> {
 
     /**
      * Type of control message events.
@@ -44,7 +44,7 @@
      * @param type control message event type
      * @param controlMessages event control message subject
      */
-    public ControlMessageEvent(Type type, Collection<ControlMessage> controlMessages) {
+    public ControlMessageEvent(Type type, Set<ControlMessage> controlMessages) {
         super(type, controlMessages);
     }
 
diff --git a/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageProviderService.java b/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageProviderService.java
index 7a702c2..0472a2f 100644
--- a/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageProviderService.java
+++ b/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageProviderService.java
@@ -19,7 +19,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.provider.ProviderService;
 
-import java.util.Collection;
+import java.util.Set;
 
 /**
  * Service through which control message providers can inject control message
@@ -34,5 +34,5 @@
      * @param deviceId device identifier
      * @param controlMessages a collection of control message stats
      */
-    void updateStatsInfo(DeviceId deviceId, Collection<ControlMessage> controlMessages);
+    void updateStatsInfo(DeviceId deviceId, Set<ControlMessage> controlMessages);
 }
\ No newline at end of file
diff --git a/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageStore.java b/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageStore.java
index 8c6667a..32083b6 100644
--- a/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageStore.java
+++ b/apps/cpman/api/src/main/java/org/onosproject/cpman/message/ControlMessageStore.java
@@ -20,7 +20,7 @@
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.store.Store;
 
-import java.util.Collection;
+import java.util.Set;
 
 /**
  * Manages inventory of control message.
@@ -37,6 +37,6 @@
      * @return ready to send event describing what occurred
      */
     ControlMessageEvent updateStatsInfo(ProviderId providerId, DeviceId deviceId,
-                                        Collection<ControlMessage> controlMessages);
+                                        Set<ControlMessage> controlMessages);
 
 }