Remove EncodeConstants.SIZE_OF_{BYTE,SHORT,INT,LONG}_IN_BYTES
[openflowplugin.git] / openflowjava / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / MeterModInputMessageFactory.java
index 568b9aaecdb22d147deb22ffce20fc1a556264ed..fdcef1b3fa4dae5adb0a62711340209d08f72a13 100644 (file)
@@ -7,9 +7,14 @@
  */
 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -46,13 +51,16 @@ public class MeterModInputMessageFactory implements OFDeserializer<MeterModInput
     }
 
     @Override
+    @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
     public MeterModInput deserialize(ByteBuf rawMessage) {
-        MeterModInputBuilder builder = new MeterModInputBuilder();
-        builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
-        builder.setXid(rawMessage.readUnsignedInt());
-        builder.setCommand(MeterModCommand.forValue(rawMessage.readUnsignedShort()));
-        builder.setFlags(createMeterFlags(rawMessage.readUnsignedShort()));
-        builder.setMeterId(new MeterId(rawMessage.readUnsignedInt()));
+        Objects.requireNonNull(registry);
+
+        MeterModInputBuilder builder = new MeterModInputBuilder()
+                .setVersion(EncodeConstants.OF_VERSION_1_3)
+                .setXid(readUint32(rawMessage))
+                .setCommand(MeterModCommand.forValue(rawMessage.readUnsignedShort()))
+                .setFlags(createMeterFlags(rawMessage.readUnsignedShort()))
+                .setMeterId(new MeterId(readUint32(rawMessage)));
         List<Bands> bandsList = new ArrayList<>();
         while (rawMessage.readableBytes() > 0) {
             BandsBuilder bandsBuilder = new BandsBuilder();
@@ -64,8 +72,8 @@ public class MeterModInputMessageFactory implements OFDeserializer<MeterModInput
                     MeterBandDropBuilder bandDropBuilder = new MeterBandDropBuilder();
                     bandDropBuilder.setType(MeterBandType.forValue(bandType));
                     rawMessage.readUnsignedShort();
-                    bandDropBuilder.setRate(rawMessage.readUnsignedInt());
-                    bandDropBuilder.setBurstSize(rawMessage.readUnsignedInt());
+                    bandDropBuilder.setRate(readUint32(rawMessage));
+                    bandDropBuilder.setBurstSize(readUint32(rawMessage));
                     rawMessage.skipBytes(PADDING_IN_METER_BAND_DROP_HEADER);
                     bandDropCaseBuilder.setMeterBandDrop(bandDropBuilder.build());
                     bandsBuilder.setMeterBand(bandDropCaseBuilder.build());
@@ -76,16 +84,15 @@ public class MeterModInputMessageFactory implements OFDeserializer<MeterModInput
                     MeterBandDscpRemarkBuilder bandDscpRemarkBuilder = new MeterBandDscpRemarkBuilder();
                     bandDscpRemarkBuilder.setType(MeterBandType.forValue(bandType));
                     rawMessage.readUnsignedShort();
-                    bandDscpRemarkBuilder.setRate(rawMessage.readUnsignedInt());
-                    bandDscpRemarkBuilder.setBurstSize(rawMessage.readUnsignedInt());
-                    bandDscpRemarkBuilder.setPrecLevel(rawMessage.readUnsignedByte());
+                    bandDscpRemarkBuilder.setRate(readUint32(rawMessage));
+                    bandDscpRemarkBuilder.setBurstSize(readUint32(rawMessage));
+                    bandDscpRemarkBuilder.setPrecLevel(readUint8(rawMessage));
                     rawMessage.skipBytes(PADDING_IN_METER_BAND_DSCP_HEADER);
                     bandDscpRemarkCaseBuilder.setMeterBandDscpRemark(bandDscpRemarkBuilder.build());
                     bandsBuilder.setMeterBand(bandDscpRemarkCaseBuilder.build());
                     break;
                 case 0xFFFF:
-                    long expId = rawMessage.getUnsignedInt(rawMessage.readerIndex()
-                            + 2 * EncodeConstants.SIZE_OF_INT_IN_BYTES);
+                    long expId = rawMessage.getUnsignedInt(rawMessage.readerIndex() + 2 * Integer.BYTES);
                     rawMessage.readerIndex(bandStartIndex);
                     OFDeserializer<MeterBandExperimenterCase> deserializer = registry
                             .getDeserializer(ExperimenterDeserializerKeyFactory
@@ -109,5 +116,4 @@ public class MeterModInputMessageFactory implements OFDeserializer<MeterModInput
         final Boolean mfSTATS = (input & 1 << 3) != 0;
         return new MeterFlags(mfBURST, mfKBPS, mfPKTPS, mfSTATS);
     }
-
 }