Switch to MD-SAL APIs
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / services / compatibility / FlowStatisticsToNotificationTransformer.java
index 0c8089f4bd2dd936cb4197577899fb3a2dba7507..5e78cddcc30d558521f995e874af1910d8b29238 100644 (file)
@@ -14,8 +14,9 @@ import java.util.List;
 import java.util.Optional;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
+import org.opendaylight.openflowplugin.extension.api.path.MatchPath;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.FlowStatsResponseConvertorData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdateBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapList;
@@ -26,20 +27,22 @@ 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.flow._case.MultipartReplyFlow;
 
 /**
- * pulled out flow stats to notification transformation
+ * Pulled out flow stats to notification transformation.
  */
-public class FlowStatisticsToNotificationTransformer {
+public final class FlowStatisticsToNotificationTransformer {
 
     private FlowStatisticsToNotificationTransformer() {
         // Hide implicit constructor
     }
 
     /**
+     * Transform to notification.
+     *
      * @param mpResult      raw multipart response from device
-     * @param deviceInfo   device state
+     * @param deviceInfo    device state
      * @param ofVersion     device version
-     * @param emulatedTxId
-     * @param convertorExecutor
+     * @param emulatedTxId  emulated transaction Id
+     * @param convertorExecutor convertor executor
      * @return notification containing flow stats
      */
     public static FlowsStatisticsUpdate transformToNotification(final List<MultipartReply> mpResult,
@@ -47,8 +50,9 @@ public class FlowStatisticsToNotificationTransformer {
                                                                 final OpenflowVersion ofVersion,
                                                                 final TransactionId emulatedTxId,
                                                                 final ConvertorExecutor convertorExecutor) {
-        final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(ofVersion.getVersion());
+        final FlowStatsResponseConvertorData data = new FlowStatsResponseConvertorData(ofVersion.getVersion());
         data.setDatapathId(deviceInfo.getDatapathId());
+        data.setMatchPath(MatchPath.FLOWS_STATISTICS_UPDATE_MATCH);
         final FlowsStatisticsUpdateBuilder notification = new FlowsStatisticsUpdateBuilder();
         final List<FlowAndStatisticsMapList> statsList = new ArrayList<>();
         notification.setId(deviceInfo.getNodeId());
@@ -65,9 +69,7 @@ public class FlowStatisticsToNotificationTransformer {
                     convertorExecutor.convert(replyBody.getFlowStats(), data);
 
 
-            if (outStatsItem.isPresent()) {
-                statsList.addAll(outStatsItem.get());
-            }
+            outStatsItem.ifPresent(statsList::addAll);
         }
 
         return notification.build();