MessageSpy should not be generic
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / ofpspecific / MessageIntelligenceAgencyImpl.java
index 75873784d9bbb605039755054d51b563fad42f94..098ef6faeb3118335845eaabd50aaf48dcbd0e66 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.openflowplugin.impl.statistics.ofpspecific;
 
+import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -15,6 +16,7 @@ import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicLongFieldUpdater;
+import javax.annotation.Nonnull;
 import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -24,12 +26,13 @@ import org.slf4j.LoggerFactory;
  * Class counts message of {@link org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy.STATISTIC_GROUP} type
  * and provides info as debug log.
  */
-public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<Class> {
+public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency, MessageIntelligenceAgencyMXBean {
 
     private static final Logger LOG = LoggerFactory.getLogger(MessageIntelligenceAgencyImpl.class);
 
     private static final class MessageCounters {
         private static final AtomicLongFieldUpdater<MessageCounters> UPDATER = AtomicLongFieldUpdater.newUpdater(MessageCounters.class, "current");
+        @SuppressWarnings("unused")
         private volatile long current;
         private long cumulative;
 
@@ -48,10 +51,11 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<
         }
     }
 
-    private final ConcurrentMap<STATISTIC_GROUP, ConcurrentMap<Class, MessageCounters>> inputStats = new ConcurrentHashMap<>();
+    private final ConcurrentMap<STATISTIC_GROUP, ConcurrentMap<Class<?>, MessageCounters>> inputStats = new ConcurrentHashMap<>();
 
     @Override
-    public void spyMessage(final Class message, final STATISTIC_GROUP statGroup) {
+    public void spyMessage(@Nonnull final Class<?> message, final STATISTIC_GROUP statGroup) {
+        Preconditions.checkNotNull(message, "Message can't be null.");
         getCounters(message, statGroup).increment();
     }
 
@@ -60,13 +64,13 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<
      * @param statGroup TODO
      * @return
      */
-    private MessageCounters getCounters(final Class message, final STATISTIC_GROUP statGroup) {
-        ConcurrentMap<Class, MessageCounters> groupData = getOrCreateGroupData(statGroup);
+    private MessageCounters getCounters(final Class<?> message, final STATISTIC_GROUP statGroup) {
+        ConcurrentMap<Class<?>, MessageCounters> groupData = getOrCreateGroupData(statGroup);
         MessageCounters counters = getOrCreateCountersPair(message, groupData);
         return counters;
     }
 
-    private static MessageCounters getOrCreateCountersPair(final Class msgType, final ConcurrentMap<Class, MessageCounters> groupData) {
+    private static MessageCounters getOrCreateCountersPair(final Class<?> msgType, final ConcurrentMap<Class<?>, MessageCounters> groupData) {
         final MessageCounters lookup = groupData.get(msgType);
         if (lookup != null) {
             return lookup;
@@ -78,14 +82,14 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<
 
     }
 
-    private ConcurrentMap<Class, MessageCounters> getOrCreateGroupData(final STATISTIC_GROUP statGroup) {
-        final ConcurrentMap<Class, MessageCounters> lookup = inputStats.get(statGroup);
+    private ConcurrentMap<Class<?>, MessageCounters> getOrCreateGroupData(final STATISTIC_GROUP statGroup) {
+        final ConcurrentMap<Class<?>, MessageCounters> lookup = inputStats.get(statGroup);
         if (lookup != null) {
             return lookup;
         }
 
-        final ConcurrentMap<Class, MessageCounters> newmap = new ConcurrentHashMap<>();
-        final ConcurrentMap<Class, MessageCounters> check = inputStats.putIfAbsent(statGroup, newmap);
+        final ConcurrentMap<Class<?>, MessageCounters> newmap = new ConcurrentHashMap<>();
+        final ConcurrentMap<Class<?>, MessageCounters> check = inputStats.putIfAbsent(statGroup, newmap);
 
         return check == null ? newmap : check;
     }
@@ -105,9 +109,9 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<
         List<String> dump = new ArrayList<>();
 
         for (STATISTIC_GROUP statGroup : STATISTIC_GROUP.values()) {
-            Map<Class, MessageCounters> groupData = inputStats.get(statGroup);
+            Map<Class<?>, MessageCounters> groupData = inputStats.get(statGroup);
             if (groupData != null) {
-                for (Entry<Class, MessageCounters> statEntry : groupData.entrySet()) {
+                for (Entry<Class<?>, MessageCounters> statEntry : groupData.entrySet()) {
                     long amountPerInterval = statEntry.getValue().accumulate();
                     long cumulativeAmount = statEntry.getValue().getCumulative();
                     dump.add(String.format("%s: MSG[%s] -> +%d | %d",