Update MRI projects for Aluminium
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / flow / FlowStatsResponseConvertor.java
index 7b8e93ddc0c430d09553365cbc5aef11650a87fd..0f61101c08c14a43287b85694d2517ca6ef0a9a9 100644 (file)
@@ -12,7 +12,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
@@ -38,13 +37,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatch;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.flow._case.multipart.reply.flow.FlowStats;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 /**
  * Converts flow related statistics messages coming from openflow switch to MD-SAL messages.
  *
+ * <p>
  * Example usage:
  * <pre>
  * {@code
@@ -54,53 +55,55 @@ import org.opendaylight.yangtools.yang.binding.DataContainer;
  * }
  * </pre>
  */
-public class FlowStatsResponseConvertor extends Convertor<List<FlowStats>, List<FlowAndStatisticsMapList>, FlowStatsResponseConvertorData> {
+public class FlowStatsResponseConvertor extends Convertor<List<FlowStats>, List<FlowAndStatisticsMapList>,
+        FlowStatsResponseConvertorData> {
 
-    private static final Set<Class<? extends DataContainer>> TYPES = Collections.singleton(FlowStats.class);
+    private static final Set<Class<?>> TYPES = Collections.singleton(FlowStats.class);
 
     /**
-     * Method wraps openflow 1.0 actions list to Apply Action Instructions
+     * Method wraps openflow 1.0 actions list to Apply Action Instructions.
      *
      * @param actionsList list of action
      * @param ipProtocol ip protocol
      * @return OF10 actions as an instructions
      */
-    private Instructions wrapOF10ActionsToInstruction(List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action> actionsList,
-                                                      final short version,
-                                                      final Short ipProtocol) {
+    private Instructions wrapOF10ActionsToInstruction(
+            final List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions
+                .grouping.Action> actionsList,
+            final short version, final Uint8 ipProtocol) {
         ActionResponseConvertorData actionResponseConvertorData = new ActionResponseConvertorData(version);
-        actionResponseConvertorData.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION);
+        actionResponseConvertorData.setActionPath(ActionPath.FLOWS_STATISTICS_UPDATE_WRITE_ACTIONS);
         actionResponseConvertorData.setIpProtocol(ipProtocol);
 
-        InstructionsBuilder instructionsBuilder = new InstructionsBuilder();
-        List<Instruction> salInstructionList = new ArrayList<>();
-
         ApplyActionsCaseBuilder applyActionsCaseBuilder = new ApplyActionsCaseBuilder();
         ApplyActionsBuilder applyActionsBuilder = new ApplyActionsBuilder();
 
-        final Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action>> actions = getConvertorExecutor().convert(
-                actionsList, actionResponseConvertorData);
+        final Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action>>
+            actions = getConvertorExecutor().convert(actionsList, actionResponseConvertorData);
 
         applyActionsBuilder.setAction(FlowConvertorUtil.wrapActionList(actions.orElse(Collections.emptyList())));
         applyActionsCaseBuilder.setApplyActions(applyActionsBuilder.build());
 
         InstructionBuilder instBuilder = new InstructionBuilder();
         instBuilder.setInstruction(applyActionsCaseBuilder.build());
-        instBuilder.setKey(new InstructionKey(0));
+        instBuilder.withKey(new InstructionKey(0));
         instBuilder.setOrder(0);
+        List<Instruction> salInstructionList = new ArrayList<>();
         salInstructionList.add(instBuilder.build());
 
+        InstructionsBuilder instructionsBuilder = new InstructionsBuilder();
         instructionsBuilder.setInstruction(salInstructionList);
         return instructionsBuilder.build();
     }
 
     @Override
-    public Collection<Class<? extends DataContainer>> getTypes() {
+    public Collection<Class<?>> getTypes() {
         return TYPES;
     }
 
     @Override
-    public List<FlowAndStatisticsMapList> convert(List<FlowStats> source, FlowStatsResponseConvertorData data) {
+    public List<FlowAndStatisticsMapList> convert(final List<FlowStats> source,
+            final FlowStatsResponseConvertorData data) {
         final List<FlowAndStatisticsMapList> result = new ArrayList<>();
 
         for (FlowStats flowStats : source) {
@@ -123,38 +126,43 @@ public class FlowStatsResponseConvertor extends Convertor<List<FlowStats>, List<
             salFlowStatsBuilder.setPriority(flowStats.getPriority());
             salFlowStatsBuilder.setTableId(flowStats.getTableId());
 
-            Short ipProtocol = null;
-
             if (flowStats.getMatchV10() != null) {
-                final Optional<MatchBuilder> matchBuilderOptional = getConvertorExecutor().convert(flowStats.getMatchV10(), data);
+                final Optional<MatchBuilder> matchBuilderOptional = getConvertorExecutor().convert(
+                        flowStats.getMatchV10(), data);
+                Uint8 ipProtocol = null;
 
                 if (matchBuilderOptional.isPresent()) {
-                    if (Objects.nonNull(matchBuilderOptional.get().getIpMatch())) {
-                        ipProtocol = matchBuilderOptional.get().getIpMatch().getIpProtocol();
+                    final MatchBuilder matchBuilder = matchBuilderOptional.get();
+                    final IpMatch ipMatch = matchBuilder.getIpMatch();
+                    if (ipMatch != null) {
+                        ipProtocol = ipMatch.getIpProtocol();
                     }
 
-                    salFlowStatsBuilder.setMatch(matchBuilderOptional.get().build());
+                    salFlowStatsBuilder.setMatch(matchBuilder.build());
                 }
 
                 if (flowStats.getAction() != null && flowStats.getAction().size() != 0) {
-                    salFlowStatsBuilder.setInstructions(wrapOF10ActionsToInstruction(flowStats.getAction(), data.getVersion(), ipProtocol));
+                    salFlowStatsBuilder.setInstructions(wrapOF10ActionsToInstruction(flowStats.getAction(),
+                            data.getVersion(), ipProtocol));
                 }
             }
 
             if (flowStats.getMatch() != null) {
-                final Optional<MatchBuilder> matchBuilderOptional = getConvertorExecutor().convert(flowStats.getMatch(), data);
+                final Optional<MatchBuilder> matchBuilderOptional = getConvertorExecutor().convert(
+                        flowStats.getMatch(), data);
 
                 if (matchBuilderOptional.isPresent()) {
                     final MatchBuilder matchBuilder = matchBuilderOptional.get();
 
                     final AugmentTuple<Match> matchExtensionWrap =
                             MatchExtensionHelper.processAllExtensions(
-                                    flowStats.getMatch().getMatchEntry(),
+                                    flowStats.getMatch().nonnullMatchEntry(),
                                     OpenflowVersion.get(data.getVersion()),
                                     data.getMatchPath());
 
                     if (matchExtensionWrap != null) {
-                        matchBuilder.addAugmentation(matchExtensionWrap.getAugmentationClass(), matchExtensionWrap.getAugmentationObject());
+                        matchBuilder.addAugmentation(matchExtensionWrap.getAugmentationClass(),
+                                matchExtensionWrap.getAugmentationObject());
                     }
 
                     salFlowStatsBuilder.setMatch(matchBuilder.build());