Another round of ofp-impl warning fixes 01/94601/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Jan 2021 18:00:02 +0000 (19:00 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Jan 2021 20:45:31 +0000 (21:45 +0100)
Use ByteBufUtils.readUint{8,16,32,64} and BindingMap's facilities
to migrate away from legacy components.

Change-Id: I21aafa5d09c0c9f6c46eba543c61755fd7f18723
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
54 files changed:
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/GroupActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/OutputActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/PopMplsActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/PushMplsActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/PushPbbActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/PushVlanActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/SetMplsTtlActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/SetNwTtlActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/action/SetQueueActionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/instruction/GoToTableInstructionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/instruction/MeterInstructionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/instruction/WriteMetadataInstructionDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/EthernetTypeEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Icmpv4CodeEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Icmpv4TypeEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Icmpv6CodeEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Icmpv6TypeEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/IpDscpEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/IpEcnEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/IpProtoEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Ipv6ExtHeaderEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Ipv6FlabelEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/MetadataEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/MplsBosEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/MplsLabelEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/MplsTcEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/PacketTypeEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/SctpDestinationPortEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/SctpSourcePortEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/TcpDestinationPortEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/TcpFlagsEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/TcpSourcePortEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/TunnelIdEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/UdpDestinationPortEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/UdpSourcePortEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/VlanPcpEntryDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/messages/FlowMessageDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyFlowAggregateStatsDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyFlowStatsDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyFlowTableStatsDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyGroupDescDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyGroupStatsDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyMessageDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyMeterConfigDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyMeterFeaturesDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyMeterStatsDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyQueueStatsDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyTableFeaturesDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/RoleService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchFlowAdapters.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchGroupAdapters.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchMeterAdapters.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/AbstractCompatibleStatService.java

index 4ce5dca726516bc7519843fcf01103771316a152..eba0c74391aa8472a065c22bf0e56898c2b3bfc7 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
 import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,7 +61,7 @@ public class HandshakeListenerImpl implements HandshakeListener {
         connectionContext.handshakeSuccessful();
 
         // fire barrier in order to sweep all handshake and posthandshake messages before continue
-        final ListenableFuture<RpcResult<BarrierOutput>> barrier = fireBarrier(version, 0L);
+        final ListenableFuture<RpcResult<BarrierOutput>> barrier = fireBarrier(version, Uint32.ZERO);
         Futures.addCallback(barrier, addBarrierCallback(), MoreExecutors.directExecutor());
     }
 
@@ -97,7 +98,7 @@ public class HandshakeListenerImpl implements HandshakeListener {
         };
     }
 
-    private ListenableFuture<RpcResult<BarrierOutput>> fireBarrier(final Short version, final long xid) {
+    private ListenableFuture<RpcResult<BarrierOutput>> fireBarrier(final Short version, final Uint32 xid) {
         final BarrierInput barrierInput = new BarrierInputBuilder()
                 .setXid(xid)
                 .setVersion(version)
index 152c92a0e2f55f817aefc941aeea1856d30cb04c..dd5559715e135733f55cc47bb0d250b071a52cfd 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
@@ -15,20 +17,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 public class GroupActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
 
         return new GroupActionCaseBuilder()
                 .setGroupAction(new GroupActionBuilder()
-                        .setGroupId(message.readUnsignedInt())
+                        .setGroupId(readUint32(message))
                         .build())
                 .build();
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new GroupActionCaseBuilder().build();
     }
-
 }
index a0b926ecc6b416fb15796a62d16c541c6664c79b..2510c2461bc8872c543668aabfe80e712d3e8a1e 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
@@ -15,17 +17,18 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 public class OutputActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
 
         final Uri portUri = OpenflowPortsUtil
                 .getProtocolAgnosticPortUri(EncodeConstants.OF13_VERSION_ID, message.readUnsignedInt());
 
-        final int maxLength = message.readUnsignedShort();
+        final Uint16 maxLength = readUint16(message);
         message.skipBytes(ActionConstants.OUTPUT_PADDING);
 
         return new OutputActionCaseBuilder()
@@ -37,9 +40,8 @@ public class OutputActionDeserializer extends AbstractActionDeserializer {
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new OutputActionCaseBuilder().build();
     }
-
 }
index d1f40142c3a4bd98e5f3a1950c1787081ffca8c9..7c4366ffe63644a411cdca0de2a20879a881b533 100644 (file)
@@ -7,19 +7,22 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 public class PopMplsActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
 
-        final int ethType = message.readUnsignedShort();
+        final Uint16 ethType = readUint16(message);
         message.skipBytes(ActionConstants.ETHERTYPE_ACTION_PADDING);
 
         return new PopMplsActionCaseBuilder()
@@ -30,7 +33,7 @@ public class PopMplsActionDeserializer extends AbstractActionDeserializer {
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new PopMplsActionCaseBuilder().build();
     }
index f190bbc9459cf9c6adbff2579adc3a838d379947..fc5d0d02e3d601e3647796eb576164ab8245ae30 100644 (file)
@@ -7,18 +7,21 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 public class PushMplsActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
-        final int ethType = message.readUnsignedShort();
+        final Uint16 ethType = readUint16(message);
         message.skipBytes(ActionConstants.ETHERTYPE_ACTION_PADDING);
 
         return new PushMplsActionCaseBuilder()
@@ -29,7 +32,7 @@ public class PushMplsActionDeserializer extends AbstractActionDeserializer {
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new PushMplsActionCaseBuilder().build();
     }
index 3912bc2da44fd57143ef57b3dfe36f0f0740d569..3eb4643249a0cbbf9cd54e0e2958aa8d24bacf29 100644 (file)
@@ -7,29 +7,30 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 public class PushPbbActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
-        final int ethType = message.readUnsignedShort();
+        final Uint16 ethType = readUint16(message);
         message.skipBytes(ActionConstants.ETHERTYPE_ACTION_PADDING);
 
         return new PushPbbActionCaseBuilder()
-                .setPushPbbAction(new PushPbbActionBuilder()
-                        .setEthernetType(ethType)
-                        .build())
+                .setPushPbbAction(new PushPbbActionBuilder().setEthernetType(ethType).build())
                 .build();
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new PushPbbActionCaseBuilder().build();
     }
index dd730c4dcb0ff3f8d603030f9ca6daf3eac5c2cb..cc64f59f77a60cd82419be419969e6108324b934 100644 (file)
@@ -7,31 +7,31 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 public class PushVlanActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
-        final int ethType = message.readUnsignedShort();
+        final Uint16 ethType = readUint16(message);
         message.skipBytes(ActionConstants.ETHERTYPE_ACTION_PADDING);
 
         return new PushVlanActionCaseBuilder()
-                .setPushVlanAction(new PushVlanActionBuilder()
-                        .setEthernetType(ethType)
-                        .build())
+                .setPushVlanAction(new PushVlanActionBuilder().setEthernetType(ethType).build())
                 .build();
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new PushVlanActionCaseBuilder().build();
     }
-
 }
index 541104ed635ded1f57363121a0b7ef0fff5dcbe8..b8276480d7c643077219a91583f0c2488e372b79 100644 (file)
@@ -7,18 +7,21 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class SetMplsTtlActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
-        final short mplsTtl = message.readUnsignedByte();
+        final Uint8 mplsTtl = readUint8(message);
         message.skipBytes(ActionConstants.SET_MPLS_TTL_PADDING);
 
         return new SetMplsTtlActionCaseBuilder()
@@ -29,7 +32,7 @@ public class SetMplsTtlActionDeserializer extends AbstractActionDeserializer {
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new SetMplsTtlActionCaseBuilder().build();
     }
index 93c4dc3bee99915d8ad6d652e26d1e4b675662e6..388d1ff5d97ec3ad4739da680eca7ebc4e7e4d9a 100644 (file)
@@ -7,18 +7,21 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class SetNwTtlActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
-        final short nwTtl = message.readUnsignedByte();
+        final Uint8 nwTtl = readUint8(message);
         message.skipBytes(ActionConstants.SET_NW_TTL_PADDING);
 
         return new SetNwTtlActionCaseBuilder()
@@ -29,9 +32,8 @@ public class SetNwTtlActionDeserializer extends AbstractActionDeserializer {
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new SetNwTtlActionCaseBuilder().build();
     }
-
 }
index 3199ced02bc3107f831d26fa3ec87c3d4381ac9f..09b1829837c324de38ea5639e4e0ac1376e11a68 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.action;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
@@ -15,21 +17,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 public class SetQueueActionDeserializer extends AbstractActionDeserializer {
 
     @Override
-    public Action deserialize(ByteBuf message) {
+    public Action deserialize(final ByteBuf message) {
         processHeader(message);
-        final long queueId = message.readUnsignedInt();
 
         return new SetQueueActionCaseBuilder()
                 .setSetQueueAction(new SetQueueActionBuilder()
-                        .setQueueId(queueId)
+                        .setQueueId(readUint32(message))
                         .build())
                 .build();
     }
 
     @Override
-    public Action deserializeHeader(ByteBuf message) {
+    public Action deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new SetQueueActionCaseBuilder().build();
     }
-
 }
index 6375cadd11a566b5a469ba463f3d56204cce1439..2c85c9f496bb6197a0ab88aebd6e30f094ea7c3d 100644 (file)
@@ -8,18 +8,21 @@
 
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.instruction;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTableBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class GoToTableInstructionDeserializer extends AbstractInstructionDeserializer {
 
     @Override
-    public Instruction deserialize(ByteBuf message) {
+    public Instruction deserialize(final ByteBuf message) {
         processHeader(message);
-        final short tableId = message.readUnsignedByte();
+        final Uint8 tableId = readUint8(message);
         message.skipBytes(InstructionConstants.PADDING_IN_GOTO_TABLE);
 
         return new GoToTableCaseBuilder()
@@ -30,7 +33,7 @@ public class GoToTableInstructionDeserializer extends AbstractInstructionDeseria
     }
 
     @Override
-    public Instruction deserializeHeader(ByteBuf message) {
+    public Instruction deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new GoToTableCaseBuilder().build();
     }
index 4d1db7c9dc3c5962864b4159acff81fea184ebeb..8aeaf3d18308ebb2cf906d26493e79e285ab3c3f 100644 (file)
@@ -5,9 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.instruction;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCaseBuilder;
@@ -17,20 +18,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter
 public class MeterInstructionDeserializer extends AbstractInstructionDeserializer {
 
     @Override
-    public Instruction deserialize(ByteBuf message) {
+    public Instruction deserialize(final ByteBuf message) {
         processHeader(message);
 
         return new MeterCaseBuilder()
             .setMeter(new MeterBuilder()
-                    .setMeterId(new MeterId(message.readUnsignedInt()))
+                    .setMeterId(new MeterId(readUint32(message)))
                     .build())
             .build();
     }
 
     @Override
-    public Instruction deserializeHeader(ByteBuf message) {
+    public Instruction deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new MeterCaseBuilder().build();
     }
-
 }
index 103029bc550546b292eb758030e84b5ea64ef11c..2845d9cb6d99525070e522dfd11ab76737122ff4 100644 (file)
@@ -7,8 +7,9 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.instruction;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder;
@@ -16,25 +17,20 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 
 public class WriteMetadataInstructionDeserializer extends AbstractInstructionDeserializer {
     @Override
-    public Instruction deserialize(ByteBuf message) {
+    public Instruction deserialize(final ByteBuf message) {
         processHeader(message);
         message.skipBytes(InstructionConstants.PADDING_IN_WRITE_METADATA);
 
-        final byte[] meta = new byte[Long.BYTES];
-        message.readBytes(meta);
-        final byte[] metaMask = new byte[Long.BYTES];
-        message.readBytes(metaMask);
-
         return new WriteMetadataCaseBuilder()
                 .setWriteMetadata(new WriteMetadataBuilder()
-                        .setMetadata(new BigInteger(1, meta))
-                        .setMetadataMask(new BigInteger(1, metaMask))
+                        .setMetadata(readUint64(message))
+                        .setMetadataMask(readUint64(message))
                         .build())
                 .build();
     }
 
     @Override
-    public Instruction deserializeHeader(ByteBuf message) {
+    public Instruction deserializeHeader(final ByteBuf message) {
         processHeader(message);
         return new WriteMetadataCaseBuilder().build();
     }
index e56bec1afa4cad429fa3ecd52a1006134b498ba6..ed8f9ef4846dd5ff99bed3b9022289ef0e4f8ae4 100644 (file)
@@ -7,30 +7,29 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
 
 public class EthernetTypeEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final int type = message.readUnsignedShort();
+        final EthernetType etherType = new EthernetTypeBuilder()
+            .setType(new EtherType(readUint16(message).toUint32()))
+            .build();
 
         if (builder.getEthernetMatch() == null) {
-            builder.setEthernetMatch(new EthernetMatchBuilder()
-                    .setEthernetType(new EthernetTypeBuilder()
-                            .setType(new EtherType(Long.valueOf(type)))
-                            .build())
-                    .build());
+            builder.setEthernetMatch(new EthernetMatchBuilder().setEthernetType(etherType).build());
         } else if (builder.getEthernetMatch().getEthernetType() == null) {
             builder.setEthernetMatch(new EthernetMatchBuilder(builder.getEthernetMatch())
-                    .setEthernetType(new EthernetTypeBuilder()
-                            .setType(new EtherType(Long.valueOf(type)))
-                            .build())
+                    .setEthernetType(etherType)
                     .build());
         } else {
             throwErrorOnMalformed(builder, "ethernetMatch", "ethernetType");
index 50555945c61f2e0fb22632217c39c4e4722a947f..c1a3a611644f0278d7c0d13f729afdb8835d6d6d 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class Icmpv4CodeEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short code = message.readUnsignedByte();
+        final Uint8 code = readUint8(message);
 
         if (builder.getIcmpv4Match() == null) {
             builder.setIcmpv4Match(new Icmpv4MatchBuilder()
index 2e89756ab43e3384a39dfc6a62a7eeef5dd55dac..87656bf69bdb226fa097bbe58b788564e8bb7fe1 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class Icmpv4TypeEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short type = message.readUnsignedByte();
+        final Uint8 type = readUint8(message);
 
         if (builder.getIcmpv4Match() == null) {
             builder.setIcmpv4Match(new Icmpv4MatchBuilder()
index 6ba0a4183a584d1f01a8caea2a81acf969c04719..3508dbfe7a6baf173c748b522a4006dc8b8c26dc 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class Icmpv6CodeEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short code = message.readUnsignedByte();
+        final Uint8 code = readUint8(message);
 
         if (builder.getIcmpv6Match() == null) {
             builder.setIcmpv6Match(new Icmpv6MatchBuilder()
index 4149a5275af04e443f558a14d881d4d303df1450..90d812cf85d1c41899be7b21cd3ec5b39d31649b 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class Icmpv6TypeEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short type = message.readUnsignedByte();
+        final Uint8 type = readUint8(message);
 
         if (builder.getIcmpv6Match() == null) {
             builder.setIcmpv6Match(new Icmpv6MatchBuilder()
index 98840c6a4cc45f64a65dbbd9d40c50e8ab08a90b..215e0d03622b05d29372b559dd4d1e8faf77238d 100644 (file)
@@ -7,17 +7,20 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class IpDscpEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short dscp = message.readUnsignedByte();
+        final Uint8 dscp = readUint8(message);
 
         if (builder.getIpMatch() == null) {
             builder.setIpMatch(new IpMatchBuilder()
index 3c4ef9735f6d53d57e1a63dfb54613282afaa33a..f81a627918b389ca990104306a10d274e6180708 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class IpEcnEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short ecn = message.readUnsignedByte();
+        final Uint8 ecn = readUint8(message);
 
         if (builder.getIpMatch() == null) {
             builder.setIpMatch(new IpMatchBuilder()
index c4d02e9fd7aba3146da2eae70f0ddaccd073aafb..d4d2335eb4bd2fb3ca4d7ea40389fcdc5416530d 100644 (file)
@@ -5,19 +5,21 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class IpProtoEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short proto = message.readUnsignedByte();
+        final Uint8 proto = readUint8(message);
 
         if (builder.getIpMatch() == null) {
             builder.setIpMatch(new IpMatchBuilder()
index cb05e21afd4002a99959f15ba198708ded813f34..e34d97d3d84338783b16dffa2e35625a957a4521 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.deserialization.match.OxmDeserializerHelper;
 import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil;
@@ -17,10 +19,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 
 public class Ipv6ExtHeaderEntryDeserializer extends AbstractMatchEntryDeserializer {
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         final boolean hasMask = processHeader(message);
         final Ipv6ExtHeaderBuilder extHeaderBuilder = new Ipv6ExtHeaderBuilder()
-            .setIpv6Exthdr(message.readUnsignedShort());
+            .setIpv6Exthdr(readUint16(message));
 
         if (hasMask) {
             final byte[] mask = OxmDeserializerHelper.convertMask(message, Short.BYTES);
index 9bec28542baf93d85a25def4663902b7d9e0f977..6bca61547001807dd9c3839954cecfca1025bbb6 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.impl.deserialization.match.OxmDeserializerHelper;
 import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil;
@@ -18,10 +20,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 
 public class Ipv6FlabelEntryDeserializer extends AbstractMatchEntryDeserializer {
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         final boolean hasMask = processHeader(message);
         final Ipv6LabelBuilder ipv6labelBuilder = new Ipv6LabelBuilder()
-            .setIpv6Flabel(new Ipv6FlowLabel(message.readUnsignedInt()));
+            .setIpv6Flabel(new Ipv6FlowLabel(readUint32(message)));
 
         if (hasMask) {
             final byte[] mask = OxmDeserializerHelper.convertMask(message, Integer.BYTES);
index c88a4b37adaa22755e58ccc9b24e4ce9bda3c376..0ffa2c9c9602f5f7cb0d40be7820d12176eb5974 100644 (file)
@@ -7,28 +7,25 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
 
 public class MetadataEntryDeserializer extends AbstractMatchEntryDeserializer {
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         final boolean hasMask = processHeader(message);
-        final Metadata metadata = builder.getMetadata();
-        final byte[] metaByte = new byte[Long.BYTES];
-        message.readBytes(metaByte);
         final MetadataBuilder metadataBuilder = new MetadataBuilder()
-                .setMetadata(new BigInteger(1, metaByte));
+                .setMetadata(readUint64(message));
 
         if (hasMask) {
-            final byte[] metaMask = new byte[Long.BYTES];
-            message.readBytes(metaMask);
-            metadataBuilder.setMetadataMask(new BigInteger(1, metaMask));
+            metadataBuilder.setMetadataMask(readUint64(message));
         }
 
+        final Metadata metadata = builder.getMetadata();
         if (metadata == null) {
             builder.setMetadata(metadataBuilder.build());
         } else {
index 3f66613d495a67e90d4a98ae4c6d8679330a6ddc..929e36ef0110c73e9c4971254966fd1b131f1327 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class MplsBosEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short mplsBos = message.readUnsignedByte();
+        final Uint8 mplsBos = readUint8(message);
 
         if (builder.getProtocolMatchFields() == null) {
             builder.setProtocolMatchFields(new ProtocolMatchFieldsBuilder()
index afbc25476d0d96a49016a1aed04b474ed1c69f1e..25826f351d4ee202dda9a44abf0a237dbe98bcb1 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MplsLabelEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final long mplsLabel = message.readUnsignedInt();
+        final Uint32 mplsLabel = readUint32(message);
 
         if (builder.getProtocolMatchFields() == null) {
             builder.setProtocolMatchFields(new ProtocolMatchFieldsBuilder()
@@ -30,5 +33,4 @@ public class MplsLabelEntryDeserializer extends AbstractMatchEntryDeserializer {
             throwErrorOnMalformed(builder, "protocolMatchFields", "mplsLabel");
         }
     }
-
 }
index 208bce4f4e7a181c4987356fb4a226e4b237ebfe..49b8617fcfd13715bbb676176f09e221fc4d317e 100644 (file)
@@ -7,16 +7,19 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class MplsTcEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short mplsTc = message.readUnsignedByte();
+        final Uint8 mplsTc = readUint8(message);
 
         if (builder.getProtocolMatchFields() == null) {
             builder.setProtocolMatchFields(new ProtocolMatchFieldsBuilder()
index f8d287de469bd4e221ff5f0d04457b3a8f3f0a21..dc05864479754a5dcc048593313af3aa22b4cb6d 100644 (file)
@@ -7,19 +7,20 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.PacketTypeMatchBuilder;
 
 public class PacketTypeEntryDeserializer extends AbstractMatchEntryDeserializer {
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         if (builder.getPacketTypeMatch() != null) {
             throwErrorOnMalformed(builder, "packet-type");
         }
 
         processHeader(message);
-        final long packetType = message.readUnsignedInt();
-        builder.setPacketTypeMatch(new PacketTypeMatchBuilder().setPacketType(packetType).build());
+        builder.setPacketTypeMatch(new PacketTypeMatchBuilder().setPacketType(readUint32(message)).build());
     }
 }
index 76b2d9bfb81c08747e37ca949db6f1a53d96c0a5..e3b495066dbd7726346db88eee7dcf88513ca3ab 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
@@ -16,18 +18,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class SctpDestinationPortEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final int port = message.readUnsignedShort();
+        final PortNumber port = new PortNumber(readUint16(message));
 
         if (builder.getLayer4Match() == null) {
-            builder.setLayer4Match(new SctpMatchBuilder()
-                    .setSctpDestinationPort(new PortNumber(port))
-                    .build());
+            builder.setLayer4Match(new SctpMatchBuilder().setSctpDestinationPort(port).build());
         } else if (builder.getLayer4Match() instanceof SctpMatch
             && ((SctpMatch) builder.getLayer4Match()).getSctpDestinationPort() == null) {
             builder.setLayer4Match(new SctpMatchBuilder((SctpMatch) builder.getLayer4Match())
-                    .setSctpDestinationPort(new PortNumber(port))
+                    .setSctpDestinationPort(port)
                     .build());
         } else {
             throwErrorOnMalformed(builder, "layer4Match", "sctpDestinationPort");
index 6439c195d35ba5a170fe7887ca72fef9abd62354..018384a20c15bbb0e2003d3a0f3a720bb0007f4c 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
@@ -16,18 +18,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class SctpSourcePortEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final int port = message.readUnsignedShort();
+        final PortNumber port = new PortNumber(readUint16(message));
 
         if (builder.getLayer4Match() == null) {
-            builder.setLayer4Match(new SctpMatchBuilder()
-                    .setSctpSourcePort(new PortNumber(port))
-                    .build());
+            builder.setLayer4Match(new SctpMatchBuilder().setSctpSourcePort(port).build());
         } else if (builder.getLayer4Match() instanceof SctpMatch
                 && ((SctpMatch) builder.getLayer4Match()).getSctpSourcePort() == null) {
             builder.setLayer4Match(new SctpMatchBuilder((SctpMatch) builder.getLayer4Match())
-                    .setSctpSourcePort(new PortNumber(port))
+                    .setSctpSourcePort(port)
                     .build());
         } else {
             throwErrorOnMalformed(builder, "layer4Match", "sctpSourcePort");
index aaf3cc408cda62495067c663afdf494305c52c8b..2380e8b6c3d557d7f7b32821cf1b8911ccca7e6b 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
@@ -16,24 +18,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class TcpDestinationPortEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         boolean hasMask = processHeader(message);
-        final int port = message.readUnsignedShort();
-        final int portMask = hasMask ? message.readUnsignedShort() : 0;
+        final PortNumber port = new PortNumber(readUint16(message));
 
         if (builder.getLayer4Match() == null) {
             TcpMatchBuilder tcpMatchBuilder = new TcpMatchBuilder()
-                    .setTcpDestinationPort(new PortNumber(port));
+                    .setTcpDestinationPort(port);
             if (hasMask) {
-                tcpMatchBuilder.setTcpDestinationPortMask(new PortNumber(portMask));
+                tcpMatchBuilder.setTcpDestinationPortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(tcpMatchBuilder.build());
         } else if (builder.getLayer4Match() instanceof TcpMatch
                 && ((TcpMatch) builder.getLayer4Match()).getTcpDestinationPort() == null) {
             TcpMatchBuilder tcpMatchBuilder = new TcpMatchBuilder((TcpMatch) builder.getLayer4Match())
-                    .setTcpDestinationPort(new PortNumber(port));
+                    .setTcpDestinationPort(port);
             if (hasMask) {
-                tcpMatchBuilder.setTcpDestinationPortMask(new PortNumber(portMask));
+                tcpMatchBuilder.setTcpDestinationPortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(tcpMatchBuilder.build());
         } else {
index 0443d3e670778d7988d539a45407637dafe99c8c..2b53d86095beffc6f217926572a1badc4c8a8121 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagsMatchBuilder;
@@ -14,15 +16,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class TcpFlagsEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         final boolean hasMask = processHeader(message);
         message.readUnsignedInt(); // Just skip experimenter ID for now, not used
 
         final TcpFlagsMatchBuilder tcpFlagsBuilder = new TcpFlagsMatchBuilder()
-                .setTcpFlags(message.readUnsignedShort());
+                .setTcpFlags(readUint16(message));
 
         if (hasMask) {
-            tcpFlagsBuilder.setTcpFlagsMask(message.readUnsignedShort());
+            tcpFlagsBuilder.setTcpFlagsMask(readUint16(message));
         }
 
         if (builder.getTcpFlagsMatch() == null) {
index eecb7044756dc029c311c2b439bb1a201e823331..d4ce2a7cd9795b2d96becddbc771a4d75fd4a695 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
@@ -16,24 +18,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class TcpSourcePortEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         boolean hasMask = processHeader(message);
-        final int port = message.readUnsignedShort();
-        final int portMask = hasMask ? message.readUnsignedShort() : 0;
+        final PortNumber port = new PortNumber(readUint16(message));
 
         if (builder.getLayer4Match() == null) {
             TcpMatchBuilder tcpMatchBuilder = new TcpMatchBuilder()
-                    .setTcpSourcePort(new PortNumber(port));
+                    .setTcpSourcePort(port);
             if (hasMask) {
-                tcpMatchBuilder.setTcpSourcePortMask(new PortNumber(portMask));
+                tcpMatchBuilder.setTcpSourcePortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(tcpMatchBuilder.build());
         } else if (builder.getLayer4Match() instanceof TcpMatch
             && ((TcpMatch) builder.getLayer4Match()).getTcpSourcePort() == null) {
             TcpMatchBuilder tcpMatchBuilder = new TcpMatchBuilder((TcpMatch) builder.getLayer4Match())
-                    .setTcpSourcePort(new PortNumber(port));
+                    .setTcpSourcePort(port);
             if (hasMask) {
-                tcpMatchBuilder.setTcpSourcePortMask(new PortNumber(portMask));
+                tcpMatchBuilder.setTcpSourcePortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(tcpMatchBuilder.build());
         } else {
index 61b1f45af8528131e3be60677d3d1457d7fd5590..7522c34cdc39f1afc8144da3b51a0b501e8e5408 100644 (file)
@@ -7,25 +7,22 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
 
 public class TunnelIdEntryDeserializer extends AbstractMatchEntryDeserializer {
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         final boolean hasMask = processHeader(message);
 
-        final byte[] tunnelId = new byte[Long.BYTES];
-        message.readBytes(tunnelId);
         final TunnelBuilder tunnelBuilder = new TunnelBuilder()
-            .setTunnelId(new BigInteger(1, tunnelId));
+            .setTunnelId(readUint64(message));
 
         if (hasMask) {
-            final byte[] tunnelMask = new byte[Long.BYTES];
-            message.readBytes(tunnelMask);
-            tunnelBuilder.setTunnelMask(new BigInteger(1, tunnelMask));
+            tunnelBuilder.setTunnelMask(readUint64(message));
         }
 
         if (builder.getTunnel() == null) {
index 80572f435708ff719bf30573d18d3d3d6d11791f..32a6296324e6fa829aaf30542e8d8b20c41adf93 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
@@ -16,24 +18,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class UdpDestinationPortEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         boolean hasMask = processHeader(message);
-        final int port = message.readUnsignedShort();
-        final int portMask = hasMask ? message.readUnsignedShort() : 0;
+        final PortNumber port = new PortNumber(readUint16(message));
 
         if (builder.getLayer4Match() == null) {
             UdpMatchBuilder udpMatchBuilder = new UdpMatchBuilder()
-                    .setUdpDestinationPort(new PortNumber(port));
+                    .setUdpDestinationPort(port);
             if (hasMask) {
-                udpMatchBuilder.setUdpDestinationPortMask(new PortNumber(portMask));
+                udpMatchBuilder.setUdpDestinationPortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(udpMatchBuilder.build());
         } else if (builder.getLayer4Match() instanceof UdpMatch
                 && ((UdpMatch) builder.getLayer4Match()).getUdpDestinationPort() == null) {
             UdpMatchBuilder udpMatchBuilder = new UdpMatchBuilder((UdpMatch) builder.getLayer4Match())
-                    .setUdpDestinationPort(new PortNumber(port));
+                    .setUdpDestinationPort(port);
             if (hasMask) {
-                udpMatchBuilder.setUdpDestinationPortMask(new PortNumber(portMask));
+                udpMatchBuilder.setUdpDestinationPortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(udpMatchBuilder.build());
         } else {
index a445033b4429c78eed7cee1c492cb86f4324771e..8a9ed1801854cba8ee20f5ee1d1ddd16130f9e85 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
@@ -16,24 +18,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 public class UdpSourcePortEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         boolean hasMask = processHeader(message);
-        final int port = message.readUnsignedShort();
-        final int portMask = hasMask ? message.readUnsignedShort() : 0;
+        final PortNumber port = new PortNumber(readUint16(message));
 
         if (builder.getLayer4Match() == null) {
             UdpMatchBuilder udpMatchBuilder = new UdpMatchBuilder()
-                    .setUdpSourcePort(new PortNumber(port));
+                    .setUdpSourcePort(port);
             if (hasMask) {
-                udpMatchBuilder.setUdpSourcePortMask(new PortNumber(portMask));
+                udpMatchBuilder.setUdpSourcePortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(udpMatchBuilder.build());
         } else if (builder.getLayer4Match() instanceof UdpMatch
                 && ((UdpMatch) builder.getLayer4Match()).getUdpSourcePort() == null) {
             UdpMatchBuilder udpMatchBuilder = new UdpMatchBuilder((UdpMatch) builder.getLayer4Match())
-                    .setUdpSourcePort(new PortNumber(port));
+                    .setUdpSourcePort(port);
             if (hasMask) {
-                udpMatchBuilder.setUdpSourcePortMask(new PortNumber(portMask));
+                udpMatchBuilder.setUdpSourcePortMask(new PortNumber(readUint16(message)));
             }
             builder.setLayer4Match(udpMatchBuilder.build());
         } else {
index 13401eeca00d368034516251f40e97fb0cb113ad..2c247aa0fd84ff176147c7d02991bce31934daa3 100644 (file)
@@ -7,17 +7,20 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class VlanPcpEntryDeserializer extends AbstractMatchEntryDeserializer {
 
     @Override
-    public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+    public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
         processHeader(message);
-        final short pcp = message.readUnsignedByte();
+        final Uint8 pcp = readUint8(message);
 
         if (builder.getVlanMatch() == null) {
             builder.setVlanMatch(new VlanMatchBuilder()
index 912b6fdbffc6001b16467fafdfbbe9133140ba80..3e259c50a48651fd6d98a4f108de1038610ca04c 100644 (file)
@@ -9,13 +9,11 @@ package org.opendaylight.openflowplugin.impl.protocol.deserialization.messages;
 
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
 
 import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -38,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModCommand;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, DeserializerRegistryInjector {
 
@@ -54,8 +53,8 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
         final FlowMessageBuilder builder = new FlowMessageBuilder()
             .setVersion(EncodeConstants.OF_VERSION_1_3)
             .setXid(readUint32(message))
-            .setCookie(new FlowCookie(BigInteger.valueOf(message.readLong())))
-            .setCookieMask(new FlowCookie(BigInteger.valueOf(message.readLong())))
+            .setCookie(new FlowCookie(readUint64(message)))
+            .setCookieMask(new FlowCookie(readUint64(message)))
             .setTableId(readUint8(message))
             .setCommand(FlowModCommand.forValue(message.readUnsignedByte()))
             .setIdleTimeout(readUint16(message))
@@ -74,8 +73,9 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
         final int length = message.readableBytes();
 
         if (length > 0) {
-            final List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list
-                .Instruction> instructions = new ArrayList<>();
+            final var instructions = BindingMap.<InstructionKey,
+                org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction>
+                    orderedBuilder();
             final int startIndex = message.readerIndex();
             int offset = 0;
 
@@ -108,7 +108,6 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
                 }
 
                 instructions.add(new InstructionBuilder()
-                        .withKey(new InstructionKey(offset))
                         .setOrder(offset)
                         .setInstruction(deserializer.deserialize(message))
                         .build());
@@ -117,7 +116,7 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
             }
 
             builder.setInstructions(new InstructionsBuilder()
-                    .setInstruction(instructions)
+                    .setInstruction(instructions.build())
                     .build());
         }
 
index c7ab4a3d6e4dba9f2ed56dee3c63c561befd34b4..416cffe62ada9a8617f2ebc0e3d3b1f55d2d7735 100644 (file)
@@ -7,8 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
@@ -19,18 +21,13 @@ public class MultipartReplyFlowAggregateStatsDeserializer implements OFDeseriali
     private static final byte PADDING_IN_AGGREGATE_HEADER = 4;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
-        final byte[] packetCount = new byte[Long.BYTES];
-        message.readBytes(packetCount);
-        final byte[] byteCount = new byte[Long.BYTES];
-        message.readBytes(byteCount);
-
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyFlowAggregateStatsBuilder builder = new MultipartReplyFlowAggregateStatsBuilder()
-            .setPacketCount(new Counter64(new BigInteger(1, packetCount)))
-            .setByteCount(new Counter64(new BigInteger(1, byteCount)))
-            .setFlowCount(new Counter32(message.readUnsignedInt()));
-
+            .setPacketCount(new Counter64(readUint64(message)))
+            .setByteCount(new Counter64(readUint64(message)))
+            .setFlowCount(new Counter32(readUint32(message)));
         message.skipBytes(PADDING_IN_AGGREGATE_HEADER);
+
         return builder.build();
     }
 }
index b9560995593ecf3b0bf933adea242bd2f73d4103..01114b30b47f28e71c9174efa89e7413fa065b18 100644 (file)
@@ -5,12 +5,15 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
@@ -36,6 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<MultipartReplyBody>,
         DeserializerRegistryInjector {
@@ -49,7 +53,7 @@ public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<Multi
     private DeserializerRegistry registry;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyFlowStatsBuilder builder = new MultipartReplyFlowStatsBuilder();
         final List<FlowAndStatisticsMapList> items = new ArrayList<>();
 
@@ -58,33 +62,26 @@ public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<Multi
             final int itemLength = message.readUnsignedShort();
             final ByteBuf itemMessage = message.readSlice(itemLength - Short.BYTES);
 
-            itemBuilder.setTableId(itemMessage.readUnsignedByte());
+            itemBuilder.setTableId(readUint8(itemMessage));
             itemMessage.skipBytes(PADDING_IN_FLOW_STATS_HEADER_01);
 
             itemBuilder
                     .setDuration(new DurationBuilder()
-                            .setSecond(new Counter32(itemMessage.readUnsignedInt()))
-                            .setNanosecond(new Counter32(itemMessage.readUnsignedInt()))
+                            .setSecond(new Counter32(readUint32(itemMessage)))
+                            .setNanosecond(new Counter32(readUint32(itemMessage)))
                             .build())
-                    .setPriority(itemMessage.readUnsignedShort())
-                    .setIdleTimeout(itemMessage.readUnsignedShort())
-                    .setHardTimeout(itemMessage.readUnsignedShort())
+                    .setPriority(readUint16(itemMessage))
+                    .setIdleTimeout(readUint16(itemMessage))
+                    .setHardTimeout(readUint16(itemMessage))
                     .setFlags(createFlowModFlagsFromBitmap(itemMessage.readUnsignedShort()));
 
             itemMessage.skipBytes(PADDING_IN_FLOW_STATS_HEADER_02);
 
-            final byte[] cookie = new byte[Long.BYTES];
-            itemMessage.readBytes(cookie);
-            final byte[] packetCount = new byte[Long.BYTES];
-            itemMessage.readBytes(packetCount);
-            final byte[] byteCount = new byte[Long.BYTES];
-            itemMessage.readBytes(byteCount);
-
             itemBuilder
-                    .setCookie(new FlowCookie(new BigInteger(1, cookie)))
+                    .setCookie(new FlowCookie(readUint64(itemMessage)))
                     .setCookieMask(new FlowCookie(OFConstants.DEFAULT_COOKIE_MASK))
-                    .setPacketCount(new Counter64(new BigInteger(1, packetCount)))
-                    .setByteCount(new Counter64(new BigInteger(1, byteCount)));
+                    .setPacketCount(new Counter64(readUint64(itemMessage)))
+                    .setByteCount(new Counter64(readUint64(itemMessage)));
 
             final OFDeserializer<Match> matchDeserializer =
                     Preconditions.checkNotNull(registry).getDeserializer(MATCH_KEY);
@@ -94,14 +91,14 @@ public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<Multi
             final int length = itemMessage.readableBytes();
 
             if (length > 0) {
-                final List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list
-                        .Instruction> instructions = new ArrayList<>();
+                final var instructions = BindingMap.<InstructionKey,
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction>
+                        orderedBuilder();
                 final int startIndex = itemMessage.readerIndex();
                 int offset = 0;
 
                 while (itemMessage.readerIndex() - startIndex < length) {
                     instructions.add(new InstructionBuilder()
-                            .withKey(new InstructionKey(offset))
                             .setOrder(offset)
                             .setInstruction(InstructionUtil
                                     .readInstruction(EncodeConstants.OF13_VERSION_ID, itemMessage, registry))
@@ -110,9 +107,7 @@ public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<Multi
                     offset++;
                 }
 
-                itemBuilder.setInstructions(new InstructionsBuilder()
-                        .setInstruction(instructions)
-                        .build());
+                itemBuilder.setInstructions(new InstructionsBuilder().setInstruction(instructions.build()).build());
             }
 
             items.add(itemBuilder.build());
@@ -123,7 +118,7 @@ public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<Multi
                 .build();
     }
 
-    private static FlowModFlags createFlowModFlagsFromBitmap(int input) {
+    private static FlowModFlags createFlowModFlagsFromBitmap(final int input) {
         final Boolean ofp_FF_SendFlowRem = (input & 1) != 0;
         final Boolean ofp_FF_CheckOverlap = (input & 1 << 1) != 0;
         final Boolean ofp_FF_ResetCounts = (input & 1 << 2) != 0;
@@ -134,7 +129,7 @@ public class MultipartReplyFlowStatsDeserializer implements OFDeserializer<Multi
     }
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
+    public void injectDeserializerRegistry(final DeserializerRegistry deserializerRegistry) {
         registry = deserializerRegistry;
     }
 
index d3672f0dfed5d138f2f00b5b9a6b86e2252adad4..cfb23d0d6c8413f8b355c6fb20a6927a50298651 100644 (file)
@@ -7,10 +7,11 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
@@ -20,38 +21,31 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.multipart.reply.multipart.reply.body.MultipartReplyFlowTableStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class MultipartReplyFlowTableStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
     private static final byte PADDING_IN_TABLE_HEADER = 3;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyFlowTableStatsBuilder builder = new MultipartReplyFlowTableStatsBuilder();
-        final List<FlowTableAndStatisticsMap> items = new ArrayList<>();
+        final var items = BindingMap.<FlowTableAndStatisticsMapKey, FlowTableAndStatisticsMap>orderedBuilder();
 
         while (message.readableBytes() > 0) {
             final FlowTableAndStatisticsMapBuilder itemBuilder = new FlowTableAndStatisticsMapBuilder()
-                .setTableId(new TableId(message.readUnsignedByte()));
+                .setTableId(new TableId(readUint8(message)));
 
             message.skipBytes(PADDING_IN_TABLE_HEADER);
 
-            itemBuilder
-                .withKey(new FlowTableAndStatisticsMapKey(itemBuilder.getTableId()))
-                .setActiveFlows(new Counter32(message.readUnsignedInt()));
-
-            final byte[] packetsLooked = new byte[Long.BYTES];
-            message.readBytes(packetsLooked);
-            final byte[] packetsMatched = new byte[Long.BYTES];
-            message.readBytes(packetsMatched);
-
             items.add(itemBuilder
-                .setPacketsLookedUp(new Counter64(new BigInteger(1, packetsLooked)))
-                .setPacketsMatched(new Counter64(new BigInteger(1, packetsMatched)))
+                .setActiveFlows(new Counter32(readUint32(message)))
+                .setPacketsLookedUp(new Counter64(readUint64(message)))
+                .setPacketsMatched(new Counter64(readUint64(message)))
                 .build());
         }
 
         return builder
-            .setFlowTableAndStatisticsMap(items)
+            .setFlowTableAndStatisticsMap(items.build())
             .build();
     }
 }
index ff50955d92f38c92fd918275391841bd15a90a70..ae1fc14da2813ebc7274769c4b2c5a3d9d69a225 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
@@ -52,8 +55,7 @@ public class MultipartReplyGroupDescDeserializer implements OFDeserializer<Multi
                     .setGroupType(GroupTypes.forValue(message.readUnsignedByte()));
 
             message.skipBytes(PADDING_IN_GROUP_DESC_HEADER);
-            itemBuilder.setGroupId(new GroupId(message.readUnsignedInt()));
-            itemBuilder.withKey(new GroupDescStatsKey(itemBuilder.getGroupId()));
+            itemBuilder.setGroupId(new GroupId(readUint32(message)));
 
             final var subItems = BindingMap.<BucketKey, Bucket>orderedBuilder();
             int actualLength = GROUP_DESC_HEADER_LENGTH;
@@ -64,10 +66,9 @@ public class MultipartReplyGroupDescDeserializer implements OFDeserializer<Multi
 
                 final BucketBuilder bucketBuilder = new BucketBuilder()
                         .setBucketId(new BucketId(bucketKey))
-                        .withKey(new BucketKey(new BucketId(bucketKey)))
-                        .setWeight(message.readUnsignedShort())
-                        .setWatchPort(message.readUnsignedInt())
-                        .setWatchGroup(message.readUnsignedInt());
+                        .setWeight(readUint16(message))
+                        .setWatchPort(readUint32(message))
+                        .setWatchGroup(readUint32(message));
 
                 message.skipBytes(PADDING_IN_BUCKETS_HEADER);
                 final var actions = BindingMap.<ActionKey, Action>orderedBuilder();
index b2801da028588e7f4d8dfaeb5a0188e2da531df1..0787fb09b1db212792322f876bcb91feb93bda82 100644 (file)
@@ -7,8 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -21,11 +23,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.DurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounterKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MultipartReplyGroupStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
     private static final byte PADDING_IN_GROUP_HEADER_01 = 2;
@@ -34,7 +35,7 @@ public class MultipartReplyGroupStatsDeserializer implements OFDeserializer<Mult
     private static final byte BUCKET_COUNTER_LENGTH = 16;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyGroupStatsBuilder builder = new MultipartReplyGroupStatsBuilder();
         final List<GroupStats> items = new ArrayList<>();
 
@@ -43,40 +44,28 @@ public class MultipartReplyGroupStatsDeserializer implements OFDeserializer<Mult
             message.skipBytes(PADDING_IN_GROUP_HEADER_01);
 
             final GroupStatsBuilder itemBuilder = new GroupStatsBuilder()
-                .setGroupId(new GroupId(message.readUnsignedInt()))
-                .setRefCount(new Counter32(message.readUnsignedInt()));
+                .setGroupId(new GroupId(readUint32(message)))
+                .setRefCount(new Counter32(readUint32(message)));
 
             message.skipBytes(PADDING_IN_GROUP_HEADER_02);
 
-            final byte[] packetCountg = new byte[Long.BYTES];
-            message.readBytes(packetCountg);
-            final byte[] byteCountg = new byte[Long.BYTES];
-            message.readBytes(byteCountg);
-
             itemBuilder
-                .withKey(new GroupStatsKey(itemBuilder.getGroupId()))
-                .setPacketCount(new Counter64(new BigInteger(1, packetCountg)))
-                .setByteCount(new Counter64(new BigInteger(1, byteCountg)))
+                .setPacketCount(new Counter64(readUint64(message)))
+                .setByteCount(new Counter64(readUint64(message)))
                 .setDuration(new DurationBuilder()
-                        .setSecond(new Counter32(message.readUnsignedInt()))
-                        .setNanosecond(new Counter32(message.readUnsignedInt()))
+                        .setSecond(new Counter32(readUint32(message)))
+                        .setNanosecond(new Counter32(readUint32(message)))
                         .build());
 
             final List<BucketCounter> subItems = new ArrayList<>();
             int actualLength = GROUP_BODY_LENGTH;
-            long bucketKey = 0;
+            int bucketKey = 0;
 
             while (actualLength < itemLength) {
-                final byte[] packetCount = new byte[Long.BYTES];
-                message.readBytes(packetCount);
-                final byte[] byteCount = new byte[Long.BYTES];
-                message.readBytes(byteCount);
-
                 subItems.add(new BucketCounterBuilder()
-                    .setBucketId(new BucketId(bucketKey))
-                    .withKey(new BucketCounterKey(new BucketId(bucketKey)))
-                    .setPacketCount(new Counter64(new BigInteger(1, packetCount)))
-                    .setByteCount(new Counter64(new BigInteger(1, byteCount)))
+                    .setBucketId(new BucketId(Uint32.valueOf(bucketKey)))
+                    .setPacketCount(new Counter64(readUint64(message)))
+                    .setByteCount(new Counter64(readUint64(message)))
                     .build());
 
                 bucketKey++;
index 0a7d63d58c52c1d4c11f83d6b43469bcc11d88da..b4b1a0880c3cbf56c8395c79e601553148eca72e 100644 (file)
@@ -5,9 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
@@ -18,7 +19,7 @@ import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartReply;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartReplyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
-
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MultipartReplyMessageDeserializer implements OFDeserializer<MultipartReply>, DeserializerRegistryInjector {
 
@@ -27,8 +28,8 @@ public class MultipartReplyMessageDeserializer implements OFDeserializer<Multipa
     private DeserializerRegistry registry;
 
     @Override
-    public MultipartReply deserialize(ByteBuf message) {
-        final long xid = message.readUnsignedInt();
+    public MultipartReply deserialize(final ByteBuf message) {
+        final Uint32 xid = readUint32(message);
         final int type = message.readUnsignedShort();
         final boolean reqMore = (message.readUnsignedShort() & 0x01) != 0;
         message.skipBytes(PADDING_IN_MULTIPART_REPLY_HEADER);
@@ -46,7 +47,7 @@ public class MultipartReplyMessageDeserializer implements OFDeserializer<Multipa
     }
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
+    public void injectDeserializerRegistry(final DeserializerRegistry deserializerRegistry) {
         registry = deserializerRegistry;
     }
 
index 30a2e13a66a1c9efa09622a78e8eb5674881442c..4cb908165b58073755b422c34fc3106366e4ba71 100644 (file)
@@ -5,9 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static java.util.Objects.requireNonNull;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
@@ -33,14 +36,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<MultipartReplyBody>,
         DeserializerRegistryInjector {
-
-    private static final Logger LOG = LoggerFactory.getLogger(MultipartReplyMeterConfigDeserializer.class);
-
     private static final byte METER_CONFIG_LENGTH = 8;
     private static final int OFPMBTDROP = 1;
     private static final int OFPMBTDSCP = 2;
@@ -48,10 +46,10 @@ public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<Mul
     private static final byte PADDING_IN_METER_BAND_DROP_HEADER = 4;
     private static final byte PADDING_IN_METER_BAND_DSCP_HEADER = 3;
 
-    private DeserializerRegistry registry;
+    private DeserializerRegistry registry = null;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyMeterConfigBuilder builder = new MultipartReplyMeterConfigBuilder();
         final List<MeterConfigStats> items = new ArrayList<>();
 
@@ -60,7 +58,7 @@ public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<Mul
 
             final MeterConfigStatsBuilder itemBuilder = new MeterConfigStatsBuilder()
                     .setFlags(readMeterFlags(message))
-                    .setMeterId(new MeterId(message.readUnsignedInt()));
+                    .setMeterId(new MeterId(readUint32(message)));
 
             final List<MeterBandHeader> subItems = new ArrayList<>();
             int actualLength = METER_CONFIG_LENGTH;
@@ -79,8 +77,8 @@ public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<Mul
                                         .setFlags(new MeterBandType(true, false, false))
                                         .build())
                                 .setBandType(new DropBuilder()
-                                        .setDropRate(message.readUnsignedInt())
-                                        .setDropBurstSize(message.readUnsignedInt())
+                                        .setDropRate(readUint32(message))
+                                        .setDropBurstSize(readUint32(message))
                                         .build());
                         message.skipBytes(PADDING_IN_METER_BAND_DROP_HEADER);
                         break;
@@ -91,9 +89,9 @@ public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<Mul
                                         .setFlags(new MeterBandType(false, true, false))
                                         .build())
                                 .setBandType(new DscpRemarkBuilder()
-                                        .setDscpRemarkRate(message.readUnsignedInt())
-                                        .setDscpRemarkBurstSize(message.readUnsignedInt())
-                                        .setPrecLevel(message.readUnsignedByte())
+                                        .setDscpRemarkRate(readUint32(message))
+                                        .setDscpRemarkBurstSize(readUint32(message))
+                                        .setPrecLevel(readUint8(message))
                                         .build());
                         message.skipBytes(PADDING_IN_METER_BAND_DSCP_HEADER);
                         break;
@@ -133,17 +131,17 @@ public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<Mul
                 .build();
     }
 
-    private static MeterFlags readMeterFlags(ByteBuf message) {
+    private static MeterFlags readMeterFlags(final ByteBuf message) {
         int input = message.readUnsignedShort();
-        final Boolean mfKbps = (input & (1)) != 0;
-        final Boolean mfPktps = (input & (1 << 1)) != 0;
-        final Boolean mfBurst = (input & (1 << 2)) != 0;
-        final Boolean mfStats = (input & (1 << 3)) != 0;
+        final Boolean mfKbps = (input & 1) != 0;
+        final Boolean mfPktps = (input & 1 << 1) != 0;
+        final Boolean mfBurst = (input & 1 << 2) != 0;
+        final Boolean mfStats = (input & 1 << 3) != 0;
         return new MeterFlags(mfBurst, mfKbps, mfPktps, mfStats);
     }
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
-        registry = deserializerRegistry;
+    public void injectDeserializerRegistry(final DeserializerRegistry deserializerRegistry) {
+        registry = requireNonNull(deserializerRegistry);
     }
 }
index b2e3d9352f989aec146085f95ad3b0bedc5671fe..2465a7505cf445c095d846614c854a42afb74cb0 100644 (file)
@@ -5,9 +5,11 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
@@ -27,21 +29,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.m
 public class MultipartReplyMeterFeaturesDeserializer implements OFDeserializer<MultipartReplyBody> {
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         return new MultipartReplyMeterFeaturesBuilder()
-                .setMaxMeter(new Counter32(message.readUnsignedInt()))
+                .setMaxMeter(new Counter32(readUint32(message)))
                 .setMeterBandSupported(readMeterBands(message))
                 .setMeterCapabilitiesSupported(readMeterCapabilities(message))
-                .setMaxBands(message.readUnsignedByte())
-                .setMaxColor(message.readUnsignedByte())
+                .setMaxBands(readUint8(message))
+                .setMaxColor(readUint8(message))
                 .build();
     }
 
-    private static List<Class<? extends MeterBand>> readMeterBands(ByteBuf message) {
+    private static List<Class<? extends MeterBand>> readMeterBands(final ByteBuf message) {
         final List<Class<? extends MeterBand>> bandTypes = new ArrayList<>();
         final long typesMask = message.readUnsignedInt();
-        final boolean mbtDrop = (typesMask & (1)) != 0;
-        final boolean mbtDscpRemark = (typesMask & (1 << 1)) != 0;
+        final boolean mbtDrop = (typesMask & 1) != 0;
+        final boolean mbtDscpRemark = (typesMask & 1 << 1) != 0;
 
         if (mbtDrop) {
             bandTypes.add(MeterBandDrop.class);
@@ -53,14 +55,14 @@ public class MultipartReplyMeterFeaturesDeserializer implements OFDeserializer<M
         return bandTypes;
     }
 
-    private static List<Class<? extends MeterCapability>> readMeterCapabilities(ByteBuf message) {
+    private static List<Class<? extends MeterCapability>> readMeterCapabilities(final ByteBuf message) {
         final List<Class<? extends MeterCapability>> meterCapabilities = new ArrayList<>();
         final long capabilitiesMask = message.readUnsignedInt();
 
-        final boolean mfKbps = (capabilitiesMask & (1)) != 0;
-        final boolean mfPktps = (capabilitiesMask & (1 << 1)) != 0;
-        final boolean mfBurst = (capabilitiesMask & (1 << 2)) != 0;
-        final boolean mfStats = (capabilitiesMask & (1 << 3)) != 0;
+        final boolean mfKbps = (capabilitiesMask & 1) != 0;
+        final boolean mfPktps = (capabilitiesMask & 1 << 1) != 0;
+        final boolean mfBurst = (capabilitiesMask & 1 << 2) != 0;
+        final boolean mfStats = (capabilitiesMask & 1 << 3) != 0;
 
         if (mfKbps) {
             meterCapabilities.add(MeterKbps.class);
index bdfd293ad54ad83a32d30f0949c33d02969fce04..1a2e28bb12e59fd602b2a11b741ad7e2a508176a 100644 (file)
@@ -7,10 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
@@ -26,6 +26,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MultipartReplyMeterStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
     private static final byte PADDING_IN_METER_STATS_HEADER = 6;
@@ -33,64 +35,48 @@ public class MultipartReplyMeterStatsDeserializer implements OFDeserializer<Mult
     private static final byte METER_BAND_STATS_LENGTH = 16;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
-        final MultipartReplyMeterStatsBuilder builder = new MultipartReplyMeterStatsBuilder();
-        final List<MeterStats> items = new ArrayList<>();
+    public MultipartReplyBody deserialize(final ByteBuf message) {
+        final var items = BindingMap.<MeterStatsKey, MeterStats>orderedBuilder();
 
         while (message.readableBytes() > 0) {
             final MeterStatsBuilder itemBuilder = new MeterStatsBuilder()
-                .setMeterId(new MeterId(message.readUnsignedInt()));
+                .setMeterId(new MeterId(readUint32(message)));
 
             final int itemLength = message.readUnsignedShort();
             message.skipBytes(PADDING_IN_METER_STATS_HEADER);
 
             itemBuilder
-                .withKey(new MeterStatsKey(itemBuilder.getMeterId()))
-                .setFlowCount(new Counter32(message.readUnsignedInt()));
-
-            final byte[] packetCount = new byte[Long.BYTES];
-            message.readBytes(packetCount);
-            final byte[] byteCount = new byte[Long.BYTES];
-            message.readBytes(byteCount);
+                .setFlowCount(new Counter32(readUint32(message)));
 
             itemBuilder
-                .setPacketInCount(new Counter64(new BigInteger(1, packetCount)))
-                .setByteInCount(new Counter64(new BigInteger(1, byteCount)))
+                .setPacketInCount(new Counter64(readUint64(message)))
+                .setByteInCount(new Counter64(readUint64(message)))
                 .setDuration(new DurationBuilder()
-                        .setSecond(new Counter32(message.readUnsignedInt()))
-                        .setNanosecond(new Counter32(message.readUnsignedInt()))
+                        .setSecond(new Counter32(readUint32(message)))
+                        .setNanosecond(new Counter32(readUint32(message)))
                         .build());
 
-            final List<BandStat> subItems = new ArrayList<>();
+            final var subItems = BindingMap.<BandStatKey, BandStat>orderedBuilder();
             int actualLength = METER_BODY_LENGTH;
-            long bandKey = 0;
+            int bandKey = 0;
 
             while (actualLength < itemLength) {
-                final byte[] packetCountB = new byte[Long.BYTES];
-                message.readBytes(packetCountB);
-                final byte[] byteCountB = new byte[Long.BYTES];
-                message.readBytes(byteCountB);
-
                 subItems.add(new BandStatBuilder()
-                    .setBandId(new BandId(bandKey))
-                    .withKey(new BandStatKey(new BandId(bandKey)))
-                    .setPacketBandCount(new Counter64(new BigInteger(1, packetCountB)))
-                    .setByteBandCount(new Counter64(new BigInteger(1, byteCountB)))
+                    .setBandId(new BandId(Uint32.valueOf(bandKey++)))
+                    .setPacketBandCount(new Counter64(readUint64(message)))
+                    .setByteBandCount(new Counter64(readUint64(message)))
                     .build());
 
-                bandKey++;
                 actualLength += METER_BAND_STATS_LENGTH;
             }
 
             items.add(itemBuilder
                     .setMeterBandStats(new MeterBandStatsBuilder()
-                        .setBandStat(subItems)
+                        .setBandStat(subItems.build())
                         .build())
                     .build());
         }
 
-        return builder
-            .setMeterStats(items)
-            .build();
+        return new MultipartReplyMeterStatsBuilder().setMeterStats(items.build()).build();
     }
 }
index 6459ecf58f66f656238429fc56a0691162767218..d87235aa4b989e5d3233f14aa28617bf5e73a490 100644 (file)
@@ -5,11 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -24,12 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.m
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.reply.multipart.reply.body.MultipartReplyQueueStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapKey;
 
 public class MultipartReplyQueueStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyQueueStatsBuilder builder = new MultipartReplyQueueStatsBuilder();
         final List<QueueIdAndStatisticsMap> items = new ArrayList<>();
 
@@ -37,25 +37,16 @@ public class MultipartReplyQueueStatsDeserializer implements OFDeserializer<Mult
             final long port = message.readUnsignedInt();
             final NodeConnectorId nodeConnectorId = new NodeConnectorId(OpenflowPortsUtil
                     .getProtocolAgnosticPortUri(EncodeConstants.OF13_VERSION_ID, port));
-            final QueueId queueId = new QueueId(message.readUnsignedInt());
-
-            final byte[] txBytes = new byte[Long.BYTES];
-            message.readBytes(txBytes);
-            final byte[] txPackets = new byte[Long.BYTES];
-            message.readBytes(txPackets);
-            final byte[] txErrors = new byte[Long.BYTES];
-            message.readBytes(txErrors);
 
             items.add(new QueueIdAndStatisticsMapBuilder()
-                .withKey(new QueueIdAndStatisticsMapKey(nodeConnectorId, queueId))
                 .setNodeConnectorId(nodeConnectorId)
-                .setQueueId(queueId)
-                .setTransmittedBytes(new Counter64(new BigInteger(1, txBytes)))
-                .setTransmittedPackets(new Counter64(new BigInteger(1, txPackets)))
-                .setTransmissionErrors(new Counter64(new BigInteger(1, txErrors)))
+                .setQueueId(new QueueId(readUint32(message)))
+                .setTransmittedBytes(new Counter64(readUint64(message)))
+                .setTransmittedPackets(new Counter64(readUint64(message)))
+                .setTransmissionErrors(new Counter64(readUint64(message)))
                 .setDuration(new DurationBuilder()
-                    .setSecond(new Counter32(message.readUnsignedInt()))
-                    .setNanosecond(new Counter32(message.readUnsignedInt()))
+                    .setSecond(new Counter32(readUint32(message)))
+                    .setNanosecond(new Counter32(readUint32(message)))
                     .build())
                 .build());
         }
index e496af694d5f15507fb7f90d6fb456fcdd5aad50..4f07609c2f09a4f6f5821fb2089143370a0c7d09 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.openflowplugin.impl.protocol.deserialization.util.Instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
@@ -307,11 +308,8 @@ public class MultipartReplyTableFeaturesDeserializer implements OFDeserializer<M
         return tableIds;
     }
 
-    private List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list
-            .Instruction> readInstructions(final ByteBuf message, final int length) {
-
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list
-                .Instruction> instructions = new ArrayList<>();
+    private Map<InstructionKey, Instruction> readInstructions(final ByteBuf message, final int length) {
+        final var instructions = BindingMap.<InstructionKey, Instruction>orderedBuilder();
         final int startIndex = message.readerIndex();
         int offset = 0;
 
@@ -330,7 +328,7 @@ public class MultipartReplyTableFeaturesDeserializer implements OFDeserializer<M
             }
         }
 
-        return instructions;
+        return instructions.build();
     }
 
     @SuppressWarnings("checkstyle:LineLength")
index 0a941797eaf922dad99ada9d23b79e87b64313a4..f7a3adbec7a142b5f1a943848d6e07fd375cb4c8 100644 (file)
@@ -12,7 +12,6 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
-import java.math.BigInteger;
 import java.util.Collection;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
@@ -60,7 +59,7 @@ public class RoleService extends AbstractSimpleService<RoleRequestInputBuilder,
         final RoleRequestInputBuilder roleRequestInputBuilder = new RoleRequestInputBuilder();
         roleRequestInputBuilder.setRole(toOFJavaRole(OfpRole.NOCHANGE));
         roleRequestInputBuilder.setVersion(version);
-        roleRequestInputBuilder.setGenerationId(BigInteger.ZERO);
+        roleRequestInputBuilder.setGenerationId(Uint64.ZERO);
 
         final SettableFuture<Uint64> finalFuture = SettableFuture.create();
         final ListenableFuture<RpcResult<RoleRequestOutput>> genIdListenableFuture =
index ef734d242f4df4ccb4062c4b41acb9167a2cae07..aa345f742c8649e1f66454eb86966548b7ac0bb6 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.services.batch;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -13,8 +12,7 @@ import com.google.common.base.Function;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.input.batch.batch.choice.flat.batch.add.flow._case.FlatBatchAddFlow;
@@ -22,6 +20,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev16032
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.input.batch.batch.choice.flat.batch.update.flow._case.FlatBatchUpdateFlow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailure;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailureBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailureKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.batch.failure.batch.item.id.choice.FlatBatchFailureFlowIdCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.AddFlowsBatchInput;
@@ -31,16 +30,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.Rem
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.RemoveFlowsBatchInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.UpdateFlowsBatchInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.UpdateFlowsBatchInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.add.flows.batch.input.BatchAddFlows;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.add.flows.batch.input.BatchAddFlowsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.batch.flow.output.list.grouping.BatchFailedFlowsOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.remove.flows.batch.input.BatchRemoveFlows;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.remove.flows.batch.input.BatchRemoveFlowsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.update.flows.batch.input.BatchUpdateFlows;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.update.flows.batch.input.BatchUpdateFlowsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 /**
  * Transform between FlatBatch API and flow batch API.
@@ -58,13 +55,11 @@ public final class FlatBatchFlowAdapters {
      * .opendaylight.flows.service.rev160314.SalFlowsBatchService#addFlowsBatch(AddFlowsBatchInput)}
      */
     public static AddFlowsBatchInput adaptFlatBatchAddFlow(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchAddFlows> batchFlows = new ArrayList<>();
-        for (FlatBatchAddFlow batchAddFlows : planStep.<FlatBatchAddFlow>getTaskBag()) {
-            final BatchAddFlows addFlows = new BatchAddFlowsBuilder((Flow) batchAddFlows)
-                    .setFlowId(batchAddFlows.getFlowId())
-                    .build();
-            batchFlows.add(addFlows);
-        }
+        final var batchFlows = planStep.<FlatBatchAddFlow>getTaskBag().stream()
+            .map(batchAddFlows -> new BatchAddFlowsBuilder((Flow) batchAddFlows)
+                .setFlowId(batchAddFlows.getFlowId())
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new AddFlowsBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
@@ -81,13 +76,11 @@ public final class FlatBatchFlowAdapters {
      * .opendaylight.flows.service.rev160314.SalFlowsBatchService#removeFlowsBatch(RemoveFlowsBatchInput)}
      */
     public static RemoveFlowsBatchInput adaptFlatBatchRemoveFlow(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchRemoveFlows> batchFlows = new ArrayList<>();
-        for (FlatBatchRemoveFlow batchRemoveFlow : planStep.<FlatBatchRemoveFlow>getTaskBag()) {
-            final BatchRemoveFlows removeFlows = new BatchRemoveFlowsBuilder((Flow) batchRemoveFlow)
-                    .setFlowId(batchRemoveFlow.getFlowId())
-                    .build();
-            batchFlows.add(removeFlows);
-        }
+        final var batchFlows = planStep.<FlatBatchRemoveFlow>getTaskBag().stream()
+            .map(batchRemoveFlow -> new BatchRemoveFlowsBuilder((Flow) batchRemoveFlow)
+                .setFlowId(batchRemoveFlow.getFlowId())
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new RemoveFlowsBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
@@ -104,12 +97,9 @@ public final class FlatBatchFlowAdapters {
      * .opendaylight.flows.service.rev160314.SalFlowsBatchService#updateFlowsBatch(UpdateFlowsBatchInput)}
      */
     public static UpdateFlowsBatchInput adaptFlatBatchUpdateFlow(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchUpdateFlows> batchFlows = new ArrayList<>();
-        for (FlatBatchUpdateFlow batchUpdateFlow : planStep.<FlatBatchUpdateFlow>getTaskBag()) {
-            final BatchUpdateFlows updateFlows = new BatchUpdateFlowsBuilder(batchUpdateFlow)
-                    .build();
-            batchFlows.add(updateFlows);
-        }
+        final var batchFlows = planStep.<FlatBatchUpdateFlow>getTaskBag().stream()
+            .map(batchUpdateFlow -> new BatchUpdateFlowsBuilder(batchUpdateFlow).build())
+            .collect(BindingMap.toOrderedMap());
 
         return new UpdateFlowsBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
@@ -126,32 +116,23 @@ public final class FlatBatchFlowAdapters {
     @VisibleForTesting
     static <T extends BatchFlowOutputListGrouping> Function<RpcResult<T>, RpcResult<ProcessFlatBatchOutput>>
         convertBatchFlowResult(final int stepOffset) {
-        return input -> {
-            List<BatchFailure> batchFailures = wrapBatchFlowFailuresForFlat(input, stepOffset);
-            ProcessFlatBatchOutputBuilder outputBuilder =
-                    new ProcessFlatBatchOutputBuilder().setBatchFailure(batchFailures);
-            return RpcResultBuilder.<ProcessFlatBatchOutput>status(input.isSuccessful())
-                                   .withRpcErrors(input.getErrors())
-                                   .withResult(outputBuilder.build())
-                                   .build();
-        };
+        return input -> RpcResultBuilder.<ProcessFlatBatchOutput>status(input.isSuccessful())
+            .withRpcErrors(input.getErrors())
+            .withResult(new ProcessFlatBatchOutputBuilder()
+                .setBatchFailure(wrapBatchFlowFailuresForFlat(input, stepOffset))
+                .build())
+            .build();
     }
 
-    private static <T extends BatchFlowOutputListGrouping> List<BatchFailure> wrapBatchFlowFailuresForFlat(
-            final RpcResult<T> input, final int stepOffset) {
-        final List<BatchFailure> batchFailures = new ArrayList<>();
-        if (input.getResult().getBatchFailedFlowsOutput() != null) {
-            for (BatchFailedFlowsOutput stepOutput : input.getResult().nonnullBatchFailedFlowsOutput().values()) {
-                final BatchFailure batchFailure = new BatchFailureBuilder()
-                        .setBatchOrder(stepOffset + stepOutput.getBatchOrder().toJava())
-                        .setBatchItemIdChoice(new FlatBatchFailureFlowIdCaseBuilder()
-                                .setFlowId(stepOutput.getFlowId())
-                                .build())
-                        .build();
-                batchFailures.add(batchFailure);
-            }
-        }
-        return batchFailures;
+    private static <T extends BatchFlowOutputListGrouping>
+            Map<BatchFailureKey, BatchFailure> wrapBatchFlowFailuresForFlat(final RpcResult<T> input,
+                final int stepOffset) {
+        return input.getResult().nonnullBatchFailedFlowsOutput().values().stream()
+            .map(stepOutput -> new BatchFailureBuilder()
+                .setBatchOrder(Uint16.valueOf(stepOffset + stepOutput.getBatchOrder().toJava()))
+                .setBatchItemIdChoice(new FlatBatchFailureFlowIdCaseBuilder().setFlowId(stepOutput.getFlowId()).build())
+                .build())
+            .collect(BindingMap.toOrderedMap());
     }
 
     /**
index 5ea9999fac0bd8f1c75fefb692b2a134e57b0173..4f913252d9178dd3b45aa46935efb31499e634d0 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.services.batch;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -15,6 +14,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.input.batch.batch.choice.flat.batch.add.group._case.FlatBatchAddGroup;
@@ -22,6 +22,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev16032
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.input.batch.batch.choice.flat.batch.update.group._case.FlatBatchUpdateGroup;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailure;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailureBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailureKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.batch.failure.batch.item.id.choice.FlatBatchFailureGroupIdCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.AddGroupsBatchInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.AddGroupsBatchInputBuilder;
@@ -30,16 +31,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.Re
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.RemoveGroupsBatchInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.UpdateGroupsBatchInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.UpdateGroupsBatchInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.add.groups.batch.input.BatchAddGroups;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.add.groups.batch.input.BatchAddGroupsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.batch.group.output.list.grouping.BatchFailedGroupsOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.remove.groups.batch.input.BatchRemoveGroups;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.remove.groups.batch.input.BatchRemoveGroupsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.update.groups.batch.input.BatchUpdateGroups;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groups.service.rev160315.update.groups.batch.input.BatchUpdateGroupsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 /**
  * Transform between FlatBatch API and group batch API.
@@ -57,13 +57,11 @@ public final class FlatBatchGroupAdapters {
      * .opendaylight.groups.service.rev160315.SalGroupsBatchService#addGroupsBatch(AddGroupsBatchInput)}
      */
     public static AddGroupsBatchInput adaptFlatBatchAddGroup(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchAddGroups> batchGroups = new ArrayList<>();
-        for (FlatBatchAddGroup batchAddGroup : planStep.<FlatBatchAddGroup>getTaskBag()) {
-            final BatchAddGroups addGroups = new BatchAddGroupsBuilder(batchAddGroup)
+        final var batchGroups = planStep.<FlatBatchAddGroup>getTaskBag().stream()
+            .map(batchAddGroup -> new BatchAddGroupsBuilder(batchAddGroup)
                     .setGroupId(batchAddGroup.getGroupId())
-                    .build();
-            batchGroups.add(addGroups);
-        }
+                    .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new AddGroupsBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
@@ -80,13 +78,11 @@ public final class FlatBatchGroupAdapters {
      * .opendaylight.groups.service.rev160315.SalGroupsBatchService#removeGroupsBatch(RemoveGroupsBatchInput)}
      */
     public static RemoveGroupsBatchInput adaptFlatBatchRemoveGroup(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchRemoveGroups> batchGroups = new ArrayList<>();
-        for (FlatBatchRemoveGroup batchRemoveGroup : planStep.<FlatBatchRemoveGroup>getTaskBag()) {
-            final BatchRemoveGroups removeGroups = new BatchRemoveGroupsBuilder(batchRemoveGroup)
-                    .setGroupId(batchRemoveGroup.getGroupId())
-                    .build();
-            batchGroups.add(removeGroups);
-        }
+        final var batchGroups = planStep.<FlatBatchRemoveGroup>getTaskBag().stream()
+            .map(batchRemoveGroup -> new BatchRemoveGroupsBuilder(batchRemoveGroup)
+                .setGroupId(batchRemoveGroup.getGroupId())
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new RemoveGroupsBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
@@ -125,32 +121,25 @@ public final class FlatBatchGroupAdapters {
     @VisibleForTesting
     static <T extends BatchGroupOutputListGrouping> Function<RpcResult<T>, RpcResult<ProcessFlatBatchOutput>>
         convertBatchGroupResult(final int stepOffset) {
-        return input -> {
-            List<BatchFailure> batchFailures = wrapBatchGroupFailuresForFlat(input, stepOffset);
-            ProcessFlatBatchOutputBuilder outputBuilder =
-                    new ProcessFlatBatchOutputBuilder().setBatchFailure(batchFailures);
-            return RpcResultBuilder.<ProcessFlatBatchOutput>status(input.isSuccessful())
-                                   .withRpcErrors(input.getErrors())
-                                   .withResult(outputBuilder.build())
-                                   .build();
-        };
+        return input -> RpcResultBuilder.<ProcessFlatBatchOutput>status(input.isSuccessful())
+            .withRpcErrors(input.getErrors())
+            .withResult(new ProcessFlatBatchOutputBuilder()
+                .setBatchFailure(wrapBatchGroupFailuresForFlat(input, stepOffset))
+                .build())
+            .build();
     }
 
-    private static <T extends BatchGroupOutputListGrouping> List<BatchFailure> wrapBatchGroupFailuresForFlat(
-            final RpcResult<T> input, final int stepOffset) {
-        final List<BatchFailure> batchFailures = new ArrayList<>();
-        if (input.getResult().getBatchFailedGroupsOutput() != null) {
-            for (BatchFailedGroupsOutput stepOutput : input.getResult().nonnullBatchFailedGroupsOutput().values()) {
-                final BatchFailure batchFailure = new BatchFailureBuilder()
-                        .setBatchOrder(stepOffset + stepOutput.getBatchOrder().toJava())
-                        .setBatchItemIdChoice(new FlatBatchFailureGroupIdCaseBuilder()
-                                .setGroupId(stepOutput.getGroupId())
-                                .build())
-                        .build();
-                batchFailures.add(batchFailure);
-            }
-        }
-        return batchFailures;
+    private static <T extends BatchGroupOutputListGrouping>
+            Map<BatchFailureKey, BatchFailure> wrapBatchGroupFailuresForFlat(final RpcResult<T> input,
+                final int stepOffset) {
+        return input.getResult().nonnullBatchFailedGroupsOutput().values().stream()
+            .map(stepOutput -> new BatchFailureBuilder()
+                .setBatchOrder(Uint16.valueOf(stepOffset + stepOutput.getBatchOrder().toJava()))
+                .setBatchItemIdChoice(new FlatBatchFailureGroupIdCaseBuilder()
+                    .setGroupId(stepOutput.getGroupId())
+                    .build())
+                .build())
+            .collect(BindingMap.toOrderedMap());
     }
 
     /**
index 85fdacfd9f378d605682382cadc94d6a9b9f7189..5e10ef4f463e6c5472f76319fbf56475ad7d4177 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.services.batch;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -31,13 +30,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.Re
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.RemoveMetersBatchInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.UpdateMetersBatchInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.UpdateMetersBatchInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.add.meters.batch.input.BatchAddMeters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.add.meters.batch.input.BatchAddMetersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.batch.meter.output.list.grouping.BatchFailedMetersOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.remove.meters.batch.input.BatchRemoveMeters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.remove.meters.batch.input.BatchRemoveMetersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.update.meters.batch.input.BatchUpdateMeters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.update.meters.batch.input.BatchUpdateMetersBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 
@@ -57,13 +55,11 @@ public final class FlatBatchMeterAdapters {
      * .opendaylight.meters.service.rev160316.SalMetersBatchService#addMetersBatch(AddMetersBatchInput)}
      */
     public static AddMetersBatchInput adaptFlatBatchAddMeter(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchAddMeters> batchMeters = new ArrayList<>();
-        for (FlatBatchAddMeter batchAddMeter : planStep.<FlatBatchAddMeter>getTaskBag()) {
-            final BatchAddMeters addMeters = new BatchAddMetersBuilder(batchAddMeter)
-                    .setMeterId(batchAddMeter.getMeterId())
-                    .build();
-            batchMeters.add(addMeters);
-        }
+        final var batchMeters = planStep.<FlatBatchAddMeter>getTaskBag().stream()
+            .map(batchAddMeter -> new BatchAddMetersBuilder(batchAddMeter)
+                .setMeterId(batchAddMeter.getMeterId())
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new AddMetersBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
@@ -80,13 +76,11 @@ public final class FlatBatchMeterAdapters {
      * .opendaylight.meters.service.rev160316.SalMetersBatchService#removeMetersBatch(RemoveMetersBatchInput)}
      */
     public static RemoveMetersBatchInput adaptFlatBatchRemoveMeter(final BatchPlanStep planStep, final NodeRef node) {
-        final List<BatchRemoveMeters> batchMeters = new ArrayList<>();
-        for (FlatBatchRemoveMeter batchRemoveMeter : planStep.<FlatBatchRemoveMeter>getTaskBag()) {
-            final BatchRemoveMeters removeMeters = new BatchRemoveMetersBuilder(batchRemoveMeter)
-                    .setMeterId(batchRemoveMeter.getMeterId())
-                    .build();
-            batchMeters.add(removeMeters);
-        }
+        final var batchMeters = planStep.<FlatBatchRemoveMeter>getTaskBag().stream()
+            .map(batchRemoveMeter -> new BatchRemoveMetersBuilder(batchRemoveMeter)
+                .setMeterId(batchRemoveMeter.getMeterId())
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new RemoveMetersBatchInputBuilder()
                 .setBarrierAfter(planStep.isBarrierAfter())
index fd7fd93e3f90487db374434d1478e0f9054a6bf9..eebddf33ac9f986dfcbe370ce4b9e690c381c8d6 100644 (file)
@@ -40,9 +40,9 @@ public abstract class AbstractCompatibleStatService<I extends DataContainer, O,
     private final AtomicLong compatibilityXidSeed;
     private final OpenflowVersion ofVersion;
 
-    public AbstractCompatibleStatService(RequestContextStack requestContextStack,
-                                         DeviceContext deviceContext,
-                                         AtomicLong compatibilityXidSeed) {
+    public AbstractCompatibleStatService(final RequestContextStack requestContextStack,
+                                         final DeviceContext deviceContext,
+                                         final AtomicLong compatibilityXidSeed) {
         super(requestContextStack, deviceContext);
         this.compatibilityXidSeed = compatibilityXidSeed;
         ofVersion = OpenflowVersion.get(getVersion());
@@ -65,7 +65,7 @@ public abstract class AbstractCompatibleStatService<I extends DataContainer, O,
         // hook notification publishing
         Futures.addCallback(rpcResultListenableFuture, new FutureCallback<RpcResult<List<MultipartReply>>>() {
             @Override
-            public void onSuccess(RpcResult<List<MultipartReply>> result) {
+            public void onSuccess(final RpcResult<List<MultipartReply>> result) {
                 if (result != null && result.isSuccessful()) {
                     // transform rpc result (raw multipart) to notification
                     final N flowNotification = transformToNotification(result.getResult(), emulatedTxId);
@@ -77,7 +77,7 @@ public abstract class AbstractCompatibleStatService<I extends DataContainer, O,
             }
 
             @Override
-            public void onFailure(Throwable throwable) {
+            public void onFailure(final Throwable throwable) {
                 LOG.debug("compatibility callback crashed - NOT emitting notification: {}",
                         input.getClass().getSimpleName(), throwable);
             }