Refactor SimpleMvpnNlriRegistry 82/93782/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 11 Nov 2020 14:01:10 +0000 (15:01 +0100)
committerRobert Varga <nite@hq.sk>
Thu, 12 Nov 2020 23:29:31 +0000 (23:29 +0000)
This is an internal implementation singleton, populate it statically,
cutting some complexity.

Change-Id: Ie4d30e68c009319226c6adb2a22dd359b5d85a05
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/BGPActivator.java
bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/NlriActivator.java [deleted file]
bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/spi/pojo/nlri/SimpleMvpnNlriRegistry.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv4RIBSupportTest.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv6RIBSupportTest.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/nlri/LeafADHandlerTest.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/spi/pojo/nlri/SimpleMvpnNlriRegistryTest.java

index 0bd1061d2136e2102ef1f5694166187c6c09c7b1..44b7e8108f0bdd4607cb41befe8974dcfc50b995 100644 (file)
@@ -88,7 +88,6 @@ public final class BGPActivator extends AbstractBGPExtensionProviderActivator {
         registerAfiSafi(context, regs);
         registerNlri(context, regs);
         registerAttributesHandler(context, regs);
-        NlriActivator.registerNlriParsers(regs);
         return regs;
     }
 }
diff --git a/bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/NlriActivator.java b/bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/NlriActivator.java
deleted file mode 100644 (file)
index 91e335b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2018 AT&T Intellectual Property. 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.mvpn.impl;
-
-import java.util.List;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.InterASIPmsiADHandler;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.IntraAsIPmsiADHandler;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.LeafADHandler;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SPmsiADHandler;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SharedTreeJoinHandler;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SourceActiveADHandler;
-import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SourceTreeJoinHandler;
-import org.opendaylight.protocol.bgp.mvpn.spi.pojo.nlri.SimpleMvpnNlriRegistry;
-import org.opendaylight.yangtools.concepts.Registration;
-
-/**
- * Nlri Registry activator.
- *
- * @author Claudio D. Gasparini
- */
-public final class NlriActivator {
-    private NlriActivator() {
-        // Hidden on purpose
-    }
-
-    public static void registerNlriParsers(final List<Registration> regs) {
-        final SimpleMvpnNlriRegistry nlriRegistry = SimpleMvpnNlriRegistry.getInstance();
-
-        final IntraAsIPmsiADHandler intra = new IntraAsIPmsiADHandler();
-        regs.add(nlriRegistry.registerNlriParser(intra));
-        regs.add(nlriRegistry.registerNlriSerializer(intra));
-
-        final InterASIPmsiADHandler inter = new InterASIPmsiADHandler();
-        regs.add(nlriRegistry.registerNlriParser(inter));
-        regs.add(nlriRegistry.registerNlriSerializer(inter));
-
-        final SPmsiADHandler sPmsiADHandler = new SPmsiADHandler();
-        regs.add(nlriRegistry.registerNlriParser(sPmsiADHandler));
-        regs.add(nlriRegistry.registerNlriSerializer(sPmsiADHandler));
-
-        final LeafADHandler leafHandler = new LeafADHandler();
-        regs.add(nlriRegistry.registerNlriParser(leafHandler));
-        regs.add(nlriRegistry.registerNlriSerializer(leafHandler));
-
-        final SourceActiveADHandler activeADHandler = new SourceActiveADHandler();
-        regs.add(nlriRegistry.registerNlriParser(activeADHandler));
-        regs.add(nlriRegistry.registerNlriSerializer(activeADHandler));
-
-        final SharedTreeJoinHandler sharedTreeJoinHandler = new SharedTreeJoinHandler();
-        regs.add(nlriRegistry.registerNlriParser(sharedTreeJoinHandler));
-        regs.add(nlriRegistry.registerNlriSerializer(sharedTreeJoinHandler));
-
-        final SourceTreeJoinHandler sourceTreeJoinHandler = new SourceTreeJoinHandler();
-        regs.add(nlriRegistry.registerNlriParser(sourceTreeJoinHandler));
-        regs.add(nlriRegistry.registerNlriSerializer(sourceTreeJoinHandler));
-    }
-}
index 3835312fdfb267c7909a04ddc097aebff25f7c47..c52c732fb6a680c57ddef12dd85ec35aeeb15e93 100644 (file)
@@ -12,13 +12,20 @@ import static com.google.common.base.Preconditions.checkArgument;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.InterASIPmsiADHandler;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.IntraAsIPmsiADHandler;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.LeafADHandler;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SPmsiADHandler;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SharedTreeJoinHandler;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SourceActiveADHandler;
+import org.opendaylight.protocol.bgp.mvpn.impl.nlri.SourceTreeJoinHandler;
 import org.opendaylight.protocol.bgp.mvpn.spi.nlri.MvpnParser;
 import org.opendaylight.protocol.bgp.mvpn.spi.nlri.MvpnRegistry;
 import org.opendaylight.protocol.bgp.mvpn.spi.nlri.MvpnSerializer;
 import org.opendaylight.protocol.concepts.HandlerRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.NlriType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.mvpn.MvpnChoice;
-import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
 
 /**
@@ -27,36 +34,63 @@ import org.opendaylight.yangtools.yang.binding.DataContainer;
  * @author Claudio D. Gasparini
  */
 public final class SimpleMvpnNlriRegistry implements MvpnRegistry {
-    private static final SimpleMvpnNlriRegistry SINGLETON = new SimpleMvpnNlriRegistry();
+    private static final @NonNull SimpleMvpnNlriRegistry INSTANCE = new SimpleMvpnNlriRegistry();
+
     private final HandlerRegistry<DataContainer, MvpnParser, MvpnSerializer> handlers = new HandlerRegistry<>();
 
     private SimpleMvpnNlriRegistry() {
+        final IntraAsIPmsiADHandler intra = new IntraAsIPmsiADHandler();
+        registerNlriParser(intra);
+        registerNlriSerializer(intra);
+
+        final InterASIPmsiADHandler inter = new InterASIPmsiADHandler();
+        registerNlriParser(inter);
+        registerNlriSerializer(inter);
+
+        final SPmsiADHandler sPmsiADHandler = new SPmsiADHandler();
+        registerNlriParser(sPmsiADHandler);
+        registerNlriSerializer(sPmsiADHandler);
+
+        final LeafADHandler leafHandler = new LeafADHandler();
+        registerNlriParser(leafHandler);
+        registerNlriSerializer(leafHandler);
+
+        final SourceActiveADHandler activeADHandler = new SourceActiveADHandler();
+        registerNlriParser(activeADHandler);
+        registerNlriSerializer(activeADHandler);
+
+        final SharedTreeJoinHandler sharedTreeJoinHandler = new SharedTreeJoinHandler();
+        registerNlriParser(sharedTreeJoinHandler);
+        registerNlriSerializer(sharedTreeJoinHandler);
+
+        final SourceTreeJoinHandler sourceTreeJoinHandler = new SourceTreeJoinHandler();
+        registerNlriParser(sourceTreeJoinHandler);
+        registerNlriSerializer(sourceTreeJoinHandler);
     }
 
-    public static SimpleMvpnNlriRegistry getInstance() {
-        return SINGLETON;
+    public static @NonNull SimpleMvpnNlriRegistry getInstance() {
+        return INSTANCE;
     }
 
-    public <T extends MvpnChoice> Registration registerNlriParser(final MvpnParser<T> parser) {
-        return this.handlers.registerParser(parser.getType(), parser);
+    private <T extends MvpnChoice> void registerNlriParser(final MvpnParser<T> parser) {
+        handlers.registerParser(parser.getType(), parser);
     }
 
-    public <T extends MvpnChoice> Registration registerNlriSerializer(
-            final MvpnSerializer<T> serializer) {
-        return this.handlers.registerSerializer(serializer.getClazz(), serializer);
+    private <T extends MvpnChoice> void registerNlriSerializer(final MvpnSerializer<T> serializer) {
+        handlers.registerSerializer(serializer.getClazz(), serializer);
     }
 
     @Override
     @SuppressFBWarnings(value = "NP_NONNULL_RETURN_VIOLATION", justification = "SB does not grok TYPE_USE")
     public MvpnChoice parseMvpn(final NlriType type, final ByteBuf nlriBuf) {
         checkArgument(nlriBuf != null && nlriBuf.isReadable(), "Array of bytes is mandatory. Can't be null or empty.");
-        final MvpnParser<MvpnChoice> parser = this.handlers.getParser(type.getIntValue());
+        final MvpnParser<MvpnChoice> parser = handlers.getParser(type.getIntValue());
         return parser == null ? null : parser.parseMvpn(nlriBuf);
     }
 
     @Override
     public ByteBuf serializeMvpn(final MvpnChoice mvpn) {
-        final MvpnSerializer<MvpnChoice> serializer = this.handlers.getSerializer(mvpn.implementedInterface());
+        final MvpnSerializer<MvpnChoice> serializer = handlers.getSerializer(mvpn.implementedInterface());
         return serializer == null ? Unpooled.EMPTY_BUFFER : serializer.serializeMvpn(mvpn);
     }
 }
index 8dd042151249d95013d2e05b072aac587a57ad93..a374c03bbbaa147ef63b5caceebacf1154e26520 100644 (file)
@@ -13,7 +13,6 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.ImmutableSet;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
@@ -94,7 +93,6 @@ public class MvpnIpv4RIBSupportTest extends AbstractRIBSupportTest<MvpnRoutesIpv
         super.setUp();
         this.ribSupport = new MvpnIpv4RIBSupport(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
-        NlriActivator.registerNlriParsers(new ArrayList<>());
     }
 
     @Test
index a89962f7b3c5d10998e052bee0ce322165e9467c..94ad9a8e3b6385f95149b84739af1091eb378db6 100644 (file)
@@ -13,7 +13,6 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.ImmutableSet;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
@@ -92,7 +91,6 @@ public final class MvpnIpv6RIBSupportTest extends AbstractRIBSupportTest<MvpnRou
         super.setUp();
         this.ribSupport = new MvpnIpv6RIBSupport(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
-        NlriActivator.registerNlriParsers(new ArrayList<>());
     }
 
     @Test
index 868f2b5da2ad57ed696158a2e20319642db9e1a6..3b21435df39fa49fd21418d9539caa93bd51980c 100644 (file)
@@ -11,10 +11,7 @@ import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
 import io.netty.buffer.Unpooled;
-import java.util.ArrayList;
-import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.protocol.bgp.mvpn.impl.NlriActivator;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
@@ -58,11 +55,6 @@ public class LeafADHandlerTest {
             .build();
     private final LeafADHandler handler = new LeafADHandler();
 
-    @Before
-    public void setUp() {
-        NlriActivator.registerNlriParsers(new ArrayList<>());
-    }
-
     @Test
     public void testParser() {
         assertEquals(this.expected, this.handler.parseMvpn(Unpooled.copiedBuffer(LEAF_AD)));
index 30ee012d4554483c099dfb7a241a2d4c94f03a7f..b64172d62d0f5e2fa4ca4d6433555a0c246c493b 100644 (file)
@@ -5,26 +5,17 @@
  * 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.mvpn.spi.pojo.nlri;
 
 import static org.junit.Assert.assertEquals;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import java.util.ArrayList;
-import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.protocol.bgp.mvpn.impl.NlriActivator;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.NlriType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.mvpn.MvpnChoice;
 
 public final class SimpleMvpnNlriRegistryTest {
-    @Before
-    public void setUp() {
-        NlriActivator.registerNlriParsers(new ArrayList<>());
-    }
-
     @Test(expected = IllegalArgumentException.class)
     public void registryParseTest() {
         SimpleMvpnNlriRegistry.getInstance().parseMvpn(NlriType.InterAsIPmsiAD, null);