More OFP production code migration 05/94605/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Jan 2021 21:45:16 +0000 (22:45 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Jan 2021 23:40:35 +0000 (00:40 +0100)
Use BindingMap and similar construcs to switch from Lists to Maps.

Change-Id: I35c8e71ac03dbec10c32074e8caad1fd3c95d374
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
15 files changed:
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartReplyTranslatorUtil.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/datastore/multipart/DescMultipartWriter.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/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/batch/FlatBatchMeterAdapters.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/GroupDirectStatisticsService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/PortDirectStatisticsService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/QueueDirectStatisticsService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/singlelayer/QueueDirectStatisticsService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/FlowUtil.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/GroupUtil.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MeterUtil.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/NodeConnectorDirectStatisticsServiceTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/QueueDirectStatisticsServiceTest.java

index 1d204f82f6b1acb3bf7f46c178548fc47162cc2f..b7a6359c8f4b024d61de052ab70bc81f5e90c310 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.openflowplugin.impl.common;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.Nullable;
@@ -33,7 +34,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.m
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.multipart.reply.multipart.reply.body.MultipartReplyFlowAggregateStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.multipart.reply.multipart.reply.body.MultipartReplyFlowStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.multipart.reply.multipart.reply.body.MultipartReplyFlowStatsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.multipart.reply.multipart.reply.body.MultipartReplyFlowTableStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.multipart.reply.multipart.reply.body.MultipartReplyFlowTableStatsBuilder;
@@ -101,20 +101,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.features._case.MultipartReplyMeterFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.MultipartReplyPortStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.multipart.reply.port.stats.PortStats;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.queue._case.MultipartReplyQueue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.queue._case.multipart.reply.queue.QueueStats;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table._case.MultipartReplyTable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table._case.multipart.reply.table.TableStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.features._case.MultipartReplyTableFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.reply.multipart.reply.body.MultipartReplyPortStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.reply.multipart.reply.body.MultipartReplyQueueStats;
 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.table.types.rev131026.TableId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.reply.multipart.reply.body.MultipartReplyTableFeaturesBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.Uint64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -216,7 +212,7 @@ public final class MultipartReplyTranslatorUtil {
             .convert(multipartReplyTableFeatures, new VersionConvertorData(version));
 
         return Optional.of(new MultipartReplyTableFeaturesBuilder()
-            .setTableFeatures(tableFeaturesList.orElse(List.of()))
+            .setTableFeatures(tableFeaturesList.map(BindingMap::ordered).orElse(Map.of()))
             .build());
     }
 
@@ -319,7 +315,7 @@ public final class MultipartReplyTranslatorUtil {
             replyBody.getGroupStats(), data);
 
         return Optional.of(new MultipartReplyGroupStatsBuilder()
-            .setGroupStats(groupStatsList.orElse(List.of()))
+            .setGroupStats(groupStatsList.map(BindingMap::ordered).orElse(Map.of()))
             .build());
     }
 
@@ -337,7 +333,7 @@ public final class MultipartReplyTranslatorUtil {
             replyBody.getGroupDesc(), data);
 
         return Optional.of(new MultipartReplyGroupDescBuilder()
-            .setGroupDescStats(groupDescStatsList.orElse(List.of()))
+            .setGroupDescStats(groupDescStatsList.map(BindingMap::ordered).orElse(Map.of()))
             .build());
     }
 
@@ -394,7 +390,7 @@ public final class MultipartReplyTranslatorUtil {
                 meterStatsList = convertorExecutor.convert(replyBody.getMeterStats(), data);
 
         return Optional.of(new MultipartReplyMeterStatsBuilder()
-            .setMeterStats(meterStatsList.orElse(List.of()))
+            .setMeterStats(meterStatsList.map(BindingMap::ordered).orElse(Map.of()))
             .build());
     }
 
@@ -411,7 +407,7 @@ public final class MultipartReplyTranslatorUtil {
                 = convertorExecutor.convert(replyBody.getMeterConfig(), data);
 
         return Optional.of(new MultipartReplyMeterConfigBuilder()
-            .setMeterConfigStats(meterConfigStatsList.orElse(List.of()))
+            .setMeterConfigStats(meterConfigStatsList.map(BindingMap::ordered).orElse(Map.of()))
             .build());
     }
 
@@ -452,19 +448,16 @@ public final class MultipartReplyTranslatorUtil {
     }
 
     private static MultipartReplyFlowTableStats translateTable(final MultipartReply msg) {
-        MultipartReplyTableCase caseBody = (MultipartReplyTableCase) msg.getMultipartReplyBody();
-        MultipartReplyTable replyBody = caseBody.getMultipartReplyTable();
-
-        List<FlowTableAndStatisticsMap> salFlowStats = new ArrayList<>();
-        //TODO: Duplicate code: look at OpendaylightFlowTableStatisticsServiceImpl method transformToNotification
-        for (TableStats swTableStats : replyBody.nonnullTableStats()) {
-            salFlowStats.add(new FlowTableAndStatisticsMapBuilder()
+        final var salFlowStats = ((MultipartReplyTableCase) msg.getMultipartReplyBody()).getMultipartReplyTable()
+            .nonnullTableStats().stream()
+            //TODO: Duplicate code: look at OpendaylightFlowTableStatisticsServiceImpl method transformToNotification
+            .map(swTableStats -> new FlowTableAndStatisticsMapBuilder()
                 .setActiveFlows(new Counter32(swTableStats.getActiveCount()))
                 .setPacketsLookedUp(new Counter64(swTableStats.getLookupCount()))
                 .setPacketsMatched(new Counter64(swTableStats.getMatchedCount()))
                 .setTableId(new TableId(swTableStats.getTableId()))
-                .build());
-        }
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new MultipartReplyFlowTableStatsBuilder()
             .setFlowTableAndStatisticsMap(salFlowStats)
@@ -474,12 +467,9 @@ public final class MultipartReplyTranslatorUtil {
     private static MultipartReplyQueueStats translateQueue(final MultipartReply msg,
                                                            final OpenflowVersion ofVersion,
                                                            final Uint64 datapathId) {
-        MultipartReplyQueueCase caseBody = (MultipartReplyQueueCase) msg.getMultipartReplyBody();
-        MultipartReplyQueue replyBody = caseBody.getMultipartReplyQueue();
-
-        List<QueueIdAndStatisticsMap> statsMap = new ArrayList<>();
-        for (QueueStats queueStats : replyBody.nonnullQueueStats()) {
-            statsMap.add(new QueueIdAndStatisticsMapBuilder()
+        final var statsMap = ((MultipartReplyQueueCase) msg.getMultipartReplyBody()).getMultipartReplyQueue()
+            .nonnullQueueStats().stream()
+            .map(queueStats -> new QueueIdAndStatisticsMapBuilder()
                 .setNodeConnectorId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(datapathId,
                     queueStats.getPortNo(), ofVersion))
                 .setQueueId(new QueueId(queueStats.getQueueId()))
@@ -490,8 +480,8 @@ public final class MultipartReplyTranslatorUtil {
                     .setSecond(new Counter32(queueStats.getDurationSec()))
                     .setNanosecond(new Counter32(queueStats.getDurationNsec()))
                     .build())
-                .build());
-        }
+                .build())
+            .collect(BindingMap.toOrderedMap());
 
         return new MultipartReplyQueueStatsBuilder()
             .setQueueIdAndStatisticsMap(statsMap)
index 6e4bfce22ced679103b3319d343bd543ebfe4f09..a64b7b1aea65fc727eef745e5de05830c18ab098 100644 (file)
@@ -5,10 +5,9 @@
  * 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.datastore.multipart;
 
-import java.util.Collections;
+import java.util.Map;
 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
 import org.opendaylight.openflowplugin.api.openflow.device.TxFacade;
 import org.opendaylight.openflowplugin.impl.util.DeviceInitializationUtil;
@@ -36,12 +35,11 @@ public class DescMultipartWriter extends AbstractMultipartWriter<Desc> {
 
     @Override
     public void storeStatistics(final Desc statistics, final boolean withParents) {
-        writeToTransaction(getInstanceIdentifier()
-                .augmentation(FlowCapableNode.class),
+        writeToTransaction(getInstanceIdentifier().augmentation(FlowCapableNode.class),
             new FlowCapableNodeBuilder(statistics)
-                .setTable(Collections.emptyList())
-                .setMeter(Collections.emptyList())
-                .setGroup(Collections.emptyList())
+                .setTable(Map.of())
+                .setMeter(Map.of())
+                .setGroup(Map.of())
                 .setIpAddress(DeviceInitializationUtil.getIpAddress(connectionContext, getInstanceIdentifier()))
                 .setPortNumber(DeviceInitializationUtil.getPortNumber(connectionContext, getInstanceIdentifier()))
                 .setSwitchFeatures(DeviceInitializationUtil.getSwitchFeatures(connectionContext))
index 0787fb09b1db212792322f876bcb91feb93bda82..344f825e826904107f60b4e2900e5c1fc3f0311a 100644 (file)
@@ -11,8 +11,6 @@ import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
 
 import io.netty.buffer.ByteBuf;
-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;
@@ -23,9 +21,12 @@ 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.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.Uint32;
 
 public class MultipartReplyGroupStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
@@ -36,8 +37,7 @@ public class MultipartReplyGroupStatsDeserializer implements OFDeserializer<Mult
 
     @Override
     public MultipartReplyBody deserialize(final ByteBuf message) {
-        final MultipartReplyGroupStatsBuilder builder = new MultipartReplyGroupStatsBuilder();
-        final List<GroupStats> items = new ArrayList<>();
+        final var items = BindingMap.<GroupStatsKey, GroupStats>orderedBuilder();
 
         while (message.readableBytes() > 0) {
             final int itemLength = message.readUnsignedShort();
@@ -57,30 +57,29 @@ public class MultipartReplyGroupStatsDeserializer implements OFDeserializer<Mult
                         .setNanosecond(new Counter32(readUint32(message)))
                         .build());
 
-            final List<BucketCounter> subItems = new ArrayList<>();
+            final var subItems = BindingMap.<BucketCounterKey, BucketCounter>orderedBuilder();
             int actualLength = GROUP_BODY_LENGTH;
             int bucketKey = 0;
 
             while (actualLength < itemLength) {
                 subItems.add(new BucketCounterBuilder()
-                    .setBucketId(new BucketId(Uint32.valueOf(bucketKey)))
+                    .setBucketId(new BucketId(Uint32.valueOf(bucketKey++)))
                     .setPacketCount(new Counter64(readUint64(message)))
                     .setByteCount(new Counter64(readUint64(message)))
                     .build());
 
-                bucketKey++;
                 actualLength += BUCKET_COUNTER_LENGTH;
             }
 
             items.add(itemBuilder
                     .setBuckets(new BucketsBuilder()
-                        .setBucketCounter(subItems)
+                        .setBucketCounter(subItems.build())
                         .build())
                     .build());
         }
 
-        return builder
-            .setGroupStats(items)
+        return new MultipartReplyGroupStatsBuilder()
+            .setGroupStats(items.build())
             .build();
     }
 }
index d87235aa4b989e5d3233f14aa28617bf5e73a490..ceb41cbee6d3d9d40d8b4b5d4692785859084c7f 100644 (file)
@@ -11,8 +11,6 @@ import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
 
 import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
-import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
@@ -25,13 +23,14 @@ 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;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class MultipartReplyQueueStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
 
     @Override
     public MultipartReplyBody deserialize(final ByteBuf message) {
-        final MultipartReplyQueueStatsBuilder builder = new MultipartReplyQueueStatsBuilder();
-        final List<QueueIdAndStatisticsMap> items = new ArrayList<>();
+        final var items = BindingMap.<QueueIdAndStatisticsMapKey, QueueIdAndStatisticsMap>orderedBuilder();
 
         while (message.readableBytes() > 0) {
             final long port = message.readUnsignedInt();
@@ -51,9 +50,8 @@ public class MultipartReplyQueueStatsDeserializer implements OFDeserializer<Mult
                 .build());
         }
 
-        return builder
-            .setQueueIdAndStatisticsMap(items)
+        return new MultipartReplyQueueStatsBuilder()
+            .setQueueIdAndStatisticsMap(items.build())
             .build();
     }
-
 }
index 4f07609c2f09a4f6f5821fb2089143370a0c7d09..f72248432a4b999ce413eb0faae7e7113d3a79ee 100644 (file)
@@ -35,6 +35,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.reply.multipart.reply.body.MultipartReplyTableFeaturesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMissBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldBuilder;
@@ -278,22 +279,21 @@ public class MultipartReplyTableFeaturesDeserializer implements OFDeserializer<M
             .build();
     }
 
-    private static List<SetFieldMatch> readMatchFields(final ByteBuf message, final int length) {
-        final List<SetFieldMatch> matchFields = new ArrayList<>();
+    private static Map<SetFieldMatchKey, SetFieldMatch> readMatchFields(final ByteBuf message, final int length) {
+        final var matchFields = BindingMap.<SetFieldMatchKey, SetFieldMatch>orderedBuilder();
 
         final int startIndex = message.readerIndex();
 
         while (message.readerIndex() - startIndex < length) {
-            MATCH_FIELD_DESERIALIZER
-                    .deserialize(message)
-                    .map(matchFields::add)
-                    .orElseGet(() -> {
-                        message.skipBytes(2 * Short.BYTES);
-                        return Boolean.FALSE;
-                    });
+            final var field = MATCH_FIELD_DESERIALIZER.deserialize(message);
+            if (field.isPresent()) {
+                matchFields.add(field.orElseThrow());
+            } else {
+                message.skipBytes(2 * Short.BYTES);
+            }
         }
 
-        return matchFields;
+        return matchFields.build();
     }
 
     private static List<Uint8> readNextTableIds(final ByteBuf message, final int length) {
index 5e10ef4f463e6c5472f76319fbf56475ad7d4177..677797d3a38d57694f9c7e3da3db4079fcfc2375 100644 (file)
@@ -38,6 +38,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.up
 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 meter batch API.
@@ -136,7 +137,7 @@ public final class FlatBatchMeterAdapters {
         if (input.getResult().getBatchFailedMetersOutput() != null) {
             for (BatchFailedMetersOutput stepOutput : input.getResult().nonnullBatchFailedMetersOutput().values()) {
                 final BatchFailure batchFailure = new BatchFailureBuilder()
-                        .setBatchOrder(stepOffset + stepOutput.getBatchOrder().toJava())
+                        .setBatchOrder(Uint16.valueOf(stepOffset + stepOutput.getBatchOrder().toJava()))
                         .setBatchItemIdChoice(new FlatBatchFailureMeterIdCaseBuilder()
                                 .setMeterId(stepOutput.getMeterId())
                                 .build())
index 35ecb8c7d0a60c7d13bc5922ad70daf071cce940..30269830feaeeb080f3b8ab81854aef36107a87d 100644 (file)
@@ -5,10 +5,8 @@
  * 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.statistics.services.direct.multilayer;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import org.opendaylight.openflowplugin.api.OFConstants;
@@ -24,6 +22,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsOutputBuilder;
 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.GroupStatsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
@@ -31,6 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.MultipartReplyGroup;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group._case.MultipartRequestGroupBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class GroupDirectStatisticsService extends AbstractGroupDirectStatisticsService<MultipartReply> {
 
@@ -45,22 +45,23 @@ public class GroupDirectStatisticsService extends AbstractGroupDirectStatisticsS
     }
 
     @Override
-    protected GetGroupStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
-        final List<GroupStats> groupStats = new ArrayList<>();
+    protected GetGroupStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+        if (!success) {
+            return new GetGroupStatisticsOutputBuilder().build();
+        }
 
-        if (success) {
-            for (final MultipartReply mpReply : input) {
-                final MultipartReplyGroupCase caseBody = (MultipartReplyGroupCase) mpReply.getMultipartReplyBody();
-                final MultipartReplyGroup replyBody = caseBody.getMultipartReplyGroup();
-                final Optional<List<GroupStats>> groupStatsList = getConvertorExecutor().convert(
-                    replyBody.getGroupStats(), data);
+        final var groupStats = BindingMap.<GroupStatsKey, GroupStats>orderedBuilder();
+        for (final MultipartReply mpReply : input) {
+            final MultipartReplyGroupCase caseBody = (MultipartReplyGroupCase) mpReply.getMultipartReplyBody();
+            final MultipartReplyGroup replyBody = caseBody.getMultipartReplyGroup();
+            final Optional<List<GroupStats>> groupStatsList = getConvertorExecutor().convert(
+                replyBody.getGroupStats(), data);
 
-                groupStatsList.ifPresent(groupStats::addAll);
-            }
+            groupStatsList.ifPresent(groupStats::addAll);
         }
 
         return new GetGroupStatisticsOutputBuilder()
-            .setGroupStats(groupStats)
+            .setGroupStats(groupStats.build())
             .build();
     }
 
index 5d6b5aa483888c530c2a3ca14d11adda4efdcdef..07f744df12146bfbada271009bcdc59d9ea80c2b 100644 (file)
@@ -5,10 +5,8 @@
  * 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.statistics.services.direct.multilayer;
 
-import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
@@ -23,7 +21,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.BytesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.PacketsBuilder;
@@ -37,6 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapKey;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class PortDirectStatisticsService extends AbstractPortDirectStatisticsService<MultipartReply> {
 
@@ -48,60 +46,52 @@ public class PortDirectStatisticsService extends AbstractPortDirectStatisticsSer
     }
 
     @Override
-    protected GetNodeConnectorStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
-        final List<NodeConnectorStatisticsAndPortNumberMap> nodeConnectorStatisticsAndPortNumberMap = new ArrayList<>();
-
-        if (success) {
-            for (final MultipartReply mpReply : input) {
-                final MultipartReplyPortStatsCase caseBody =
-                        (MultipartReplyPortStatsCase) mpReply.getMultipartReplyBody();
-                final MultipartReplyPortStats replyBody = caseBody.getMultipartReplyPortStats();
+    protected GetNodeConnectorStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+        if (!success) {
+            return new GetNodeConnectorStatisticsOutputBuilder().build();
+        }
 
-                for (final PortStats portStats : replyBody.getPortStats()) {
-                    final NodeConnectorId nodeConnectorId = InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(
-                        getDatapathId(), portStats.getPortNo(), getOfVersion());
+        final var nodeConnectorStatisticsAndPortNumberMap = BindingMap.<NodeConnectorStatisticsAndPortNumberMapKey,
+            NodeConnectorStatisticsAndPortNumberMap>orderedBuilder();
+        for (final MultipartReply mpReply : input) {
+            final MultipartReplyPortStatsCase caseBody =
+                (MultipartReplyPortStatsCase) mpReply.getMultipartReplyBody();
+            final MultipartReplyPortStats replyBody = caseBody.getMultipartReplyPortStats();
+
+            for (final PortStats portStats : replyBody.nonnullPortStats()) {
+                final DurationBuilder durationBuilder = new DurationBuilder();
+                if (portStats.getDurationSec() != null) {
+                    durationBuilder.setSecond(new Counter32(portStats.getDurationSec()));
+                }
+                if (portStats.getDurationNsec() != null) {
+                    durationBuilder.setNanosecond(new Counter32(portStats.getDurationNsec()));
+                }
 
-                    final BytesBuilder bytesBuilder = new BytesBuilder()
+                nodeConnectorStatisticsAndPortNumberMap.add(new NodeConnectorStatisticsAndPortNumberMapBuilder()
+                    .setBytes(new BytesBuilder()
                         .setReceived(portStats.getRxBytes())
-                        .setTransmitted(portStats.getTxBytes());
-
-                    final PacketsBuilder packetsBuilder = new PacketsBuilder()
+                        .setTransmitted(portStats.getTxBytes())
+                        .build())
+                    .setPackets(new PacketsBuilder()
                         .setReceived(portStats.getRxPackets())
-                        .setTransmitted(portStats.getTxPackets());
-
-                    final DurationBuilder durationBuilder = new DurationBuilder();
-
-                    if (portStats.getDurationSec() != null) {
-                        durationBuilder.setSecond(new Counter32(portStats.getDurationSec()));
-                    }
-
-                    if (portStats.getDurationNsec() != null) {
-                        durationBuilder.setNanosecond(new Counter32(portStats.getDurationNsec()));
-                    }
-
-                    final NodeConnectorStatisticsAndPortNumberMap stats =
-                            new NodeConnectorStatisticsAndPortNumberMapBuilder()
-                        .setBytes(bytesBuilder.build())
-                        .setPackets(packetsBuilder.build())
-                        .setNodeConnectorId(nodeConnectorId)
-                        .setDuration(durationBuilder.build())
-                        .setCollisionCount(portStats.getCollisions())
-                        .withKey(new NodeConnectorStatisticsAndPortNumberMapKey(nodeConnectorId))
-                        .setReceiveCrcError(portStats.getRxCrcErr()).setReceiveDrops(portStats.getRxDropped())
-                        .setReceiveErrors(portStats.getRxErrors())
-                        .setReceiveFrameError(portStats.getRxFrameErr())
-                        .setReceiveOverRunError(portStats.getRxOverErr())
-                        .setTransmitDrops(portStats.getTxDropped())
-                        .setTransmitErrors(portStats.getTxErrors())
-                        .build();
-
-                    nodeConnectorStatisticsAndPortNumberMap.add(stats);
-                }
+                        .setTransmitted(portStats.getTxPackets())
+                        .build())
+                    .setNodeConnectorId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(getDatapathId(),
+                        portStats.getPortNo(), getOfVersion()))
+                    .setDuration(durationBuilder.build())
+                    .setCollisionCount(portStats.getCollisions())
+                    .setReceiveCrcError(portStats.getRxCrcErr()).setReceiveDrops(portStats.getRxDropped())
+                    .setReceiveErrors(portStats.getRxErrors())
+                    .setReceiveFrameError(portStats.getRxFrameErr())
+                    .setReceiveOverRunError(portStats.getRxOverErr())
+                    .setTransmitDrops(portStats.getTxDropped())
+                    .setTransmitErrors(portStats.getTxErrors())
+                    .build());
             }
         }
 
         return new GetNodeConnectorStatisticsOutputBuilder()
-            .setNodeConnectorStatisticsAndPortNumberMap(nodeConnectorStatisticsAndPortNumberMap)
+            .setNodeConnectorStatisticsAndPortNumberMap(nodeConnectorStatisticsAndPortNumberMap.build())
             .build();
     }
 
index 5b40896a9eea888ea2682988ef1b0ff5c9842e8f..9ca85adbb920198244ea7004f8153d2c2dc99748 100644 (file)
@@ -8,7 +8,6 @@
 
 package org.opendaylight.openflowplugin.impl.statistics.services.direct.multilayer;
 
-import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
@@ -37,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 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;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class QueueDirectStatisticsService extends AbstractQueueDirectStatisticsService<MultipartReply> {
 
@@ -48,39 +48,41 @@ public class QueueDirectStatisticsService extends AbstractQueueDirectStatisticsS
     }
 
     @Override
-    protected GetQueueStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
-        final List<QueueIdAndStatisticsMap> queueIdAndStatisticsMap = new ArrayList<>();
-
-        if (success) {
-            for (final MultipartReply mpReply : input) {
-                final MultipartReplyQueueCase caseBody = (MultipartReplyQueueCase) mpReply.getMultipartReplyBody();
-                final MultipartReplyQueue replyBody = caseBody.getMultipartReplyQueue();
-
-                for (final QueueStats queueStats : replyBody.getQueueStats()) {
-                    final DurationBuilder durationBuilder = new DurationBuilder()
-                        .setSecond(new Counter32(queueStats.getDurationSec()))
-                        .setNanosecond(new Counter32(queueStats.getDurationNsec()));
-
-                    final QueueId queueId = new QueueId(queueStats.getQueueId());
-                    final NodeConnectorId nodeConnectorId = InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(
-                        getDatapathId(), queueStats.getPortNo(), getOfVersion());
-
-                    final QueueIdAndStatisticsMapBuilder statsBuilder = new QueueIdAndStatisticsMapBuilder()
-                        .withKey(new QueueIdAndStatisticsMapKey(nodeConnectorId, queueId))
-                        .setNodeConnectorId(nodeConnectorId)
-                        .setTransmissionErrors(new Counter64(queueStats.getTxErrors()))
-                        .setTransmittedBytes(new Counter64(queueStats.getTxBytes()))
-                        .setTransmittedPackets(new Counter64(queueStats.getTxPackets()))
-                        .setQueueId(queueId)
-                        .setDuration(durationBuilder.build());
-
-                    queueIdAndStatisticsMap.add(statsBuilder.build());
-                }
+    protected GetQueueStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+        if (!success) {
+            return new GetQueueStatisticsOutputBuilder().build();
+        }
+
+        final var queueIdAndStatisticsMap =
+            BindingMap.<QueueIdAndStatisticsMapKey, QueueIdAndStatisticsMap>orderedBuilder();
+
+        for (final MultipartReply mpReply : input) {
+            final MultipartReplyQueueCase caseBody = (MultipartReplyQueueCase) mpReply.getMultipartReplyBody();
+            final MultipartReplyQueue replyBody = caseBody.getMultipartReplyQueue();
+
+            for (final QueueStats queueStats : replyBody.nonnullQueueStats()) {
+                final DurationBuilder durationBuilder = new DurationBuilder()
+                    .setSecond(new Counter32(queueStats.getDurationSec()))
+                    .setNanosecond(new Counter32(queueStats.getDurationNsec()));
+
+                final QueueId queueId = new QueueId(queueStats.getQueueId());
+                final NodeConnectorId nodeConnectorId = InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(
+                    getDatapathId(), queueStats.getPortNo(), getOfVersion());
+
+                final QueueIdAndStatisticsMapBuilder statsBuilder = new QueueIdAndStatisticsMapBuilder()
+                    .setNodeConnectorId(nodeConnectorId)
+                    .setQueueId(queueId)
+                    .setTransmissionErrors(new Counter64(queueStats.getTxErrors()))
+                    .setTransmittedBytes(new Counter64(queueStats.getTxBytes()))
+                    .setTransmittedPackets(new Counter64(queueStats.getTxPackets()))
+                    .setDuration(durationBuilder.build());
+
+                queueIdAndStatisticsMap.add(statsBuilder.build());
             }
         }
 
         return new GetQueueStatisticsOutputBuilder()
-            .setQueueIdAndStatisticsMap(queueIdAndStatisticsMap)
+            .setQueueIdAndStatisticsMap(queueIdAndStatisticsMap.build())
             .build();
     }
 
index e8e118723d659ff7db1be3af02123e840a0437c6..3be717b3934f6c45de9fc15fe8f099038d01b4ed 100644 (file)
@@ -5,11 +5,9 @@
  * 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.statistics.services.direct.singlelayer;
 
 import java.util.List;
-import java.util.stream.Collectors;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
@@ -24,9 +22,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.M
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.reply.multipart.reply.body.MultipartReplyQueueStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.request.multipart.request.body.MultipartRequestQueueStatsBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class QueueDirectStatisticsService extends AbstractQueueDirectStatisticsService<MultipartReply> {
-
     public QueueDirectStatisticsService(final RequestContextStack requestContextStack,
                                         final DeviceContext deviceContext,
                                         final ConvertorExecutor convertorExecutor,
@@ -35,14 +33,15 @@ public class QueueDirectStatisticsService extends AbstractQueueDirectStatisticsS
     }
 
     @Override
-    protected GetQueueStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
-        return  new GetQueueStatisticsOutputBuilder()
-            .setQueueIdAndStatisticsMap(input
-                .stream()
-                .flatMap(multipartReply -> ((MultipartReplyQueueStats) multipartReply.getMultipartReplyBody())
-                    .nonnullQueueIdAndStatisticsMap().values()
-                    .stream())
-                .collect(Collectors.toList()))
+    protected GetQueueStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+        final var map = input.stream()
+            .flatMap(multipartReply -> ((MultipartReplyQueueStats) multipartReply.getMultipartReplyBody())
+                .nonnullQueueIdAndStatisticsMap().values()
+                .stream())
+            .collect(BindingMap.toOrderedMap());
+
+        return new GetQueueStatisticsOutputBuilder()
+            .setQueueIdAndStatisticsMap(map)
             .build();
     }
 
@@ -58,5 +57,4 @@ public class QueueDirectStatisticsService extends AbstractQueueDirectStatisticsS
                 .build())
             .build();
     }
-
 }
index 34ed1e2bd666e30b93549328230e6e5c6d799587..b9cd4736094bad12f5bde738a0977e2670a929a5 100644 (file)
@@ -41,6 +41,7 @@ import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint8;
 
 public final class FlowUtil {
@@ -225,7 +226,7 @@ public final class FlowUtil {
                     if (!flowModOutput.isSuccessful()) {
                         batchFlows.add(new BatchFailedFlowsOutputBuilder()
                                 .setFlowId(flowId)
-                                .setBatchOrder(batchOrder)
+                                .setBatchOrder(Uint16.valueOf(batchOrder))
                                 .build());
                         flowErrors.addAll(flowModOutput.getErrors());
                     }
index 93c79b7b36fd77590dfbdbf0211276fb016e3283..7f2d3b9e2f66369b16b95c8cbaa77a24f39e71a7 100644 (file)
@@ -39,6 +39,7 @@ import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
 
 /**
@@ -236,7 +237,7 @@ public final class GroupUtil {
                     if (!groupModOutput.isSuccessful()) {
                         batchGroups.add(new BatchFailedGroupsOutputBuilder()
                                 .setGroupId(groupId)
-                                .setBatchOrder(batchOrder)
+                                .setBatchOrder(Uint16.valueOf(batchOrder))
                                 .build());
                         groupErrors.addAll(groupModOutput.getErrors());
                     }
index 9520aa63f115b7117e2d93459ecdd80df3fdb42d..d80f5f0629db99035b5c21df4bcbeabec74727a6 100644 (file)
@@ -39,6 +39,7 @@ import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 /**
  * Provides meter util methods.
@@ -181,8 +182,8 @@ public final class MeterUtil {
         private final int sizeOfInputBatch;
 
         CumulativeFunction(
-                Iterable<? extends org.opendaylight.yang.gen.v1.urn
-                        .opendaylight.meter.types.rev130918.Meter> inputBatchMeters, int sizeOfInputBatch) {
+                final Iterable<? extends org.opendaylight.yang.gen.v1.urn
+                        .opendaylight.meter.types.rev130918.Meter> inputBatchMeters, final int sizeOfInputBatch) {
             this.inputBatchMeters = inputBatchMeters;
             this.sizeOfInputBatch = sizeOfInputBatch;
         }
@@ -205,7 +206,7 @@ public final class MeterUtil {
 
                     if (!meterModOutput.isSuccessful()) {
                         batchMeters.add(new BatchFailedMetersOutputBuilder()
-                                .setBatchOrder(batchOrder)
+                                .setBatchOrder(Uint16.valueOf(batchOrder))
                                 .setMeterId(meterId)
                                 .build());
                         meterErrors.addAll(meterModOutput.getErrors());
index 2f3a5c2bdbcc641664d1ae4fe45269d20988a22d..9b7c5a46c9da5af06ba2953ee9f8c4369d3121d3 100644 (file)
@@ -74,6 +74,7 @@ public class NodeConnectorDirectStatisticsServiceTest extends AbstractDirectStat
         final List<MultipartReply> input = Collections.singletonList(reply);
 
         when(nodeConnector.getPortStats()).thenReturn(nodeConnectorStats);
+        when(nodeConnector.nonnullPortStats()).thenCallRealMethod();
         when(nodeConnectorCase.getMultipartReplyPortStats()).thenReturn(nodeConnector);
         when(reply.getMultipartReplyBody()).thenReturn(nodeConnectorCase);
 
@@ -91,7 +92,7 @@ public class NodeConnectorDirectStatisticsServiceTest extends AbstractDirectStat
         when(nodeConnectorStat.getTxErrors()).thenReturn(Uint64.ONE);
 
         final GetNodeConnectorStatisticsOutput output = service.buildReply(input, true);
-        assertTrue(output.getNodeConnectorStatisticsAndPortNumberMap().size() > 0);
+        assertTrue(output.nonnullNodeConnectorStatisticsAndPortNumberMap().size() > 0);
 
         final NodeConnectorStatisticsAndPortNumberMap stats =
                 output.nonnullNodeConnectorStatisticsAndPortNumberMap().values().iterator().next();
index 5427613e2dccfbeb3f9ddbf4f565ae9b7c8d3bf1..304305530e0caeb47debeb07fb7ce43381cf8b68 100644 (file)
@@ -80,6 +80,7 @@ public class QueueDirectStatisticsServiceTest extends AbstractDirectStatisticsSe
         final List<MultipartReply> input = Collections.singletonList(reply);
 
         when(queue.getQueueStats()).thenReturn(queueStats);
+        when(queue.nonnullQueueStats()).thenCallRealMethod();
         when(queueCase.getMultipartReplyQueue()).thenReturn(queue);
         when(reply.getMultipartReplyBody()).thenReturn(queueCase);