BUG-2794 : refactored code to use BitArray
[bgpcep.git] / bgp / linkstate / src / main / java / org / opendaylight / protocol / bgp / linkstate / attribute / sr / SrLinkAttributesParser.java
index 5b010432b31b2e4822d99c2618d66d48f1f344b5..18845e5d4ba8ad9c1152c3cc551280353954dc70 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.protocol.bgp.linkstate.attribute.sr;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import java.util.BitSet;
+import org.opendaylight.protocol.util.BitArray;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.link.state.SrAdjId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.link.state.SrAdjIdBuilder;
@@ -25,12 +25,12 @@ public final class SrLinkAttributesParser {
     private static final int ISO_SYSTEM_ID_SIZE = 6;
 
     /* Adj-SID flags */
-    private static final int ADDRESS_FAMILY_FLAG = 7;
-    private static final int BACKUP_FLAG = 6;
-    private static final int VALUE_FLAG = 5;
-    private static final int LOCAL_FLAG = 4;
-    private static final int SET_FLAG = 3;
-    private static final int FLAGS_SIZE = 1;
+    private static final int ADDRESS_FAMILY_FLAG = 0;
+    private static final int BACKUP_FLAG = 1;
+    private static final int VALUE_FLAG = 2;
+    private static final int LOCAL_FLAG = 3;
+    private static final int SET_FLAG = 4;
+    private static final int FLAGS_SIZE = 8;
 
     private SrLinkAttributesParser() {
         throw new UnsupportedOperationException();
@@ -41,7 +41,7 @@ public final class SrLinkAttributesParser {
             return new SrAdjIdBuilder().build();
         }
         final SrAdjIdBuilder srAdjIdBuilder = new SrAdjIdBuilder();
-        final BitSet flags = BitSet.valueOf(ByteArray.readBytes(buffer, FLAGS_SIZE));
+        final BitArray flags = BitArray.valueOf(buffer, FLAGS_SIZE);
         srAdjIdBuilder.setFlags(new AdjacencyFlags(flags.get(ADDRESS_FAMILY_FLAG), flags.get(BACKUP_FLAG), flags.get(LOCAL_FLAG), flags.get(SET_FLAG), flags.get(VALUE_FLAG)));
         srAdjIdBuilder.setWeight(new Weight(buffer.readUnsignedByte()));
         srAdjIdBuilder.setSid(new SidLabel(ByteArray.readAllBytes(buffer)));
@@ -51,23 +51,13 @@ public final class SrLinkAttributesParser {
     public static ByteBuf serializeAdjacencySegmentIdentifier(final SrAdjId srAdjId) {
         final ByteBuf value = Unpooled.buffer();
         final AdjacencyFlags srAdjIdFlags = srAdjId.getFlags();
-        final BitSet flags = new BitSet(FLAGS_SIZE);
-        if (srAdjIdFlags.isAddressFamily() != null) {
-            flags.set(ADDRESS_FAMILY_FLAG, srAdjIdFlags.isAddressFamily());
-        }
-        if (srAdjIdFlags.isBackup() != null) {
-            flags.set(BACKUP_FLAG, srAdjIdFlags.isBackup());
-        }
-        if (srAdjIdFlags.isValue() != null) {
-            flags.set(VALUE_FLAG, srAdjIdFlags.isValue());
-        }
-        if (srAdjIdFlags.isLocal() != null) {
-            flags.set(LOCAL_FLAG, srAdjIdFlags.isLocal());
-        }
-        if (srAdjIdFlags.isSetFlag() != null) {
-            flags.set(SET_FLAG, srAdjIdFlags.isSetFlag());
-        }
-        value.writeBytes(flags.toByteArray());
+        final BitArray flags = new BitArray(FLAGS_SIZE);
+        flags.set(ADDRESS_FAMILY_FLAG, srAdjIdFlags.isAddressFamily());
+        flags.set(BACKUP_FLAG, srAdjIdFlags.isBackup());
+        flags.set(VALUE_FLAG, srAdjIdFlags.isValue());
+        flags.set(LOCAL_FLAG, srAdjIdFlags.isLocal());
+        flags.set(SET_FLAG, srAdjIdFlags.isSetFlag());
+        flags.toByteBuf(value);
         value.writeByte(srAdjId.getWeight().getValue());
         value.writeBytes(srAdjId.getSid().getValue());
         return value;
@@ -78,7 +68,7 @@ public final class SrLinkAttributesParser {
             return new SrLanAdjIdBuilder().build();
         }
         final SrLanAdjIdBuilder srLanAdjIdBuilder = new SrLanAdjIdBuilder();
-        final BitSet flags = BitSet.valueOf(ByteArray.readBytes(buffer, FLAGS_SIZE));
+        final BitArray flags = BitArray.valueOf(buffer, FLAGS_SIZE);
         srLanAdjIdBuilder.setFlags(new AdjacencyFlags(flags.get(ADDRESS_FAMILY_FLAG), flags.get(BACKUP_FLAG), flags.get(LOCAL_FLAG), flags.get(SET_FLAG), flags.get(VALUE_FLAG)));
         srLanAdjIdBuilder.setWeight(new Weight(buffer.readUnsignedByte()));
         srLanAdjIdBuilder.setIsoSystemId(new IsoSystemIdentifier(ByteArray.readBytes(buffer, ISO_SYSTEM_ID_SIZE)));
@@ -89,23 +79,13 @@ public final class SrLinkAttributesParser {
     public static ByteBuf serializeLanAdjacencySegmentIdentifier(final SrLanAdjId srLanAdjId) {
         final ByteBuf value = Unpooled.buffer();
         final AdjacencyFlags srAdjIdFlags = srLanAdjId.getFlags();
-        final BitSet flags = new BitSet(FLAGS_SIZE);
-        if (srAdjIdFlags.isAddressFamily() != null) {
-            flags.set(ADDRESS_FAMILY_FLAG, srAdjIdFlags.isAddressFamily());
-        }
-        if (srAdjIdFlags.isBackup() != null) {
-            flags.set(BACKUP_FLAG, srAdjIdFlags.isBackup());
-        }
-        if (srAdjIdFlags.isValue() != null) {
-            flags.set(VALUE_FLAG, srAdjIdFlags.isValue());
-        }
-        if (srAdjIdFlags.isLocal() != null) {
-            flags.set(LOCAL_FLAG, srAdjIdFlags.isLocal());
-        }
-        if (srAdjIdFlags.isSetFlag() != null) {
-            flags.set(SET_FLAG, srAdjIdFlags.isSetFlag());
-        }
-        value.writeBytes(flags.toByteArray());
+        final BitArray flags = new BitArray(FLAGS_SIZE);
+        flags.set(ADDRESS_FAMILY_FLAG, srAdjIdFlags.isAddressFamily());
+        flags.set(BACKUP_FLAG, srAdjIdFlags.isBackup());
+        flags.set(VALUE_FLAG, srAdjIdFlags.isValue());
+        flags.set(LOCAL_FLAG, srAdjIdFlags.isLocal());
+        flags.set(SET_FLAG, srAdjIdFlags.isSetFlag());
+        flags.toByteBuf(value);
         value.writeByte(srLanAdjId.getWeight().getValue());
         value.writeBytes(srLanAdjId.getIsoSystemId().getValue());
         value.writeBytes(srLanAdjId.getSid().getValue());