Fix errors in serializers and deserializers
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / match / Ipv6SourceEntryDeserializer.java
index b988e7f1219f9fa115f5c212870b51f6a9856266..4a700ad695faebc8df15a66352152f71b8543584 100644 (file)
@@ -36,40 +36,25 @@ public class Ipv6SourceEntryDeserializer extends AbstractMatchEntryDeserializer
             if (IpConversionUtil.isIpv6ArbitraryBitMask(mask)) {
                 setArbitraryMatch(builder, address, mask);
             } else {
-                setPrefixMatch(builder, address, mask, hasMask);
+                setPrefixMatch(builder, address, mask);
             }
         } else {
-            setPrefixMatch(builder, address, null, hasMask);
+            setPrefixMatch(builder, address, null);
         }
     }
 
-    private static void setPrefixMatch(final MatchBuilder builder, final Ipv6Address address,
-            final byte[] mask, final boolean hasMask) {
-        if (hasMask) {
-            if (Objects.isNull(builder.getLayer3Match())) {
-                builder.setLayer3Match(new Ipv6MatchBuilder()
-                        .setIpv6Source(IpConversionUtil.createPrefix(address, mask))
-                        .build());
-            } else if (Ipv6Match.class.isInstance(builder.getLayer3Match())) {
-                builder.setLayer3Match(new Ipv6MatchBuilder(Ipv6Match.class.cast(builder.getLayer3Match()))
-                        .setIpv6Source(IpConversionUtil.createPrefix(address, mask))
-                        .setIpv6Destination(Ipv6Match.class.cast(builder.getLayer3Match()).getIpv6Destination())
-                        .build());
-            } else {
-                throwErrorOnMalformed(builder, "layer3Match");
-            }
+    private static void setPrefixMatch(final MatchBuilder builder, final Ipv6Address address, final byte[] mask) {
+        if (Objects.isNull(builder.getLayer3Match())) {
+            builder.setLayer3Match(new Ipv6MatchBuilder()
+                .setIpv6Source(IpConversionUtil.createPrefix(address, mask))
+                .build());
+        } else if (Ipv6Match.class.isInstance(builder.getLayer3Match())
+            && Objects.isNull(Ipv6Match.class.cast(builder.getLayer3Match()).getIpv6Source())) {
+            builder.setLayer3Match(new Ipv6MatchBuilder(Ipv6Match.class.cast(builder.getLayer3Match()))
+                .setIpv6Source(IpConversionUtil.createPrefix(address, mask))
+                .build());
         } else {
-            if (Objects.isNull(builder.getLayer3Match())) {
-                builder.setLayer3Match(new Ipv6MatchBuilder()
-                        .setIpv6Source(IpConversionUtil.createPrefix(address))
-                        .build());
-            } else if (Ipv6Match.class.isInstance(builder.getLayer3Match())) {
-                builder.setLayer3Match(new Ipv6MatchBuilder(Ipv6Match.class.cast(builder.getLayer3Match()))
-                        .setIpv6Source(IpConversionUtil.createPrefix(address))
-                        .build());
-            } else {
-                throwErrorOnMalformed(builder, "layer3Match");
-            }
+            throwErrorOnMalformed(builder, "layer3Match", "ipv6Source");
         }
     }
 
@@ -80,14 +65,15 @@ public class Ipv6SourceEntryDeserializer extends AbstractMatchEntryDeserializer
                     .setIpv6SourceAddressNoMask(address)
                     .setIpv6SourceArbitraryBitmask(IpConversionUtil.createIpv6ArbitraryBitMask(mask))
                     .build());
-        } else if (Ipv6MatchArbitraryBitMask.class.isInstance(builder.getLayer3Match())) {
+        } else if (Ipv6MatchArbitraryBitMask.class.isInstance(builder.getLayer3Match())
+            && Objects.isNull(Ipv6MatchArbitraryBitMask.class.cast(builder.getLayer3Match()).getIpv6SourceAddressNoMask())) {
             final Ipv6MatchArbitraryBitMask match = Ipv6MatchArbitraryBitMask.class.cast(builder.getLayer3Match());
             builder.setLayer3Match(new Ipv6MatchArbitraryBitMaskBuilder(match)
                     .setIpv6SourceAddressNoMask(address)
                     .setIpv6SourceArbitraryBitmask(IpConversionUtil.createIpv6ArbitraryBitMask(mask))
                     .build());
         } else {
-            throwErrorOnMalformed(builder, "layer3Match");
+            throwErrorOnMalformed(builder, "layer3Match", "ipv6SourceAddressNoMask");
         }
     }