BUG-2794 : refactored code to use BitArray
[bgpcep.git] / bgp / linkstate / src / main / java / org / opendaylight / protocol / bgp / linkstate / attribute / sr / SrPrefixAttributesParser.java
index 1614cc129b14ae0a970b509bbd67cadca3ec6b8d..a28db5df0d218a073dd04623902483624224e8b0 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.protocol.bgp.linkstate.attribute.sr;
 
 import io.netty.buffer.ByteBuf;
-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.prefix.state.SrPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.prefix.state.SrPrefixBuilder;
@@ -18,22 +18,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 
 public final class SrPrefixAttributesParser {
 
-    private static final int FLAGS_SIZE = 1;
+    private static final int FLAGS_SIZE = 8;
 
     private SrPrefixAttributesParser() {
         throw new UnsupportedOperationException();
     }
 
     /* Flags */
-    private static final int RE_ADVERTISEMENT = 7;
-    private static final int NODE_SID = 6;
-    private static final int NO_PHP = 5;
-    private static final int EXPLICIT_NULL = 4;
-    private static final int VALUE = 3;
-    private static final int LOCAL = 2;
+    private static final int RE_ADVERTISEMENT = 0;
+    private static final int NODE_SID = 1;
+    private static final int NO_PHP = 2;
+    private static final int EXPLICIT_NULL = 3;
+    private static final int VALUE = 4;
+    private static final int LOCAL = 5;
 
     public static SrPrefix parseSrPrefix(final ByteBuf buffer) {
-        final BitSet flags = BitSet.valueOf(ByteArray.readBytes(buffer, FLAGS_SIZE));
+        final BitArray flags = BitArray.valueOf(buffer, FLAGS_SIZE);
         final SrPrefixBuilder builder = new SrPrefixBuilder();
         builder.setFlags(new Flags(flags.get(EXPLICIT_NULL), flags.get(LOCAL), flags.get(NO_PHP), flags.get(NODE_SID), flags.get(RE_ADVERTISEMENT), flags.get(VALUE)));
         builder.setAlgorithm(Algorithm.forValue(buffer.readUnsignedByte()));
@@ -43,26 +43,14 @@ public final class SrPrefixAttributesParser {
 
     public static void serializeSrPrefix(final SrPrefix srPrefix, final ByteBuf buffer) {
         final Flags flags = srPrefix.getFlags();
-        final BitSet bs = new BitSet(FLAGS_SIZE);
-        if (flags.isReadvertisement() != null) {
-            bs.set(RE_ADVERTISEMENT, flags.isReadvertisement());
-        }
-        if (flags.isNodeSid() != null) {
-            bs.set(NODE_SID, flags.isNodeSid());
-        }
-        if (flags.isNoPhp() != null) {
-            bs.set(NO_PHP, flags.isNoPhp());
-        }
-        if (flags.isExplicitNull() != null) {
-            bs.set(EXPLICIT_NULL, flags.isExplicitNull());
-        }
-        if (flags.isValue() != null) {
-            bs.set(VALUE, flags.isValue());
-        }
-        if (flags.isLocal() != null) {
-            bs.set(LOCAL, flags.isLocal());
-        }
-        buffer.writeBytes(bs.toByteArray());
+        final BitArray bs = new BitArray(FLAGS_SIZE);
+        bs.set(RE_ADVERTISEMENT, flags.isReadvertisement());
+        bs.set(NODE_SID, flags.isNodeSid());
+        bs.set(NO_PHP, flags.isNoPhp());
+        bs.set(EXPLICIT_NULL, flags.isExplicitNull());
+        bs.set(VALUE, flags.isValue());
+        bs.set(LOCAL, flags.isLocal());
+        bs.toByteBuf(buffer);
         buffer.writeByte(srPrefix.getAlgorithm().getIntValue());
         buffer.writeBytes(srPrefix.getSid().getValue());
     }