Merge "Bug 5596 Cleaning part 2"
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / ofpspecific / MessageIntelligenceAgencyImpl.java
index 858f554091cbcb911c8d11b72cfc1e85dd18ecf7..0ba31bd14ccd8dbcf57b6e79b2cb4f702571b98b 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>, MessageIntelligenceAgencyMXBean {
+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,25 +51,26 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<
         }
     }
 
-    private final ConcurrentMap<STATISTIC_GROUP, ConcurrentMap<Class, MessageCounters>> inputStats = new ConcurrentHashMap<>();
+    private 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();
     }
 
     /**
-     * @param message
-     * @param statGroup TODO
-     * @return
+     * @param message counted element
+     * @param statGroup statistic counter group
+     * @return corresponding counter
      */
-    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",
@@ -121,4 +125,9 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency<
         }
         return dump;
     }
+
+    @Override
+    public void resetStatistics() {
+        inputStats = new ConcurrentHashMap<>();
+    }
 }