BUG-6047: Check lenght of array containing Arbitrary DTO 14/40214/2
authorClaudio D. Gasparini <cgaspari@cisco.com>
Mon, 13 Jun 2016 08:02:25 +0000 (10:02 +0200)
committerClaudio D. Gasparini <cgaspari@cisco.com>
Mon, 13 Jun 2016 13:49:07 +0000 (13:49 +0000)
Expectected lenght is 9, improve log by adding a precondition to
show more clear message when its incorrect.

Change-Id: I8bc0b0fa1d677a20784c48b6e8fb549392e97529
Signed-off-by: Claudio D. Gasparini <cgaspari@cisco.com>
bgp/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/ArbitraryParser.java
bgp/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/EsiModelUtil.java

index 2583f8370c89b8ea84dbe7440a49f37f49d7145c..1b87338a080dc1e0853438d52a5fdcf8a8d9af43 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 
 final class ArbitraryParser extends AbstractEsiType {
-    private static final int ARBITRARY_LENGTH = 9;
+    static final int ARBITRARY_LENGTH = 9;
 
     @Override
     public void serializeBody(final Esi esiCase, final ByteBuf body) {
index a961c2ea720180578bef013fb27caf692b687432..c8402b5761612d569f3cc83b773b650d805496d6 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
 
+import com.google.common.base.Preconditions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
@@ -37,9 +38,11 @@ final class EsiModelUtil {
         return (Long) cont.getChild(LD_NID).get().getValue();
     }
 
-
     static Arbitrary extractArbitrary(final ContainerNode esi) {
-        return new ArbitraryBuilder().setArbitrary((byte[]) esi.getChild(ARB_NID).get().getValue()).build();
+        final byte[] arbitrary = (byte[]) esi.getChild(ARB_NID).get().getValue();
+        Preconditions.checkArgument(arbitrary.length == ArbitraryParser.ARBITRARY_LENGTH, "Wrong length of array of bytes. Expected: %s Passed: %s " +
+            ";", ArbitraryParser.ARBITRARY_LENGTH, arbitrary.length);
+        return new ArbitraryBuilder().setArbitrary(arbitrary).build();
     }