Cleanup AbstractEsiType 71/82871/8
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 1 Jul 2019 20:44:43 +0000 (22:44 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 2 Jul 2019 10:05:22 +0000 (12:05 +0200)
Cleanup fluent builder use to minimize bytecode footprint, requiring
ByteBuf return from subclasses.

Change-Id: Ie26a894e977a9020edbd777e709ebd36dbd972ff
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/ASGenParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/AbstractEsiType.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/ArbitraryParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/LacpParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/LanParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/MacParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/RouterIdParser.java

index 5d43550f42e26320e8c292aaddb87a358c190bd0..bf63114936bab8674f5a31f81c92d51177518c2e 100644 (file)
@@ -5,14 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractAS;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractLD;
 import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeUnsignedInt;
 
-import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev180329.EsiType;
@@ -26,13 +25,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 final class ASGenParser extends AbstractEsiType {
 
     @Override
-    public void serializeBody(final Esi esi, final ByteBuf body) {
-        Preconditions.checkArgument(esi instanceof AsGeneratedCase,
-                "Unknown esi instance. Passed %s. Needed AsGeneratedCase.", esi.getClass());
+    public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
+        checkArgument(esi instanceof AsGeneratedCase, "Unknown esi instance. Passed %s. Needed AsGeneratedCase.", esi);
         final AsGenerated asGen = ((AsGeneratedCase) esi).getAsGenerated();
         writeUnsignedInt(asGen.getAs().getValue(), body);
         writeUnsignedInt(asGen.getLocalDiscriminator(), body);
-        body.writeZero(ZERO_BYTE);
+        return body.writeZero(ZERO_BYTE);
     }
 
     @Override
@@ -42,16 +40,21 @@ final class ASGenParser extends AbstractEsiType {
 
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
-        final AsGeneratedBuilder builder = new AsGeneratedBuilder();
-        builder.setLocalDiscriminator(extractLD(esi));
-        builder.setAs(extractAS(esi));
-        return new AsGeneratedCaseBuilder().setAsGenerated(builder.build()).build();
+        return new AsGeneratedCaseBuilder()
+                .setAsGenerated(new AsGeneratedBuilder()
+                    .setAs(extractAS(esi))
+                    .setLocalDiscriminator(extractLD(esi))
+                    .build())
+                .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
-        final AsGenerated asGen = new AsGeneratedBuilder().setAs(new AsNumber(buffer.readUnsignedInt()))
-            .setLocalDiscriminator(buffer.readUnsignedInt()).build();
-        return new AsGeneratedCaseBuilder().setAsGenerated(asGen).build();
+        return new AsGeneratedCaseBuilder()
+                .setAsGenerated(new AsGeneratedBuilder()
+                    .setAs(new AsNumber(buffer.readUnsignedInt()))
+                    .setLocalDiscriminator(buffer.readUnsignedInt())
+                    .build())
+                .build();
     }
 }
index da9192be68a0b128e6ccd3617ce39ec9f08f1b99..942d95e9feedec92504dada30f2bb1d256c5d8e2 100644 (file)
@@ -22,13 +22,11 @@ abstract class AbstractEsiType implements EsiParser, EsiSerializer {
 
     @Override
     public final void serializeEsi(final Esi esi, final ByteBuf buffer) {
-        final ByteBuf body = Unpooled.buffer(BODY_LENGTH);
-        serializeBody(esi, body);
-        buffer.writeByte(getType().getIntValue());
-        buffer.writeBytes(body);
+        final ByteBuf body = serializeBody(esi, Unpooled.buffer(BODY_LENGTH));
+        buffer.writeByte(getType().getIntValue()).writeBytes(body);
     }
 
-    protected abstract void serializeBody(Esi esi, ByteBuf buffer);
+    protected abstract ByteBuf serializeBody(Esi esi, ByteBuf buffer);
 
     protected abstract EsiType getType();
 }
index 0ba9dcaa8902f5f673a99b6db15c20f824f85154..679fe93c23a5398c69ae901bbd56bbabe1a37f2d 100644 (file)
@@ -8,9 +8,9 @@
 
 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractArbitrary;
 
-import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev180329.EsiType;
@@ -24,10 +24,10 @@ final class ArbitraryParser extends AbstractEsiType {
     static final int ARBITRARY_LENGTH = 9;
 
     @Override
-    public void serializeBody(final Esi esiCase, final ByteBuf body) {
-        Preconditions.checkArgument(esiCase instanceof ArbitraryCase,
-                "Unknown esi instance. Passed %s. Needed ArbitraryCase.", esiCase.getClass());
-        body.writeBytes(((ArbitraryCase) esiCase).getArbitrary().getArbitrary());
+    public ByteBuf serializeBody(final Esi esiCase, final ByteBuf body) {
+        checkArgument(esiCase instanceof ArbitraryCase, "Unknown esi instance. Passed %s. Needed ArbitraryCase.",
+            esiCase);
+        return body.writeBytes(((ArbitraryCase) esiCase).getArbitrary().getArbitrary());
     }
 
     @Override
@@ -40,7 +40,6 @@ final class ArbitraryParser extends AbstractEsiType {
         return new ArbitraryCaseBuilder().setArbitrary(extractArbitrary(esi)).build();
     }
 
-
     @Override
     public Esi parseEsi(final ByteBuf body) {
         return new ArbitraryCaseBuilder().setArbitrary(new ArbitraryBuilder()
index d4a913dd5e493975bdf5a8413f592d05d3bd6e6c..4ee4b0477118e093ecfd843a76e9b8afbee28362 100644 (file)
@@ -5,13 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractLacpMac;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractPK;
 
-import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.protocol.util.ByteBufWriteUtil;
@@ -27,13 +26,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 final class LacpParser extends AbstractEsiType {
 
     @Override
-    public void serializeBody(final Esi esi, final ByteBuf body) {
-        Preconditions.checkArgument(esi instanceof LacpAutoGeneratedCase,
-                "Unknown esi instance. Passed %s. Needed LacpAutoGeneratedCase.", esi.getClass());
+    public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
+        checkArgument(esi instanceof LacpAutoGeneratedCase,
+            "Unknown esi instance. Passed %s. Needed LacpAutoGeneratedCase.", esi);
         final LacpAutoGenerated lacp = ((LacpAutoGeneratedCase) esi).getLacpAutoGenerated();
         body.writeBytes(IetfYangUtil.INSTANCE.bytesFor(lacp.getCeLacpMacAddress()));
         ByteBufWriteUtil.writeUnsignedShort(lacp.getCeLacpPortKey(), body);
-        body.writeZero(ZERO_BYTE);
+        return body.writeZero(ZERO_BYTE);
     }
 
     @Override
@@ -43,19 +42,22 @@ final class LacpParser extends AbstractEsiType {
 
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
-        final LacpAutoGeneratedBuilder builder = new LacpAutoGeneratedBuilder();
-        builder.setCeLacpMacAddress(extractLacpMac(esi));
-        builder.setCeLacpPortKey(extractPK(esi));
-        return new LacpAutoGeneratedCaseBuilder().setLacpAutoGenerated(builder.build()).build();
-
+        return new LacpAutoGeneratedCaseBuilder()
+                .setLacpAutoGenerated(new LacpAutoGeneratedBuilder()
+                    .setCeLacpMacAddress(extractLacpMac(esi))
+                    .setCeLacpPortKey(extractPK(esi))
+                    .build())
+                .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
-        final LacpAutoGenerated t1 = new LacpAutoGeneratedBuilder()
-            .setCeLacpMacAddress(IetfYangUtil.INSTANCE.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
-            .setCeLacpPortKey(buffer.readUnsignedShort())
-            .build();
-        return new LacpAutoGeneratedCaseBuilder().setLacpAutoGenerated(t1).build();
+        return new LacpAutoGeneratedCaseBuilder()
+                .setLacpAutoGenerated(new LacpAutoGeneratedBuilder()
+                    .setCeLacpMacAddress(IetfYangUtil.INSTANCE.macAddressFor(
+                        ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                    .setCeLacpPortKey(buffer.readUnsignedShort())
+                    .build())
+                .build();
     }
 }
index 7fed066db6ca88547ddf37fd643dcef479fbb889..6f1d3b41d1bed47171ce6462574e300b6a118d44 100644 (file)
@@ -5,13 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractBP;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractBrigeMac;
 
-import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.protocol.util.ByteBufWriteUtil;
@@ -27,13 +26,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 final class LanParser extends AbstractEsiType {
 
     @Override
-    public void serializeBody(final Esi esi, final ByteBuf body) {
-        Preconditions.checkArgument(esi instanceof LanAutoGeneratedCase,
-                "Unknown esi instance. Passed %s. Needed LanAutoGeneratedCase.", esi.getClass());
+    public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
+        checkArgument(esi instanceof LanAutoGeneratedCase,
+            "Unknown esi instance. Passed %s. Needed LanAutoGeneratedCase.", esi);
         final LanAutoGenerated lan = ((LanAutoGeneratedCase) esi).getLanAutoGenerated();
         body.writeBytes(IetfYangUtil.INSTANCE.bytesFor(lan.getRootBridgeMacAddress()));
         ByteBufWriteUtil.writeUnsignedShort(lan.getRootBridgePriority(), body);
-        body.writeZero(ZERO_BYTE);
+        return body.writeZero(ZERO_BYTE);
     }
 
     @Override
@@ -43,18 +42,22 @@ final class LanParser extends AbstractEsiType {
 
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
-        final LanAutoGeneratedBuilder lanBuilder = new LanAutoGeneratedBuilder();
-        lanBuilder.setRootBridgeMacAddress(extractBrigeMac(esi));
-        lanBuilder.setRootBridgePriority(extractBP(esi));
-        return new LanAutoGeneratedCaseBuilder().setLanAutoGenerated(lanBuilder.build()).build();
+        return new LanAutoGeneratedCaseBuilder()
+                .setLanAutoGenerated(new LanAutoGeneratedBuilder()
+                    .setRootBridgeMacAddress(extractBrigeMac(esi))
+                    .setRootBridgePriority(extractBP(esi))
+                    .build())
+                .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
-        final LanAutoGenerated t2 = new LanAutoGeneratedBuilder()
-            .setRootBridgeMacAddress(IetfYangUtil.INSTANCE
-                    .macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
-            .setRootBridgePriority(buffer.readUnsignedShort()).build();
-        return new LanAutoGeneratedCaseBuilder().setLanAutoGenerated(t2).build();
+        return new LanAutoGeneratedCaseBuilder()
+                .setLanAutoGenerated(new LanAutoGeneratedBuilder()
+                    .setRootBridgeMacAddress(IetfYangUtil.INSTANCE.macAddressFor(
+                        ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                    .setRootBridgePriority(buffer.readUnsignedShort())
+                    .build())
+                .build();
     }
 }
index 37cf2617c31420d6aba6e097c1380557758b0c14..e6135bd668bb4bcdfd2816e4b91562e3f3ad5b80 100644 (file)
@@ -28,12 +28,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 final class MacParser extends AbstractEsiType {
 
     @Override
-    public void serializeBody(final Esi esi, final ByteBuf body) {
+    public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
         Preconditions.checkArgument(esi instanceof MacAutoGeneratedCase,
                 "Unknown esi instance. Passed %s. Needed MacAutoGeneratedCase.", esi.getClass());
         final MacAutoGenerated macAuto = ((MacAutoGeneratedCase) esi).getMacAutoGenerated();
         body.writeBytes(IetfYangUtil.INSTANCE.bytesFor(macAuto.getSystemMacAddress()));
         ByteBufWriteUtil.writeMedium(macAuto.getLocalDiscriminator().getValue().intValue(), body);
+        return body;
     }
 
     @Override
@@ -43,18 +44,22 @@ final class MacParser extends AbstractEsiType {
 
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
-        final MacAutoGeneratedBuilder builder = new MacAutoGeneratedBuilder();
-        builder.setSystemMacAddress(extractSystmeMac(esi));
-        builder.setLocalDiscriminator(extractUint24LD(esi));
-        return new MacAutoGeneratedCaseBuilder().setMacAutoGenerated(builder.build()).build();
+        return new MacAutoGeneratedCaseBuilder()
+                .setMacAutoGenerated(new MacAutoGeneratedBuilder()
+                    .setSystemMacAddress(extractSystmeMac(esi))
+                    .setLocalDiscriminator(extractUint24LD(esi))
+                    .build())
+                .build();
     }
 
-
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
-        final MacAutoGenerated t3 = new MacAutoGeneratedBuilder()
-            .setSystemMacAddress(IetfYangUtil.INSTANCE.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
-            .setLocalDiscriminator(new Uint24(Long.valueOf(buffer.readUnsignedMedium()))).build();
-        return new MacAutoGeneratedCaseBuilder().setMacAutoGenerated(t3).build();
+        return new MacAutoGeneratedCaseBuilder()
+                .setMacAutoGenerated(new MacAutoGeneratedBuilder()
+                    .setSystemMacAddress(IetfYangUtil.INSTANCE.macAddressFor(
+                        ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                    .setLocalDiscriminator(new Uint24(Long.valueOf(buffer.readUnsignedMedium())))
+                    .build())
+                .build();
     }
 }
index dacd52a4811e2fb44fa37f131f41a67b87bdf5e8..81d021b6b9be65dfcfa2f90fa6c5b13ce376541d 100644 (file)
@@ -5,13 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractLD;
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractRD;
 
-import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.util.ByteBufWriteUtil;
 import org.opendaylight.protocol.util.Ipv4Util;
@@ -26,13 +25,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 final class RouterIdParser extends AbstractEsiType {
 
     @Override
-    public void serializeBody(final Esi esi, final ByteBuf body) {
-        Preconditions.checkArgument(esi instanceof RouterIdGeneratedCase,
-                "Unknown esi instance. Passed %s. Needed RouterIdGeneratedCase.", esi.getClass());
+    public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
+        checkArgument(esi instanceof RouterIdGeneratedCase,
+            "Unknown esi instance. Passed %s. Needed RouterIdGeneratedCase.", esi);
         final RouterIdGenerated routerID = ((RouterIdGeneratedCase) esi).getRouterIdGenerated();
         ByteBufWriteUtil.writeIpv4Address(routerID.getRouterId(), body);
         ByteBufWriteUtil.writeUnsignedInt(routerID.getLocalDiscriminator(), body);
-        body.writeZero(ZERO_BYTE);
+        return body.writeZero(ZERO_BYTE);
     }
 
     @Override
@@ -42,17 +41,21 @@ final class RouterIdParser extends AbstractEsiType {
 
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
-        final RouterIdGeneratedBuilder builder = new RouterIdGeneratedBuilder();
-        builder.setLocalDiscriminator(extractLD(esi));
-        builder.setRouterId(extractRD(esi));
-        return new RouterIdGeneratedCaseBuilder().setRouterIdGenerated(builder.build()).build();
+        return new RouterIdGeneratedCaseBuilder()
+                .setRouterIdGenerated(new RouterIdGeneratedBuilder()
+                    .setLocalDiscriminator(extractLD(esi))
+                    .setRouterId(extractRD(esi))
+                    .build())
+                .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
-        final RouterIdGenerated routerID = new RouterIdGeneratedBuilder()
-                .setRouterId(Ipv4Util.addressForByteBuf(buffer))
-            .setLocalDiscriminator(buffer.readUnsignedInt()).build();
-        return new RouterIdGeneratedCaseBuilder().setRouterIdGenerated(routerID).build();
+        return new RouterIdGeneratedCaseBuilder()
+                .setRouterIdGenerated(new RouterIdGeneratedBuilder()
+                    .setRouterId(Ipv4Util.addressForByteBuf(buffer))
+                    .setLocalDiscriminator(buffer.readUnsignedInt())
+                    .build())
+                .build();
     }
 }