Update MRI projects for Aluminium
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / match / MatchResponseConvertor.java
index 0c156e26bc8abff44b19b1d488c32eaaf378d4f5..e41040829789ec43dd2820962712158cb097d028 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.case
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalEthDstCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalEthSrcCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalEthTypeCase;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalExperimenterIdCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalIcmpv4CodeCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalIcmpv4TypeCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalIcmpv6CodeCase;
@@ -43,11 +44,11 @@ import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.case
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalMplsBosCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalMplsLabelCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalMplsTcCase;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalPacketTypeCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalPbbIsidCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalSctpDstCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalSctpSrcCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalTcpDstCase;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalExperimenterIdCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalTcpSrcCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalTunnelIdCase;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.OfToSalTunnelIpv4DstCase;
@@ -74,19 +75,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.field._case.SetFieldAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.MatchEntryValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Dst;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Src;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.field._case.SetFieldAction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
 
 /**
- * Converts Openflow 1.3+ specific flow match to MD-SAL format flow
- * match
+ * Converts Openflow 1.3+ specific flow match to MD-SAL format flow match.
  *
+ * <p>
  * Example usage:
  * <pre>
  * {@code
@@ -96,11 +96,14 @@ import org.opendaylight.yangtools.yang.binding.DataContainer;
  * }
  * </pre>
  */
-public class MatchResponseConvertor extends Convertor<MatchEntriesGrouping, MatchBuilder, VersionDatapathIdConvertorData> {
-    private static final ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData> OF_TO_SAL_PROCESSOR = new ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData>()
+public class MatchResponseConvertor extends Convertor<MatchEntriesGrouping, MatchBuilder,
+        VersionDatapathIdConvertorData> {
+    private static final ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData>
+        OF_TO_SAL_PROCESSOR = new ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData>()
             .addCase(new OfToSalInPortCase())
             .addCase(new OfToSalInPhyPortCase())
             .addCase(new OfToSalMetadataCase())
+            .addCase(new OfToSalPacketTypeCase())
             .addCase(new OfToSalEthSrcCase())
             .addCase(new OfToSalEthDstCase())
             .addCase(new OfToSalEthTypeCase())
@@ -140,7 +143,8 @@ public class MatchResponseConvertor extends Convertor<MatchEntriesGrouping, Matc
             .addCase(new OfToSalTunnelIdCase())
             .addCase(new OfToSalExperimenterIdCase());
 
-    private static final ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData> OF_TO_SAL_TUNNEL_PROCESSOR = new ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData>()
+    private static final ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData>
+        OF_TO_SAL_TUNNEL_PROCESSOR = new ConvertorProcessor<MatchEntryValue, MatchBuilder, MatchResponseConvertorData>()
             .addCase(new OfToSalTunnelIpv4SrcCase())
             .addCase(new OfToSalTunnelIpv4DstCase());
     private static final java.util.List<Class<?>> TYPES = Arrays.asList(Match.class, SetFieldAction.class);
@@ -174,16 +178,17 @@ public class MatchResponseConvertor extends Convertor<MatchEntriesGrouping, Matc
         data.setTunnelIpv4MatchBuilder(new TunnelIpv4MatchBuilder());
         data.setTcpFlagsMatchBuilder(new TcpFlagsMatchBuilder());
 
-        for (MatchEntry ofMatch : source.getMatchEntry()) {
-            if (TunnelIpv4Dst.class.isAssignableFrom(ofMatch.getOxmMatchField()) ||
-                    TunnelIpv4Src.class.isAssignableFrom(ofMatch.getOxmMatchField())) {
-                /**
+        for (MatchEntry ofMatch : source.nonnullMatchEntry()) {
+            if (TunnelIpv4Dst.class.isAssignableFrom(ofMatch.getOxmMatchField())
+                    || TunnelIpv4Src.class.isAssignableFrom(ofMatch.getOxmMatchField())) {
+                /*
                  * TODO: Fix TunnelIpv4Src and Ipv4Dst, because current implementation do not work
                  * TunnelIpv4Src and TunnelIpv4Dst are not compatible with
                  * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField
                  * and so you cannot even set them to OxmMatchField.
                  * Creation of TunnelIpv4SrcCase and TunnelIpv4DstCase in
-                 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value
+                 * org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value
+                 *     .grouping.match.entry.value
                  * and proper use of it can fix this bug.
                  */
                 OF_TO_SAL_TUNNEL_PROCESSOR.process(ofMatch.getMatchEntryValue(), data, getConvertorExecutor());