Migrate .setXid() callers 39/94339/8
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 2 Jan 2021 12:29:44 +0000 (13:29 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 2 Jan 2021 18:39:46 +0000 (19:39 +0100)
Use ByteBufUtils to readUint32() instead. While we are at it, apply
the same pattern to other methods as well.

JIRA: OPNFLWPLG-1099
Change-Id: Ifcd4beab39ed00e93db3b4b062a56a0d8bad6b35
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
17 files changed:
extension/openflowplugin-extension-onf/pom.xml
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/OnfConstants.java
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/OnfExtensionProvider.java
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/converter/BundleAddMessageConverter.java
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/converter/BundleControlConverter.java
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/deserializer/BundleControlFactory.java
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/deserializer/OnfExperimenterErrorFactory.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/converter/BundleAddMessageConverterTest.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/messages/AsyncConfigMessageDeserializer.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/messages/GroupMessageDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/messages/MeterMessageDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/messages/PacketInMessageDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/messages/PortMessageDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyGroupFeaturesDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyPortDescDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyTableFeaturesDeserializer.java

index ccdb47c3b8c9ae9143969fdf8a0fd84c1291cadc..6264b59cc373edf64738ac258e81265d74fe9d69 100644 (file)
             <groupId>org.opendaylight.openflowplugin.openflowjava</groupId>
             <artifactId>openflow-protocol-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common-netty</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
index b2e5551e4f9440bd5487a2ea92d44239d3c2d863..13f35acd3a4ba0b1028f2264a035918ad6e2b4c4 100644 (file)
@@ -5,20 +5,32 @@
  * 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.extension.onf;
 
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId;
+import org.opendaylight.yangtools.yang.common.Uint32;
+
 /**
  * Stores common constants for ONF approved extensions.
  */
 public interface OnfConstants {
+    /**
+     * Experimenter ID of ONF approved extensions.
+     */
+    long ONF_EXPERIMENTER_ID_LONG = 0x4F4E4600;
 
-    /** Experimenter ID of ONF approved extensions. */
-    long ONF_EXPERIMENTER_ID = 0x4F4E4600;
+    /**
+     * Experimenter ID of ONF approved extensions.
+     */
+    ExperimenterId ONF_EXPERIMENTER_ID = new ExperimenterId(Uint32.valueOf(ONF_EXPERIMENTER_ID_LONG).intern());
 
-    /** ONF_ET_BUNDLE_CONTROL message type. */
+    /**
+     * ONF_ET_BUNDLE_CONTROL message type.
+     */
     int ONF_ET_BUNDLE_CONTROL = 2300;
 
-    /** ONF_ET_BUNDLE_ADD_MESSAGE message type. */
+    /**
+     * ONF_ET_BUNDLE_ADD_MESSAGE message type.
+     */
     int ONF_ET_BUNDLE_ADD_MESSAGE = 2301;
 }
index f154165e5bcf8e5c7e14cccf2adf01c097abec74..0a881c3557a61ff4e388aef34d15f3fd05f88fb9 100644 (file)
@@ -66,13 +66,13 @@ public class OnfExtensionProvider {
     private void registerSerializers() {
         switchConnectionProvider.registerExperimenterMessageSerializer(
                 new ExperimenterIdTypeSerializerKey<>(OFConstants.OFP_VERSION_1_3,
-                                                      OnfConstants.ONF_EXPERIMENTER_ID,
+                                                      OnfConstants.ONF_EXPERIMENTER_ID_LONG,
                                                       OnfConstants.ONF_ET_BUNDLE_CONTROL,
                                                       ExperimenterDataOfChoice.class),
                 new BundleControlFactory());
         switchConnectionProvider.registerExperimenterMessageSerializer(
                 new ExperimenterIdTypeSerializerKey<>(OFConstants.OFP_VERSION_1_3,
-                                                      OnfConstants.ONF_EXPERIMENTER_ID,
+                                                      OnfConstants.ONF_EXPERIMENTER_ID_LONG,
                                                       OnfConstants.ONF_ET_BUNDLE_ADD_MESSAGE,
                                                       ExperimenterDataOfChoice.class),
                 new BundleAddMessageFactory());
@@ -82,13 +82,13 @@ public class OnfExtensionProvider {
     private void registerDeserializers() {
         switchConnectionProvider.registerExperimenterMessageDeserializer(
                 new ExperimenterIdTypeDeserializerKey(OFConstants.OFP_VERSION_1_3,
-                                                      OnfConstants.ONF_EXPERIMENTER_ID,
+                                                      OnfConstants.ONF_EXPERIMENTER_ID_LONG,
                                                       OnfConstants.ONF_ET_BUNDLE_CONTROL,
                                                       ExperimenterDataOfChoice.class),
                 new org.opendaylight.openflowplugin.extension.onf.deserializer.BundleControlFactory());
         switchConnectionProvider.registerErrorDeserializer(
                 new ExperimenterIdDeserializerKey(OFConstants.OFP_VERSION_1_3,
-                                                  OnfConstants.ONF_EXPERIMENTER_ID,
+                                                  OnfConstants.ONF_EXPERIMENTER_ID_LONG,
                                                   ErrorMessage.class),
                 new OnfExperimenterErrorFactory());
     }
index eac799ae0703a7880ea509b82514c235369875bd..07f74be225bcd5dcfb64f2d69b8c484b1ed527fe 100644 (file)
@@ -68,8 +68,8 @@ public class BundleAddMessageConverter implements
     private static final ConvertorExecutor CONVERTER_EXECUTOR = ConvertorManagerFactory.createDefaultManager();
 
     @Override
-    public BundleAddMessageOnf convert(BundleAddMessageSal experimenterMessageCase,
-            ExtensionConvertorData extensionData) throws ConversionException {
+    public BundleAddMessageOnf convert(final BundleAddMessageSal experimenterMessageCase,
+            final ExtensionConvertorData extensionData) throws ConversionException {
         final OnfAddMessageGroupingDataBuilder dataBuilder = new OnfAddMessageGroupingDataBuilder();
         dataBuilder.setBundleId(experimenterMessageCase.getSalAddMessageData().getBundleId());
         dataBuilder.setFlags(experimenterMessageCase.getSalAddMessageData().getFlags());
@@ -190,7 +190,7 @@ public class BundleAddMessageConverter implements
 
     @Override
     public ExperimenterId getExperimenterId() {
-        return new ExperimenterId(OnfConstants.ONF_EXPERIMENTER_ID);
+        return OnfConstants.ONF_EXPERIMENTER_ID;
     }
 
     @Override
index 012b86c619a9230c42270aa4137fe785d64b6551..a60362a01a9d1f7b20cd504c2751bf52b0bf05d1 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.extension.onf.converter;
 
 import org.opendaylight.openflowplugin.extension.api.ConverterMessageToOFJava;
@@ -29,29 +28,26 @@ import org.slf4j.LoggerFactory;
 public class BundleControlConverter implements
         ConverterMessageToOFJava<BundleControlSal, BundleControlOnf, ExtensionConvertorData>,
         ConvertorMessageFromOFJava<BundleControlOnf, MessagePath> {
-
     private static final Logger LOG = LoggerFactory.getLogger(BundleControlConverter.class);
 
     @Override
     public BundleControlOnf convert(final BundleControlSal experimenterMessageCase, final ExtensionConvertorData data) {
         LOG.trace("Converting the bundle control message for device {} with xid {} and type {}",
-                data.getDatapathId(), data.getXid(), experimenterMessageCase.getSalControlData().getType());
+            data.getDatapathId(), data.getXid(), experimenterMessageCase.getSalControlData().getType());
         return new BundleControlOnfBuilder().setOnfControlGroupingData(
-                new OnfControlGroupingDataBuilder(experimenterMessageCase.getSalControlData()).build()).build();
+            new OnfControlGroupingDataBuilder(experimenterMessageCase.getSalControlData()).build()).build();
     }
 
     @Override
-    public BundleControlSal convert(BundleControlOnf input, MessagePath path) {
+    public BundleControlSal convert(final BundleControlOnf input, final MessagePath path) {
         return new BundleControlSalBuilder()
-                .setSalControlData(
-                        new SalControlDataBuilder(input.getOnfControlGroupingData()).build()
-                )
-                .build();
+            .setSalControlData(new SalControlDataBuilder(input.getOnfControlGroupingData()).build())
+            .build();
     }
 
     @Override
     public ExperimenterId getExperimenterId() {
-        return new ExperimenterId(OnfConstants.ONF_EXPERIMENTER_ID);
+        return OnfConstants.ONF_EXPERIMENTER_ID;
     }
 
     @Override
index ddcf313bc4d3ef6a744e929b488d4c0cc292c914..487f92971206b27dcc1eed0a8b5cb35a90ac584a 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.extension.onf.deserializer;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
@@ -30,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControlOnf;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControlOnfBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.bundle.control.onf.OnfControlGroupingDataBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 /**
  * Translates BundleControl messages (OpenFlow v1.3 extension #230).
@@ -39,8 +41,8 @@ public class BundleControlFactory implements OFDeserializer<BundleControlOnf>, D
     private DeserializerRegistry deserializerRegistry;
 
     @Override
-    public BundleControlOnf deserialize(ByteBuf message) {
-        BundleId bundleId = new BundleId(message.readUnsignedInt());
+    public BundleControlOnf deserialize(final ByteBuf message) {
+        BundleId bundleId = new BundleId(readUint32(message));
         BundleControlType type = BundleControlType.forValue(message.readUnsignedShort());
         BundleFlags flags = createBundleFlags(message.readUnsignedShort());
         OnfControlGroupingDataBuilder builder = new OnfControlGroupingDataBuilder();
@@ -76,15 +78,16 @@ public class BundleControlFactory implements OFDeserializer<BundleControlOnf>, D
     private BundleProperty createExperimenterBundleProperty(final int length, final ByteBuf message) {
         Objects.requireNonNull(deserializerRegistry);
 
-        BundlePropertyExperimenterBuilder experimenterProperty = new BundlePropertyExperimenterBuilder();
-        long experimenterId = message.readUnsignedInt();
-        long expType = message.readUnsignedInt();
-        experimenterProperty.setExperimenter(new ExperimenterId(experimenterId));
-        experimenterProperty.setExpType(expType);
+        final Uint32 experimenterId = readUint32(message);
+        final Uint32 expType = readUint32(message);
+
+        final BundlePropertyExperimenterBuilder experimenterProperty = new BundlePropertyExperimenterBuilder()
+            .setExperimenter(new ExperimenterId(experimenterId))
+            .setExpType(expType);
 
         OFDeserializer<BundlePropertyExperimenterData> deserializer = deserializerRegistry.getDeserializer(
-                new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF13_VERSION_ID, experimenterId, expType,
-                        BundlePropertyExperimenterData.class));
+            new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF13_VERSION_ID, experimenterId.toJava(),
+                expType.toJava(), BundlePropertyExperimenterData.class));
         experimenterProperty.setBundlePropertyExperimenterData(
                 deserializer.deserialize(message.readBytes(length - 12)));
 
@@ -94,7 +97,7 @@ public class BundleControlFactory implements OFDeserializer<BundleControlOnf>, D
     }
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry registry) {
+    public void injectDeserializerRegistry(final DeserializerRegistry registry) {
         this.deserializerRegistry = registry;
     }
 
index 6e2f0007eb6bf295234a927d16d505dbe609c210..691882d8da11ea04c99a40242c6a07f76b3bbf3f 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.openflowplugin.extension.onf.deserializer;
 
+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.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -16,6 +19,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.OnfExperimenterErrorCode;
+import org.opendaylight.yangtools.yang.common.Uint16;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,15 +33,15 @@ public class OnfExperimenterErrorFactory implements OFDeserializer<ErrorMessage>
     private static final String UNKNOWN_CODE = "UNKNOWN_CODE";
 
     @Override
-    public ErrorMessage deserialize(ByteBuf message) {
+    public ErrorMessage deserialize(final ByteBuf message) {
         ErrorMessageBuilder builder = new ErrorMessageBuilder();
         builder.setVersion(EncodeConstants.OF_VERSION_1_3);
-        builder.setXid(message.readUnsignedInt());
+        builder.setXid(readUint32(message));
 
-        int type = message.readUnsignedShort();
-        ErrorType errorType = ErrorType.forValue(type);
+        final Uint16 type = readUint16(message);
+        ErrorType errorType = ErrorType.forValue(type.toJava());
         if (errorType != null && errorType.equals(ErrorType.EXPERIMENTER)) {
-            builder.setType(errorType.getIntValue());
+            builder.setType(type);
             builder.setTypeString(errorType.getName());
         } else {
             LOG.warn("Deserializing other than {} error message with {}", ErrorType.EXPERIMENTER.getName(),
@@ -46,10 +50,10 @@ public class OnfExperimenterErrorFactory implements OFDeserializer<ErrorMessage>
             builder.setTypeString(UNKNOWN_TYPE);
         }
 
-        int code = message.readUnsignedShort();
-        OnfExperimenterErrorCode errorCode = OnfExperimenterErrorCode.forValue(code);
+        final Uint16 code = readUint16(message);
+        OnfExperimenterErrorCode errorCode = OnfExperimenterErrorCode.forValue(code.toJava());
         if (errorCode != null) {
-            builder.setCode(errorCode.getIntValue());
+            builder.setCode(code);
             builder.setCodeString(errorCode.getName());
         } else {
             builder.setCode(code);
@@ -57,7 +61,7 @@ public class OnfExperimenterErrorFactory implements OFDeserializer<ErrorMessage>
         }
 
         builder.addAugmentation(new ExperimenterIdErrorBuilder()
-                .setExperimenter(new ExperimenterId(message.readUnsignedInt()))
+                .setExperimenter(new ExperimenterId(readUint32(message)))
                 .build());
 
         if (message.readableBytes() > 0) {
index 05627b9842d1c13f8f7d90a31030e74ce997ce43..f0345042e0d99b35498720e61d0eaf7ae6f3be93 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.openflowplugin.extension.onf.converter;
 import static org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil.extractDatapathId;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import org.junit.Assert;
 import org.junit.Before;
@@ -62,6 +61,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessageOnf;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.Uint32;
 
 /**
@@ -144,18 +144,18 @@ public class BundleAddMessageConverterTest {
     @Test
     public void testConvertUpdatePortCase() throws Exception {
         testConvert(new BundleUpdatePortCaseBuilder()
-                .setUpdatePortCaseData(new UpdatePortCaseDataBuilder()
+            .setUpdatePortCaseData(new UpdatePortCaseDataBuilder()
                 .setPort(new PortBuilder()
-                            .setPort(Collections.singletonList(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow
-                                        .types.port.rev130925.port.mod.port.PortBuilder()
-                                    .setConfiguration(Mockito.mock(PortConfig.class))
-                                    .setAdvertisedFeatures(Mockito.mock(PortFeatures.class))
-                                    .setPortNumber(new PortNumberUni(Uint32.ZERO))
-                                    .setHardwareAddress(Mockito.mock(MacAddress.class))
-                                    .withKey(new PortKey(Uint32.ZERO))
-                                    .build()))
-                            .build()).build())
-                .build(), BundlePortModCase.class);
+                    .setPort(BindingMap.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925
+                            .port.mod.port.PortBuilder()
+                        .setConfiguration(Mockito.mock(PortConfig.class))
+                        .setAdvertisedFeatures(Mockito.mock(PortFeatures.class))
+                        .setPortNumber(new PortNumberUni(Uint32.ZERO))
+                        .setHardwareAddress(Mockito.mock(MacAddress.class))
+                        .withKey(new PortKey(Uint32.ZERO))
+                        .build()))
+                    .build()).build())
+            .build(), BundlePortModCase.class);
     }
 
     private void testConvert(final BundleInnerMessage message, final Class<? extends DataObject> clazz)
@@ -215,5 +215,4 @@ public class BundleAddMessageConverterTest {
 
         return new BundleAddMessageSalBuilder().setSalAddMessageData(dataBuilder.build()).build();
     }
-
 }
index 7d301fdcf1b706de208dc8f3bac398c6dbeef1eb..c68b7a396bd889aa2800e663c1f8425dda2a992b 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.messages;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -22,47 +23,47 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.async.config.service.rev170
 
 public class AsyncConfigMessageDeserializer implements OFDeserializer<AsyncConfigMessage> {
     @Override
-    public AsyncConfigMessage deserialize(ByteBuf message) {
+    public AsyncConfigMessage deserialize(final ByteBuf message) {
         return new AsyncConfigMessageBuilder()
-                .setVersion(EncodeConstants.OF_VERSION_1_3)
-                .setXid(message.readUnsignedInt())
-                .setPacketInMask(new PacketInMaskBuilder()
-                        .setMasterMask(deserializePacketInMask(message))
-                        .setSlaveMask(deserializePacketInMask(message))
-                        .build())
-                .setPortStatusMask(new PortStatusMaskBuilder()
-                        .setMasterMask(deserializePortStatusMask(message))
-                        .setSlaveMask(deserializePortStatusMask(message))
-                        .build())
-                .setFlowRemovedMask(new FlowRemovedMaskBuilder()
-                        .setMasterMask(deserializeFlowRemovedMask(message))
-                        .setSlaveMask(deserializeFlowRemovedMask(message))
-                        .build())
-                .build();
+            .setVersion(EncodeConstants.OF_VERSION_1_3)
+            .setXid(readUint32(message))
+            .setPacketInMask(new PacketInMaskBuilder()
+                .setMasterMask(deserializePacketInMask(message))
+                .setSlaveMask(deserializePacketInMask(message))
+                .build())
+            .setPortStatusMask(new PortStatusMaskBuilder()
+                .setMasterMask(deserializePortStatusMask(message))
+                .setSlaveMask(deserializePortStatusMask(message))
+                .build())
+            .setFlowRemovedMask(new FlowRemovedMaskBuilder()
+                .setMasterMask(deserializeFlowRemovedMask(message))
+                .setSlaveMask(deserializeFlowRemovedMask(message))
+                .build())
+            .build();
     }
 
     private static PacketInMask deserializePacketInMask(final ByteBuf byteBuf) {
         final long mask = byteBuf.readUnsignedInt();
-        final boolean isNoMatch = (mask & (1)) != 0;
-        final boolean isAction = (mask & (1 << 1)) != 0;
-        final boolean isInvalidTtl = (mask & (1 << 2)) != 0;
+        final boolean isNoMatch = (mask & 1) != 0;
+        final boolean isAction = (mask & 1 << 1) != 0;
+        final boolean isInvalidTtl = (mask & 1 << 2) != 0;
         return new PacketInMask(isAction, isInvalidTtl, isNoMatch);
     }
 
     private static PortStatusMask deserializePortStatusMask(final ByteBuf byteBuf) {
         final long mask = byteBuf.readUnsignedInt();
-        final boolean isAdd = (mask & (1)) != 0;
-        final boolean isDelete = (mask & (1 << 1)) != 0;
-        final boolean isModify = (mask & (1 << 2)) != 0;
+        final boolean isAdd = (mask & 1) != 0;
+        final boolean isDelete = (mask & 1 << 1) != 0;
+        final boolean isModify = (mask & 1 << 2) != 0;
         return new PortStatusMask(isAdd, isDelete, isModify);
     }
 
     private static FlowRemovedMask deserializeFlowRemovedMask(final ByteBuf byteBuf) {
         final long mask = byteBuf.readUnsignedInt();
-        final boolean isIdleTimeout = (mask & (1)) != 0;
-        final boolean isHardTimeout = (mask & (1 << 1)) != 0;
-        final boolean isDelete = (mask & (1 << 2)) != 0;
-        final boolean isGroupDelete = (mask & (1 << 3)) != 0;
+        final boolean isIdleTimeout = (mask & 1) != 0;
+        final boolean isHardTimeout = (mask & 1 << 1) != 0;
+        final boolean isDelete = (mask & 1 << 2) != 0;
+        final boolean isGroupDelete = (mask & 1 << 3) != 0;
         return new FlowRemovedMask(isDelete, isGroupDelete, isHardTimeout, isIdleTimeout);
     }
 }
\ No newline at end of file
index a4608fcdc5e844a0cf3373203c14063daded7122..912b6fdbffc6001b16467fafdfbbe9133140ba80 100644 (file)
@@ -50,8 +50,7 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
     private DeserializerRegistry registry;
 
     @Override
-    @SuppressWarnings("checkstyle:LineLength")
-    public FlowMessage deserialize(ByteBuf message) {
+    public FlowMessage deserialize(final ByteBuf message) {
         final FlowMessageBuilder builder = new FlowMessageBuilder()
             .setVersion(EncodeConstants.OF_VERSION_1_3)
             .setXid(readUint32(message))
@@ -63,7 +62,7 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
             .setHardTimeout(readUint16(message))
             .setPriority(readUint16(message))
             .setBufferId(readUint32(message))
-            .setOutPort(BigInteger.valueOf(message.readUnsignedInt()))
+            .setOutPort(readUint32(message).toUint64())
             .setOutGroup(readUint32(message))
             .setFlags(createFlowModFlagsFromBitmap(message.readUnsignedShort()));
 
@@ -125,7 +124,7 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
         return builder.build();
     }
 
-    private static FlowModFlags createFlowModFlagsFromBitmap(int input) {
+    private static FlowModFlags createFlowModFlagsFromBitmap(final int input) {
         final Boolean ofp_FF_SendFlowRem = (input & 1 << 0) != 0;
         final Boolean ofp_FF_CheckOverlap = (input & 1 << 1) != 0;
         final Boolean ofp_FF_ResetCounts = (input & 1 << 2) != 0;
@@ -136,8 +135,7 @@ public class FlowMessageDeserializer implements OFDeserializer<FlowMessage>, Des
     }
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
+    public void injectDeserializerRegistry(final DeserializerRegistry deserializerRegistry) {
         registry = deserializerRegistry;
     }
-
 }
index 813bf60aab1d2e65f05f579a9b22d83c4afb9b03..30f8f1fc96292d627b16538a1494c81b70cfafaa 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.messages;
 
+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 java.util.ArrayList;
 import java.util.Comparator;
@@ -29,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class GroupMessageDeserializer implements OFDeserializer<GroupMessage>, DeserializerRegistryInjector {
@@ -50,12 +53,12 @@ public class GroupMessageDeserializer implements OFDeserializer<GroupMessage>, D
     public GroupMessage deserialize(final ByteBuf message) {
         final GroupMessageBuilder builder = new GroupMessageBuilder()
             .setVersion(EncodeConstants.OF_VERSION_1_3)
-            .setXid(message.readUnsignedInt())
+            .setXid(readUint32(message))
             .setCommand(GroupModCommand.forValue(message.readUnsignedShort()));
 
         builder.setGroupType(GroupTypes.forValue(message.readUnsignedByte()));
         message.skipBytes(PADDING);
-        builder.setGroupId(new GroupId(message.readUnsignedInt()));
+        builder.setGroupId(new GroupId(readUint32(message)));
 
         final List<Bucket> buckets = new ArrayList<>();
 
@@ -63,15 +66,17 @@ public class GroupMessageDeserializer implements OFDeserializer<GroupMessage>, D
             final int length = message.readUnsignedShort();
 
             final BucketBuilder bucket = new BucketBuilder()
-                .setWeight(message.readUnsignedShort())
-                .setWatchPort(message.readUnsignedInt())
-                .setWatchGroup(message.readUnsignedInt());
+                .setWeight(readUint16(message))
+                .setWatchPort(readUint32(message))
+                .setWatchGroup(readUint32(message));
 
             message.skipBytes(PADDING_IN_BUCKETS_HEADER);
 
             if (message.readableBytes() > 0) {
-                final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list
-                    .Action> actions = new ArrayList<>();
+                final var actions = BindingMap.<
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey,
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+                        orderedBuilder();
                 final int startIndex = message.readerIndex();
                 final int bucketLength = length - BUCKETS_HEADER_LENGTH;
                 int offset = 0;
@@ -87,7 +92,7 @@ public class GroupMessageDeserializer implements OFDeserializer<GroupMessage>, D
                     offset++;
                 }
 
-                bucket.setAction(actions);
+                bucket.setAction(actions.build());
             }
 
             buckets.add(bucket.setBucketId(new BucketId(Uint32.valueOf(buckets.size()))).build());
@@ -96,7 +101,7 @@ public class GroupMessageDeserializer implements OFDeserializer<GroupMessage>, D
         buckets.sort(COMPARATOR);
         return builder
             .setBuckets(new BucketsBuilder()
-                .setBucket(buckets)
+                .setBucket(BindingMap.ordered(buckets))
                 .build())
             .build();
     }
index 098bd2f30af7fcf438d992312d905ecf95a4b25e..b065a6f1063a9a4f2e873a0f0c4cfe500cb57d62 100644 (file)
@@ -5,12 +5,13 @@
  * 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.messages;
 
+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;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -31,28 +32,28 @@ 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.openflow.common.types.rev130731.MeterModCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap.Builder;
 
 public class MeterMessageDeserializer implements OFDeserializer<MeterMessage>, DeserializerRegistryInjector {
-    private static final Logger LOG = LoggerFactory.getLogger(MeterMessageDeserializer.class);
     private static final int OFPMBTDROP = 1;
     private static final int OFPMBTDSCP = 2;
     private static final int OFPMBTEXPERIMENTER = 0xFFFF;
     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 MeterMessage deserialize(ByteBuf message) {
+    public MeterMessage deserialize(final ByteBuf message) {
         final MeterMessageBuilder builder = new MeterMessageBuilder()
                 .setVersion(EncodeConstants.OF_VERSION_1_3)
-                .setXid(message.readUnsignedInt())
+                .setXid(readUint32(message))
                 .setCommand(MeterModCommand.forValue(message.readUnsignedShort()))
                 .setFlags(readMeterFlags(message))
-                .setMeterId(new MeterId(message.readUnsignedInt()));
+                .setMeterId(new MeterId(readUint32(message)));
 
-        final List<MeterBandHeader> bands = new ArrayList<>();
+        final Builder<MeterBandHeaderKey, MeterBandHeader> bands = BindingMap.orderedBuilder();
         long key = 0;
 
         while (message.readableBytes() > 0) {
@@ -67,8 +68,8 @@ public class MeterMessageDeserializer implements OFDeserializer<MeterMessage>, D
                                     .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;
@@ -79,9 +80,9 @@ public class MeterMessageDeserializer implements OFDeserializer<MeterMessage>, D
                                     .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;
@@ -106,29 +107,28 @@ public class MeterMessageDeserializer implements OFDeserializer<MeterMessage>, D
                     // no operation
             }
 
-            bands.add(bandBuilder.withKey(new MeterBandHeaderKey(new BandId(key++))).build());
+            bands.add(bandBuilder.setBandId(new BandId(key++)).build());
         }
 
         return builder
                 .setMeterBandHeaders(new MeterBandHeadersBuilder()
-                        .setMeterBandHeader(bands)
+                        .setMeterBandHeader(bands.build())
                         .build())
                 .build();
     }
 
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
-        registry = deserializerRegistry;
+    public void injectDeserializerRegistry(final DeserializerRegistry deserializerRegistry) {
+        registry = requireNonNull(deserializerRegistry);
     }
 
-    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);
     }
-
 }
index c45ec9984c1c18ac0d80e12fdb22d3a82993fe0a..6bbcd58b1d8c3434e7bf109b1e1d93f227076cf8 100644 (file)
@@ -5,12 +5,14 @@
  * 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.messages;
 
-import com.google.common.base.Preconditions;
+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.readUint64;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
 import io.netty.buffer.ByteBuf;
-import java.math.BigInteger;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -43,30 +45,22 @@ public class PacketInMessageDeserializer implements OFDeserializer<PacketInMessa
     @Override
     public PacketInMessage deserialize(final ByteBuf message) {
         final PacketInMessageBuilder packetInMessageBuilder = new PacketInMessageBuilder()
-                .setVersion(EncodeConstants.OF_VERSION_1_3)
-                .setXid(message.readUnsignedInt());
+            .setVersion(EncodeConstants.OF_VERSION_1_3)
+            .setXid(readUint32(message));
 
         // We are ignoring buffer id and total len as it is not specified in OpenFlowPlugin models
         message.readUnsignedInt();
         message.readUnsignedShort();
 
         packetInMessageBuilder
-                .setPacketInReason(PacketInUtil
-                        .getMdSalPacketInReason(PacketInReason
-                                .forValue(message.readUnsignedByte())))
-                .setTableId(new TableId(message.readUnsignedByte()));
-
-        final byte[] cookie = new byte[Long.BYTES];
-        message.readBytes(cookie);
-
-        packetInMessageBuilder
-                .setFlowCookie(new FlowCookie(new BigInteger(1, cookie)));
+            .setPacketInReason(PacketInUtil.getMdSalPacketInReason(PacketInReason.forValue(message.readUnsignedByte())))
+            .setTableId(new TableId(readUint8(message)))
+            .setFlowCookie(new FlowCookie(readUint64(message)));
 
-        final OFDeserializer<Match> matchDeserializer = Preconditions.checkNotNull(registry).getDeserializer(MATCH_KEY);
+        final OFDeserializer<Match> matchDeserializer = requireNonNull(registry).getDeserializer(MATCH_KEY);
 
         packetInMessageBuilder.setMatch(MatchUtil.transformMatch(matchDeserializer.deserialize(message),
-                org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.packet.in.message
-                        .Match.class));
+            org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.packet.in.message.Match.class));
 
         message.skipBytes(PADDING_IN_PACKET_IN_HEADER);
         final byte[] data = new byte[message.readableBytes()];
index 16ed5fdf30dc04f17b53ac90e2522c2e93d65eec..168bbf96a42387a9b20e22911ffcf3acf89300a6 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.messages;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -16,7 +18,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.P
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
-import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class PortMessageDeserializer implements OFDeserializer<PortMessage> {
 
@@ -28,8 +29,8 @@ public class PortMessageDeserializer implements OFDeserializer<PortMessage> {
     public PortMessage deserialize(final ByteBuf message) {
         final PortMessageBuilder builder = new PortMessageBuilder()
                 .setVersion(EncodeConstants.OF_VERSION_1_3)
-                .setXid(message.readUnsignedInt())
-                .setPortNumber(new PortNumberUni(Uint32.valueOf(message.readUnsignedInt())));
+                .setXid(readUint32(message))
+                .setPortNumber(new PortNumberUni(readUint32(message)));
 
         message.skipBytes(PADDING_IN_PORT_MOD_MESSAGE_1);
         builder.setHardwareAddress(ByteBufUtils.readIetfMacAddress(message));
index 4fe339dd5f1aadfab293773611e2bf938445bd1e..80f2d9006f300c40b169dded7c76f4737cf21650 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
@@ -25,10 +27,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.SelectLiveness;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.SelectWeight;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
-import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MultipartReplyGroupFeaturesDeserializer implements OFDeserializer<MultipartReplyBody> {
-
     private static final int GROUP_TYPES = 4;
 
     @Override
@@ -38,14 +38,12 @@ public class MultipartReplyGroupFeaturesDeserializer implements OFDeserializer<M
         return builder
             .setGroupTypesSupported(readGroupTypes(message))
             .setGroupCapabilitiesSupported(readGroupCapabilities(message))
-            .setMaxGroups(IntStream
-                    .range(0, GROUP_TYPES)
-                    .mapToObj(i -> Uint32.valueOf(message.readUnsignedInt()))
-                    .collect(Collectors.toList()))
-            .setActions(IntStream
-                    .range(0, GROUP_TYPES)
-                    .mapToObj(i -> Uint32.valueOf(message.readUnsignedInt()))
-                    .collect(Collectors.toList()))
+            .setMaxGroups(IntStream.range(0, GROUP_TYPES)
+                .mapToObj(i -> readUint32(message))
+                .collect(Collectors.toList()))
+            .setActions(IntStream.range(0, GROUP_TYPES)
+                .mapToObj(i -> readUint32(message))
+                .collect(Collectors.toList()))
             .build();
     }
 
@@ -98,5 +96,4 @@ public class MultipartReplyGroupFeaturesDeserializer implements OFDeserializer<M
 
         return groupTypes;
     }
-
 }
index 1c9a81b93738fbb7f26962eb88fb3723e2b523e3..a61192a8eb065bff013eb2ba6ae1ab000c1db7a1 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 io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
@@ -23,7 +24,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.m
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.multipart.reply.multipart.reply.body.multipart.reply.port.desc.Ports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.multipart.reply.multipart.reply.body.multipart.reply.port.desc.PortsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
-import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MultipartReplyPortDescDeserializer implements OFDeserializer<MultipartReplyBody> {
 
@@ -37,7 +37,7 @@ public class MultipartReplyPortDescDeserializer implements OFDeserializer<Multip
 
         while (message.readableBytes() > 0) {
             final PortsBuilder itemBuilder = new PortsBuilder();
-            itemBuilder.setPortNumber(new PortNumberUni(Uint32.valueOf(message.readUnsignedInt())));
+            itemBuilder.setPortNumber(new PortNumberUni(readUint32(message)));
             message.skipBytes(PADDING_IN_PORT_DESC_HEADER_01);
             itemBuilder.setHardwareAddress(ByteBufUtils.readIetfMacAddress(message));
             message.skipBytes(PADDING_IN_PORT_DESC_HEADER_02);
@@ -50,8 +50,8 @@ public class MultipartReplyPortDescDeserializer implements OFDeserializer<Multip
                 .setAdvertisedFeatures(readPortFeatures(message))
                 .setSupported(readPortFeatures(message))
                 .setPeerFeatures(readPortFeatures(message))
-                .setCurrentSpeed(message.readUnsignedInt())
-                .setMaximumSpeed(message.readUnsignedInt())
+                .setCurrentSpeed(readUint32(message))
+                .setMaximumSpeed(readUint32(message))
                 .build());
         }
 
index b5b95f21743a603ca36f21968968320f2b535202..2069f8c6b58adc827fc7c33d9172ee294bbe36c1 100644 (file)
@@ -298,7 +298,7 @@ public class MultipartReplyTableFeaturesDeserializer implements OFDeserializer<M
         int nextTableLength = length;
 
         while (nextTableLength > 0) {
-            tableIds.add(Uint8.valueOf(message.readUnsignedByte()));
+            tableIds.add(readUint8(message));
             nextTableLength -= 1;
         }