Minimize linkstate use of ByteBufWriteUtils
[bgpcep.git] / bgp / extensions / linkstate / src / main / java / org / opendaylight / protocol / bgp / linkstate / impl / tlvs / LinkIdTlvParser.java
index 190ff0abf361946b56b8c1f7fd2186ec77f4d286..6a7cdb655da262230059e4c888d6fb6d61781f91 100644 (file)
@@ -7,44 +7,30 @@
  */
 package org.opendaylight.protocol.bgp.linkstate.impl.tlvs;
 
+import static java.util.Objects.requireNonNull;
+
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.bgp.linkstate.spi.LinkstateTlvParser;
-import org.opendaylight.protocol.util.ByteBufWriteUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.LinkLrIdentifiers;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils;
 
 public final class LinkIdTlvParser implements LinkstateTlvParser.LinkstateTlvSerializer<LinkLrIdentifiers>,
         LinkstateTlvParser<LinkLrIdentifiers> {
-
     private static final int LINK_LR_IDENTIFIERS = 258;
 
     @Override
     public void serializeTlvBody(final LinkLrIdentifiers tlv, final ByteBuf body) {
-        ByteBufWriteUtil.writeUnsignedInt(tlv.getLinkLocalIdentifier(), body);
-        ByteBufWriteUtil.writeUnsignedInt(tlv.getLinkRemoteIdentifier(), body);
+        ByteBufUtils.writeOrZero(body, tlv.getLinkLocalIdentifier());
+        ByteBufUtils.writeOrZero(body, tlv.getLinkRemoteIdentifier());
     }
 
     @Override
     public LinkLrIdentifiers parseTlvBody(final ByteBuf value) {
-        final Uint32 localId = Uint32.valueOf(value.readUnsignedInt());
-        final Uint32 remoteId = Uint32.valueOf(value.readUnsignedInt());
-        return new LinkLrIdentifiers() {
-            @Override
-            public Class<LinkLrIdentifiers> implementedInterface() {
-                return LinkLrIdentifiers.class;
-            }
-
-            @Override
-            public Uint32 getLinkRemoteIdentifier() {
-                return remoteId;
-            }
-
-            @Override
-            public Uint32 getLinkLocalIdentifier() {
-                return localId;
-            }
-        };
+        final Uint32 localId = ByteBufUtils.readUint32(value);
+        final Uint32 remoteId = ByteBufUtils.readUint32(value);
+        return new AnonymousLinkLrIdentifiers(localId, remoteId);
     }
 
     @Override
@@ -56,4 +42,29 @@ public final class LinkIdTlvParser implements LinkstateTlvParser.LinkstateTlvSer
     public int getType() {
         return LINK_LR_IDENTIFIERS;
     }
+
+    private static final class AnonymousLinkLrIdentifiers implements LinkLrIdentifiers {
+        private final Uint32 localId;
+        private final Uint32 remoteId;
+
+        AnonymousLinkLrIdentifiers(final Uint32 localId, final Uint32 remoteId) {
+            this.localId = requireNonNull(localId);
+            this.remoteId = requireNonNull(remoteId);
+        }
+
+        @Override
+        public Class<LinkLrIdentifiers> implementedInterface() {
+            return LinkLrIdentifiers.class;
+        }
+
+        @Override
+        public Uint32 getLinkRemoteIdentifier() {
+            return remoteId;
+        }
+
+        @Override
+        public Uint32 getLinkLocalIdentifier() {
+            return localId;
+        }
+    }
 }