Wire SimpleEvpnNlriRegistry statically 79/93779/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 11 Nov 2020 11:17:47 +0000 (12:17 +0100)
committerRobert Varga <nite@hq.sk>
Wed, 11 Nov 2020 14:51:25 +0000 (14:51 +0000)
This registry is populated with invariants and is an implementation
detail. Move it to impl.nlri and make it self-populated on creation.

This will allow us to optimize it further.

Change-Id: Ic55a38eb735fd83ebf0c9712b493deb72f59bff2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/BGPActivator.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/EvpnNlriParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/NlriActivator.java [deleted file]
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/SimpleEvpnNlriRegistry.java [moved from bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/spi/pojo/SimpleEvpnNlriRegistry.java with 58% similarity]
bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/EthADRParserTest.java
bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/EvpnNlriAttributesParserTest.java
bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/EvpnNlriParserTest.java
bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/SimpleEvpnNlriRegistryTest.java [moved from bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/spi/pojo/SimpleEvpnNlriRegistryTest.java with 94% similarity]

index c7a8326446471fd5ed9eb10d3c4d029053cd60a6..4151197855d02bf5edb2f19ae61977af2b6adde8 100644 (file)
@@ -20,7 +20,6 @@ import org.opendaylight.protocol.bgp.evpn.impl.extended.communities.ESImpRouteTa
 import org.opendaylight.protocol.bgp.evpn.impl.extended.communities.Layer2AttributesExtCom;
 import org.opendaylight.protocol.bgp.evpn.impl.extended.communities.MACMobExtCom;
 import org.opendaylight.protocol.bgp.evpn.impl.nlri.EvpnNlriParser;
-import org.opendaylight.protocol.bgp.evpn.impl.nlri.NlriActivator;
 import org.opendaylight.protocol.bgp.parser.spi.AbstractBGPExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
@@ -61,7 +60,6 @@ public final class BGPActivator extends AbstractBGPExtensionProviderActivator {
         regs.add(context.registerAddressFamily(L2vpnAddressFamily.class, L2VPN_AFI));
 
         registerNlriHandler(context, regs);
-        NlriActivator.registerNlriParsers(regs);
         registerExtendedCommunities(context, regs);
         ESIActivator.registerEsiTypeParsers(regs);
 
index 71eb3f1a73cd4b56f5c686fc12d101a874c929a4..0fdbe3ce4ae1f261cf85713ed2130190fca29932 100644 (file)
@@ -17,7 +17,6 @@ import java.util.ArrayList;
 import java.util.List;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.protocol.bgp.evpn.spi.EvpnRegistry;
-import org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistry;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.parser.spi.MultiPathSupportUtil;
diff --git a/bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/NlriActivator.java b/bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/NlriActivator.java
deleted file mode 100644 (file)
index 8ca5e75..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * 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.nlri;
-
-import java.util.List;
-import org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.es.route.EsRoute;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.ethernet.a.d.route.EthernetADRoute;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.EsRouteCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.EthernetADRouteCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.IncMultiEthernetTagResCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.MacIpAdvRouteCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.inc.multi.ethernet.tag.res.IncMultiEthernetTagRes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.mac.ip.adv.route.MacIpAdvRoute;
-import org.opendaylight.yangtools.concepts.Registration;
-
-public final class NlriActivator {
-    private NlriActivator() {
-        // Hidden on purpose
-    }
-
-    public static void registerNlriParsers(final List<Registration> regs) {
-        final SimpleEvpnNlriRegistry evpnNlriRegistry = SimpleEvpnNlriRegistry.getInstance();
-
-        final EthADRParser ethADR = new EthADRParser();
-        regs.add(evpnNlriRegistry.registerNlriParser(ethADR.getType(), ethADR));
-        regs.add(evpnNlriRegistry.registerNlriSerializer(EthernetADRouteCase.class, ethADR));
-        regs.add(evpnNlriRegistry.registerNlriModelSerializer(EthernetADRoute.QNAME, ethADR));
-
-        final MACIpAdvRParser macIpAR = new MACIpAdvRParser();
-        regs.add(evpnNlriRegistry.registerNlriParser(macIpAR.getType(), macIpAR));
-        regs.add(evpnNlriRegistry.registerNlriSerializer(MacIpAdvRouteCase.class, macIpAR));
-        regs.add(evpnNlriRegistry.registerNlriModelSerializer(MacIpAdvRoute.QNAME, macIpAR));
-
-        final IncMultEthTagRParser incMultETR = new IncMultEthTagRParser();
-        regs.add(evpnNlriRegistry.registerNlriParser(incMultETR.getType(), incMultETR));
-        regs.add(evpnNlriRegistry.registerNlriSerializer(IncMultiEthernetTagResCase.class, incMultETR));
-        regs.add(evpnNlriRegistry.registerNlriModelSerializer(IncMultiEthernetTagRes.QNAME, incMultETR));
-
-        final EthSegRParser ethSR = new EthSegRParser();
-        regs.add(evpnNlriRegistry.registerNlriParser(ethSR.getType(), ethSR));
-        regs.add(evpnNlriRegistry.registerNlriSerializer(EsRouteCase.class, ethSR));
-        regs.add(evpnNlriRegistry.registerNlriModelSerializer(EsRoute.QNAME, ethSR));
-    }
-}
similarity index 58%
rename from bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/spi/pojo/SimpleEvpnNlriRegistry.java
rename to bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/SimpleEvpnNlriRegistry.java
index 77099752d9bea5576e3a8a6d564414e907be22ff..c5a04e13b8000164afab8875f26e4cb3682a0bc5 100644 (file)
@@ -5,7 +5,7 @@
  * 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.spi.pojo;
+package org.opendaylight.protocol.bgp.evpn.impl.nlri;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
@@ -13,14 +13,22 @@ import com.google.common.collect.Iterables;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import io.netty.buffer.ByteBuf;
 import java.util.Collection;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.protocol.bgp.evpn.spi.EvpnParser;
 import org.opendaylight.protocol.bgp.evpn.spi.EvpnRegistry;
 import org.opendaylight.protocol.bgp.evpn.spi.EvpnSerializer;
 import org.opendaylight.protocol.concepts.HandlerRegistry;
 import org.opendaylight.protocol.concepts.MultiRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.NlriType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.es.route.EsRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.ethernet.a.d.route.EthernetADRoute;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.EvpnChoice;
-import org.opendaylight.yangtools.concepts.Registration;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.EsRouteCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.EthernetADRouteCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.IncMultiEthernetTagResCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.evpn.choice.MacIpAdvRouteCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.inc.multi.ethernet.tag.res.IncMultiEthernetTagRes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.mac.ip.adv.route.MacIpAdvRoute;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -30,33 +38,48 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 
 public final class SimpleEvpnNlriRegistry implements EvpnRegistry {
-    private static final SimpleEvpnNlriRegistry SINGLETON = new SimpleEvpnNlriRegistry();
+    @FunctionalInterface
+    private interface SerializerInterface {
+        EvpnChoice check(EvpnSerializer serializer, ContainerNode cont);
+    }
+
+    private static final @NonNull SimpleEvpnNlriRegistry INSTANCE = new SimpleEvpnNlriRegistry();
+
     private final HandlerRegistry<DataContainer, EvpnParser, EvpnSerializer> handlers = new HandlerRegistry<>();
     private final MultiRegistry<NodeIdentifier, EvpnSerializer> modelHandlers = new MultiRegistry<>();
 
     private SimpleEvpnNlriRegistry() {
-    }
+        final EthADRParser ethADR = new EthADRParser();
+        registerNlriParser(ethADR.getType(), ethADR);
+        handlers.registerSerializer(EthernetADRouteCase.class, ethADR);
+        registerNlriModelSerializer(EthernetADRoute.QNAME, ethADR);
 
-    @FunctionalInterface
-    private interface SerializerInterface {
-        EvpnChoice check(EvpnSerializer serializer, ContainerNode cont);
-    }
+        final MACIpAdvRParser macIpAR = new MACIpAdvRParser();
+        registerNlriParser(macIpAR.getType(), macIpAR);
+        handlers.registerSerializer(MacIpAdvRouteCase.class, macIpAR);
+        registerNlriModelSerializer(MacIpAdvRoute.QNAME, macIpAR);
+
+        final IncMultEthTagRParser incMultETR = new IncMultEthTagRParser();
+        registerNlriParser(incMultETR.getType(), incMultETR);
+        handlers.registerSerializer(IncMultiEthernetTagResCase.class, incMultETR);
+        registerNlriModelSerializer(IncMultiEthernetTagRes.QNAME, incMultETR);
 
-    public static SimpleEvpnNlriRegistry getInstance() {
-        return SINGLETON;
+        final EthSegRParser ethSR = new EthSegRParser();
+        registerNlriParser(ethSR.getType(), ethSR);
+        handlers.registerSerializer(EsRouteCase.class, ethSR);
+        registerNlriModelSerializer(EsRoute.QNAME, ethSR);
     }
 
-    public Registration registerNlriParser(final NlriType esiType, final EvpnParser parser) {
-        return this.handlers.registerParser(esiType.getIntValue(), parser);
+    public static @NonNull SimpleEvpnNlriRegistry getInstance() {
+        return INSTANCE;
     }
 
-    public Registration registerNlriSerializer(final Class<? extends EvpnChoice> evpnClass,
-            final EvpnSerializer serializer) {
-        return this.handlers.registerSerializer(evpnClass, serializer);
+    private void registerNlriParser(final NlriType esiType, final EvpnParser parser) {
+        handlers.registerParser(esiType.getIntValue(), parser);
     }
 
-    public Registration registerNlriModelSerializer(final QName qname, final EvpnSerializer serializer) {
-        return this.modelHandlers.register(new NodeIdentifier(qname), serializer);
+    private void registerNlriModelSerializer(final QName qname, final EvpnSerializer serializer) {
+        modelHandlers.register(NodeIdentifier.create(qname), serializer);
     }
 
     @Override
index b06719d43e5a383fe146e0b91dd34b9ebc1fc193..9f747db9a8189fdfbe696f0a6c27047423c3545d 100644 (file)
@@ -17,7 +17,7 @@ import static org.opendaylight.protocol.bgp.evpn.impl.EvpnTestUtil.createValueBu
 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.LanParserTest.LAN_AUT_GEN_CASE;
 import static org.opendaylight.protocol.bgp.evpn.impl.nlri.MACIpAdvRParserTest.createEti;
 import static org.opendaylight.protocol.bgp.evpn.impl.nlri.NlriModelUtil.MPLS_NID;
-import static org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistryTest.EVPN_NID;
+import static org.opendaylight.protocol.bgp.evpn.impl.nlri.SimpleEvpnNlriRegistryTest.EVPN_NID;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
index 3292b6082c2d33b8f00ca3c3a9f8173903fe376a..ed2db167107df33269c5b4ef93553ac834eaef25 100644 (file)
@@ -41,7 +41,6 @@ public class EvpnNlriAttributesParserTest {
     @Before
     public void setUp() {
         ESIActivator.registerEsiTypeParsers(new ArrayList<>());
-        NlriActivator.registerNlriParsers(new ArrayList<>());
         this.parser = new EvpnNlriParser();
     }
 
index a02598f9c46def9f9a4ba7e7d1ee94cad3854aed..f718c63a52ce2e106fa28d865add06ae044406b2 100644 (file)
@@ -13,7 +13,7 @@ import static org.opendaylight.protocol.bgp.evpn.impl.EvpnTestUtil.RD;
 import static org.opendaylight.protocol.bgp.evpn.impl.EvpnTestUtil.RD_MODEL;
 import static org.opendaylight.protocol.bgp.evpn.impl.EvpnTestUtil.createValueBuilder;
 import static org.opendaylight.protocol.bgp.evpn.impl.nlri.NlriModelUtil.RD_NID;
-import static org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistryTest.EVPN_NID;
+import static org.opendaylight.protocol.bgp.evpn.impl.nlri.SimpleEvpnNlriRegistryTest.EVPN_NID;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
@@ -60,7 +60,6 @@ public class EvpnNlriParserTest {
     @Before
     public void setUp() {
         ESIActivator.registerEsiTypeParsers(new ArrayList<>());
-        NlriActivator.registerNlriParsers(new ArrayList<>());
         this.dest = Collections.singletonList(new EvpnDestinationBuilder()
                 .setRouteDistinguisher(RD)
                 .setEvpnChoice(IncMultEthTagRParserTest.createIncMultiCase()).build());
similarity index 94%
rename from bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/spi/pojo/SimpleEvpnNlriRegistryTest.java
rename to bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/SimpleEvpnNlriRegistryTest.java
index c7fce0139bfeb23520f4f3ce4649f9c7d79a34c3..5f519a289bc124d14cea45aa1990f21515f9588b 100644 (file)
@@ -5,7 +5,7 @@
  * 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.spi.pojo;
+package org.opendaylight.protocol.bgp.evpn.impl.nlri;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
@@ -22,8 +22,6 @@ import java.util.ArrayList;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.protocol.bgp.evpn.impl.esi.types.ESIActivator;
-import org.opendaylight.protocol.bgp.evpn.impl.nlri.EthADRParserTest;
-import org.opendaylight.protocol.bgp.evpn.impl.nlri.NlriActivator;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.Evpn;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.NlriType;
@@ -49,7 +47,6 @@ public final class SimpleEvpnNlriRegistryTest {
     public void setUp() {
         final ArrayList<Registration> reg = new ArrayList<>();
         ESIActivator.registerEsiTypeParsers(reg);
-        NlriActivator.registerNlriParsers(reg);
     }
 
     @Test