Fixed netty & checkstyle failures
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / OFDecoder.java
index 450eb4bb1757909d407ee06d424289cbea497e2e..ec1f43d329e1efa23ea0171607fcaf63642a4319 100644 (file)
@@ -14,6 +14,8 @@ import io.netty.handler.codec.MessageToMessageDecoder;
 import java.util.List;
 
 import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory;
+import org.opendaylight.openflowjava.statistics.CounterEventTypes;
+import org.opendaylight.openflowjava.statistics.StatisticsCounters;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.slf4j.Logger;
@@ -25,38 +27,43 @@ import org.slf4j.LoggerFactory;
  */
 public class OFDecoder extends MessageToMessageDecoder<VersionMessageWrapper> {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(OFDecoder.class);
+    private static final Logger LOG = LoggerFactory.getLogger(OFDecoder.class);
+    private final StatisticsCounters statisticsCounter;
+
+    // TODO: make this final?
     private DeserializationFactory deserializationFactory;
 
     /**
      * Constructor of class
      */
     public OFDecoder() {
-        LOGGER.trace("Creating OF 1.3 Decoder");
+        LOG.trace("Creating OF 1.3 Decoder");
+       // TODO: pass as argument
+        statisticsCounter = StatisticsCounters.getInstance();
     }
 
     @Override
     protected void decode(ChannelHandlerContext ctx, VersionMessageWrapper msg,
             List<Object> out) throws Exception {
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("VersionMessageWrapper received");
-            LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(msg.getMessageBuffer()));
+        statisticsCounter.incrementCounter(CounterEventTypes.US_RECEIVED_IN_OFJAVA);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("VersionMessageWrapper received");
+            LOG.debug("<< {}", ByteBufUtils.byteBufToHexString(msg.getMessageBuffer()));
         }
 
-        DataObject dataObject = null;
         try {
-            dataObject = deserializationFactory.deserialize(msg.getMessageBuffer(),
+            final DataObject dataObject = deserializationFactory.deserialize(msg.getMessageBuffer(),
                     msg.getVersion());
             if (dataObject == null) {
-                LOGGER.warn("Translated POJO is null");
+                LOG.warn("Translated POJO is null");
+                statisticsCounter.incrementCounter(CounterEventTypes.US_DECODE_FAIL);
             } else {
                 out.add(dataObject);
+                statisticsCounter.incrementCounter(CounterEventTypes.US_DECODE_SUCCESS);
             }
-        } catch(Exception e) {
-            LOGGER.error("Message deserialization failed");
-            LOGGER.error(e.getMessage(), e);
-            // TODO: delegate exception to allow easier deserialization
-            // debugging / deserialization problem awareness
+        } catch (Exception e) {
+            LOG.warn("Message deserialization failed", e);
+            statisticsCounter.incrementCounter(CounterEventTypes.US_DECODE_FAIL);
         } finally {
             msg.getMessageBuffer().release();
         }