Remove ServiceLoaderPCEPExtensionProviderContext 29/96729/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 30 Jun 2021 11:18:36 +0000 (13:18 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 30 Jun 2021 12:36:12 +0000 (14:36 +0200)
We have DefaultPCEPExtensionConsumerContext which serves the activation
purposes without having global state lurking in singletons. Remove
ServiceLoaderPCEPExtensionProviderContext and replace its use in tests.

Change-Id: Ib09c7f93ad00b4cfb2cc293c0fa65004749b1fab
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/ietf-stateful/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPObjectParserTest.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPDispatcherImplTest.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPParserTest.java
pcep/pcc-mock/src/main/java/org/opendaylight/protocol/pcep/pcc/mock/PCCsBuilder.java
pcep/pcc-mock/src/test/java/org/opendaylight/protocol/pcep/pcc/mock/PCCDispatcherImplTest.java
pcep/pcc-mock/src/test/java/org/opendaylight/protocol/pcep/pcc/mock/PCCMockCommon.java
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/ServiceLoaderPCEPExtensionProviderContext.java [deleted file]
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/SimplePCEPExtensionProviderContext.java
pcep/testtool/src/test/java/org/opendaylight/protocol/pcep/testtool/PCCMock.java

index 2aa9ea3a6eaf0e84fcd43941f4247d94d93e8cd6..962bb153b0fd007e302340da38c6193faa86c753 100644 (file)
@@ -23,7 +23,6 @@ import org.opendaylight.protocol.pcep.spi.ObjectHeaderImpl;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.TlvRegistry;
 import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
 import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
 import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator;
 import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsLspObjectParser;
@@ -70,24 +69,16 @@ import org.opendaylight.yangtools.yang.common.Uint64;
 import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class PCEPObjectParserTest {
-
-    private SimplePCEPExtensionProviderContext ctx;
-    private BaseParserExtensionActivator act;
-
-    private TlvRegistry tlvRegistry;
-    private VendorInformationTlvRegistry viTlvRegistry;
-
     private static final Uint64 DB_VERSION = Uint64.valueOf("0102030405060708", 16);
     private static final byte[] SPEAKER_ID = {0x01, 0x02, 0x03, 0x04};
 
+    private final SimplePCEPExtensionProviderContext ctx = new SimplePCEPExtensionProviderContext();
+    private final TlvRegistry tlvRegistry = ctx.getTlvHandlerRegistry();
+    private final VendorInformationTlvRegistry viTlvRegistry = ctx.getVendorInformationTlvRegistry();
+
     @Before
     public void setUp() {
-        this.ctx = new SimplePCEPExtensionProviderContext();
-        this.act = new BaseParserExtensionActivator();
-        this.act.start(this.ctx);
-        this.tlvRegistry = ServiceLoaderPCEPExtensionProviderContext.create().getTlvHandlerRegistry();
-        this.viTlvRegistry = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()
-                .getVendorInformationTlvRegistry();
+        new BaseParserExtensionActivator().start(this.ctx);
     }
 
     @Test
@@ -172,6 +163,8 @@ public class PCEPObjectParserTest {
 
     @Test
     public void testStatefulLspObjectWithTlv() throws IOException, PCEPDeserializerException {
+        new StatefulActivator().start(ctx);
+
         final StatefulLspObjectParser parser = new StatefulLspObjectParser(this.tlvRegistry, this.viTlvRegistry);
         final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes(
             "src/test/resources/PCEPLspObject2WithTLV.bin"));
index 7519838a3bcfd5be219843a0c18b94ede7013c84..4716bdde720d808cbe42ad10af2d2e73b354415a 100644 (file)
@@ -5,13 +5,14 @@
  * 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.pcep.impl;
 
 import static java.util.Objects.requireNonNull;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
 
 import io.netty.bootstrap.Bootstrap;
 import io.netty.channel.ChannelFuture;
@@ -28,26 +29,25 @@ import io.netty.util.concurrent.Future;
 import io.netty.util.concurrent.GlobalEventExecutor;
 import java.net.InetSocketAddress;
 import java.nio.channels.Channel;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.protocol.concepts.KeyMapping;
-import org.opendaylight.protocol.pcep.PCEPCapability;
 import org.opendaylight.protocol.pcep.PCEPDispatcherDependencies;
 import org.opendaylight.protocol.pcep.PCEPSessionListenerFactory;
 import org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory;
 import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.pojo.DefaultPCEPExtensionConsumerContext;
 import org.opendaylight.protocol.util.InetSocketAddressUtil;
 
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class PCEPDispatcherImplTest {
     private static final short DEAD_TIMER = 120;
     private static final short KEEP_ALIVE = 30;
@@ -68,18 +68,15 @@ public class PCEPDispatcherImplTest {
 
     @Before
     public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        final List<PCEPCapability> capList = new ArrayList<>();
         final PCEPSessionProposalFactory sessionProposal = new BasePCEPSessionProposalFactory(DEAD_TIMER, KEEP_ALIVE,
-                capList);
+                List.of());
         final EventLoopGroup eventLoopGroup;
         if (Epoll.isAvailable()) {
             eventLoopGroup = new EpollEventLoopGroup();
         } else {
             eventLoopGroup = new NioEventLoopGroup();
         }
-        final MessageRegistry msgReg = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()
-                .getMessageHandlerRegistry();
+        final MessageRegistry msgReg = new DefaultPCEPExtensionConsumerContext().getMessageHandlerRegistry();
         this.dispatcher = new PCEPDispatcherImpl(msgReg,
                 new DefaultPCEPSessionNegotiatorFactory(sessionProposal, 0),
                 eventLoopGroup, eventLoopGroup);
@@ -87,11 +84,10 @@ public class PCEPDispatcherImplTest {
         doReturn(KeyMapping.getKeyMapping()).when(this.dispatcherDependencies).getKeys();
         doReturn(null).when(this.dispatcherDependencies).getPeerProposal();
 
-        doReturn("mockChannel").when(this.mockChannel).toString();
         final PCEPDispatcherImpl dispatcher2 = new PCEPDispatcherImpl(msgReg,
                 new DefaultPCEPSessionNegotiatorFactory(sessionProposal, 0),
                 eventLoopGroup, eventLoopGroup);
-        this.disp2Spy = Mockito.spy(dispatcher2);
+        this.disp2Spy = spy(dispatcher2);
 
         this.pccMock = new PCCMock(new DefaultPCEPSessionNegotiatorFactory(sessionProposal, 0),
                 new PCEPHandlerFactory(msgReg));
@@ -189,12 +185,10 @@ public class PCEPDispatcherImplTest {
         keys.put(clientAddr2.getAddress(), "CLIENT2_ADDRESS".getBytes());
 
         doReturn(new InetSocketAddress("0.0.0.0", port)).when(this.dispatcherDependencies).getAddress();
-        doReturn(this.listenerFactory).when(this.dispatcherDependencies).getListenerFactory();
-        doReturn(new SimpleSessionListener()).when(this.listenerFactory).getSessionListener();
 
         final ChannelFuture futureChannel = this.disp2Spy.createServer(this.dispatcherDependencies);
         futureChannel.sync();
-        Mockito.verify(this.disp2Spy).createServerBootstrap(any(PCEPDispatcherImpl.ChannelPipelineInitializer.class));
+        verify(this.disp2Spy).createServerBootstrap(any(PCEPDispatcherImpl.ChannelPipelineInitializer.class));
     }
 
     @After
@@ -245,11 +239,11 @@ public class PCEPDispatcherImplTest {
             return p;
         }
 
-        @SuppressWarnings("checkstyle:EmptyBlock")
         private static void setChannelFactory(final Bootstrap bootstrap) {
             try {
                 bootstrap.channel(NioSocketChannel.class);
             } catch (final IllegalStateException ignored) {
+                // Ignored
             }
         }
 
index 6c9508f19c2a9dac9ed0f23c499a1a3544984cf5..d8574917be4ce92a8878a5031e42ab59d6400a42 100644 (file)
@@ -17,7 +17,7 @@ import java.util.ArrayList;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.pojo.DefaultPCEPExtensionConsumerContext;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev181109.Close;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev181109.Keepalive;
@@ -27,8 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 
 public class PCEPParserTest {
 
-    private final MessageRegistry registry =
-        ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance().getMessageHandlerRegistry();
+    private final MessageRegistry registry = new DefaultPCEPExtensionConsumerContext().getMessageHandlerRegistry();
 
     @Test
     public void testMessageToByteEncoding() {
index 4448915ae72abfb7383bf4403f14c5bb5b260542..c77ee37440317efdb3f1d539659ace605bb77171 100644 (file)
@@ -20,17 +20,14 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.protocol.concepts.KeyMapping;
 import org.opendaylight.protocol.pcep.PCEPCapability;
 import org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory;
-import org.opendaylight.protocol.pcep.ietf.initiated.InitiatedActivator;
-import org.opendaylight.protocol.pcep.ietf.stateful.StatefulActivator;
 import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.impl.DefaultPCEPSessionNegotiatorFactory;
 import org.opendaylight.protocol.pcep.impl.PCEPSessionImpl;
 import org.opendaylight.protocol.pcep.pcc.mock.api.PCCTunnelManager;
 import org.opendaylight.protocol.pcep.pcc.mock.protocol.PCCDispatcherImpl;
 import org.opendaylight.protocol.pcep.pcc.mock.protocol.PCCSessionListener;
-import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
-import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
+import org.opendaylight.protocol.pcep.spi.pojo.DefaultPCEPExtensionConsumerContext;
 import org.opendaylight.yangtools.yang.common.Uint64;
 
 final class PCCsBuilder {
@@ -47,6 +44,8 @@ final class PCCsBuilder {
     private final int stateTimeout;
     private final PCEPCapability pcepCapabilities;
     private final Timer timer = new HashedWheelTimer();
+    private final MessageRegistry registry;
+
     private PCCDispatcherImpl pccDispatcher;
 
     PCCsBuilder(final int lsps, final boolean pcError, final int pccCount,
@@ -65,13 +64,19 @@ final class PCCsBuilder {
         this.redelegationTimeout = redelegationTimeout;
         this.stateTimeout = stateTimeout;
         this.pcepCapabilities = pcepCapabilities;
-        startActivators();
+
+//        final PCEPExtensionProviderContext ctx = new SimplePCEPExtensionProviderContext();
+//        new PCCActivator().start(ctx);
+//        new StatefulActivator().start(ctx);
+//        new SyncOptimizationsActivator().start(ctx);
+//        new InitiatedActivator().start(ctx);
+
+        this.registry = new DefaultPCEPExtensionConsumerContext().getMessageHandlerRegistry();
     }
 
     void createPCCs(final Uint64 initialDBVersion, final Optional<TimerHandler> timerHandler) {
         InetAddress currentAddress = this.localAddress.getAddress();
-        this.pccDispatcher = new PCCDispatcherImpl(ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()
-                .getMessageHandlerRegistry());
+        this.pccDispatcher = new PCCDispatcherImpl(registry);
         if (timerHandler.isPresent()) {
             timerHandler.get().setPCCDispatcher(this.pccDispatcher);
         }
@@ -99,16 +104,4 @@ final class PCCsBuilder {
         return new DefaultPCEPSessionNegotiatorFactory(new BasePCEPSessionProposalFactory(this.deadTimer,
             this.keepAlive, capabilities), 0);
     }
-
-    private static void startActivators() {
-        final PCCActivator pccActivator = new PCCActivator();
-        final StatefulActivator stateful = new StatefulActivator();
-        final SyncOptimizationsActivator optimizationsActivator = new SyncOptimizationsActivator();
-        final InitiatedActivator activator = new InitiatedActivator();
-        final PCEPExtensionProviderContext ctx = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance();
-        pccActivator.start(ctx);
-        stateful.start(ctx);
-        optimizationsActivator.start(ctx);
-        activator.start(ctx);
-    }
 }
index 05824f2610e9bd0f8338167c51e97708c07c26aa..efd18c89b4f5483de41dc4b7021774374d6c1c44 100644 (file)
@@ -18,7 +18,6 @@ import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.util.concurrent.Future;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.TimeUnit;
 import org.junit.After;
 import org.junit.Assert;
@@ -27,7 +26,6 @@ import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.protocol.concepts.KeyMapping;
-import org.opendaylight.protocol.pcep.PCEPCapability;
 import org.opendaylight.protocol.pcep.PCEPDispatcher;
 import org.opendaylight.protocol.pcep.PCEPDispatcherDependencies;
 import org.opendaylight.protocol.pcep.PCEPSession;
@@ -36,14 +34,14 @@ import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.impl.DefaultPCEPSessionNegotiatorFactory;
 import org.opendaylight.protocol.pcep.impl.PCEPDispatcherImpl;
 import org.opendaylight.protocol.pcep.pcc.mock.protocol.PCCDispatcherImpl;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.MessageRegistry;
+import org.opendaylight.protocol.pcep.spi.pojo.DefaultPCEPExtensionConsumerContext;
 import org.opendaylight.protocol.util.InetSocketAddressUtil;
 
 public class PCCDispatcherImplTest {
 
-    private static final List<PCEPCapability> CAPS = new ArrayList<>();
     private static final PCEPSessionProposalFactory PROPOSAL
-            = new BasePCEPSessionProposalFactory(10, 40, CAPS);
+            = new BasePCEPSessionProposalFactory(10, 40, new ArrayList<>());
     private final DefaultPCEPSessionNegotiatorFactory nf
             = new DefaultPCEPSessionNegotiatorFactory(PROPOSAL, 0);
     private PCCDispatcherImpl dispatcher;
@@ -52,6 +50,7 @@ public class PCCDispatcherImplTest {
     private InetSocketAddress clientAddress;
     private EventLoopGroup workerGroup;
     private EventLoopGroup bossGroup;
+    private MessageRegistry registry;
 
     @Mock
     PCEPDispatcherDependencies dispatcherDependencies;
@@ -61,11 +60,11 @@ public class PCCDispatcherImplTest {
         MockitoAnnotations.initMocks(this);
         this.workerGroup = new NioEventLoopGroup();
         this.bossGroup = new NioEventLoopGroup();
-        this.dispatcher = new PCCDispatcherImpl(ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()
-                .getMessageHandlerRegistry());
-        this.pcepDispatcher = new PCEPDispatcherImpl(ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()
-                .getMessageHandlerRegistry(),
-            this.nf, this.bossGroup, this.workerGroup);
+
+        registry = new DefaultPCEPExtensionConsumerContext().getMessageHandlerRegistry();
+
+        this.dispatcher = new PCCDispatcherImpl(this.registry);
+        this.pcepDispatcher = new PCEPDispatcherImpl(this.registry, this.nf, this.bossGroup, this.workerGroup);
         this.serverAddress = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress();
         this.clientAddress = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress(0);
         doReturn(KeyMapping.getKeyMapping()).when(this.dispatcherDependencies).getKeys();
@@ -106,9 +105,7 @@ public class PCCDispatcherImplTest {
 
         this.workerGroup = new NioEventLoopGroup();
         this.bossGroup = new NioEventLoopGroup();
-        this.pcepDispatcher = new PCEPDispatcherImpl(ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()
-                .getMessageHandlerRegistry(),
-            this.nf, this.bossGroup, this.workerGroup);
+        this.pcepDispatcher = new PCEPDispatcherImpl(this.registry, this.nf, this.bossGroup, this.workerGroup);
 
         final TestingSessionListenerFactory slf2 = new TestingSessionListenerFactory();
         doReturn(slf2).when(this.dispatcherDependencies).getListenerFactory();
index 93acc0bfde28ff6d16e420a7f0967044bfec245d..d89afe6a63af1c0db3703b24c9701146befd000f 100644 (file)
@@ -27,6 +27,7 @@ import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.util.List;
 import java.util.Optional;
+import java.util.ServiceLoader;
 import java.util.concurrent.TimeUnit;
 import org.junit.Before;
 import org.opendaylight.protocol.concepts.KeyMapping;
@@ -47,8 +48,9 @@ import org.opendaylight.protocol.pcep.pcc.mock.api.PCCTunnelManager;
 import org.opendaylight.protocol.pcep.pcc.mock.protocol.PCCDispatcherImpl;
 import org.opendaylight.protocol.pcep.pcc.mock.protocol.PCCSessionListener;
 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
+import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
 import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator;
 import org.opendaylight.protocol.util.InetSocketAddressUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev200720.Tlvs3;
@@ -71,7 +73,7 @@ public abstract class PCCMockCommon {
             .getRandomLoopbackInetSocketAddress(this.port);
     PCCSessionListener pccSessionListener;
     private PCEPDispatcher pceDispatcher;
-    private PCEPExtensionProviderContext extensionProvider;
+    private final PCEPExtensionProviderContext extensionProvider = new SimplePCEPExtensionProviderContext();
     private MessageRegistry messageRegistry;
 
     protected abstract List<PCEPCapability> getCapabilities();
@@ -81,16 +83,16 @@ public abstract class PCCMockCommon {
         final BasePCEPSessionProposalFactory proposal = new BasePCEPSessionProposalFactory(DEAD_TIMER, KEEP_ALIVE,
                 getCapabilities());
         final DefaultPCEPSessionNegotiatorFactory nf = new DefaultPCEPSessionNegotiatorFactory(proposal, 0);
-        this.extensionProvider = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance();
+
+        ServiceLoader.load(PCEPExtensionProviderActivator.class).forEach(act -> act.start(extensionProvider));
+
         this.messageRegistry = this.extensionProvider.getMessageHandlerRegistry();
         this.pceDispatcher = new PCEPDispatcherImpl(this.messageRegistry, nf, new NioEventLoopGroup(),
                 new NioEventLoopGroup());
     }
 
     static TestingSessionListener checkSessionListener(final int numMessages, final Channel channel,
-            final TestingSessionListenerFactory factory,
-            final String localAddress) throws
-            Exception {
+            final TestingSessionListenerFactory factory, final String localAddress) throws Exception {
         final TestingSessionListener sessionListener = checkSessionListenerNotNull(factory, localAddress);
         assertTrue(sessionListener.isUp());
         checkReceivedMessages(sessionListener, numMessages);
diff --git a/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/ServiceLoaderPCEPExtensionProviderContext.java b/pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/ServiceLoaderPCEPExtensionProviderContext.java
deleted file mode 100644 (file)
index bf0f4ae..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2013 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.pcep.spi.pojo;
-
-import java.util.ServiceLoader;
-import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
-import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
-
-public final class ServiceLoaderPCEPExtensionProviderContext extends SimplePCEPExtensionProviderContext {
-    private static final class Holder {
-        private static final PCEPExtensionProviderContext INSTANCE = create();
-
-        private Holder() {
-        }
-    }
-
-    private ServiceLoaderPCEPExtensionProviderContext() {
-        // Hidden on purpose
-    }
-
-    public static PCEPExtensionProviderContext create() {
-        final PCEPExtensionProviderContext ctx = new SimplePCEPExtensionProviderContext();
-
-        final ServiceLoader<PCEPExtensionProviderActivator> loader =
-                ServiceLoader.load(PCEPExtensionProviderActivator.class);
-        for (final PCEPExtensionProviderActivator a : loader) {
-            a.start(ctx);
-        }
-
-        return ctx;
-    }
-
-    public static PCEPExtensionProviderContext getSingletonInstance() {
-        return Holder.INSTANCE;
-    }
-}
index 5af722606d84ac8179c0b74362fd57eab951b67f..08a5952e6a1e25d6aa5cf918ee6a83c81f02ffca 100644 (file)
@@ -41,7 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev
 import org.opendaylight.yangtools.concepts.Registration;
 
 // This class is thread-safe
-public class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
+public final class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
     private final SimpleLabelRegistry labelReg = new SimpleLabelRegistry();
     private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
     private final SimpleVendorInformationObjectRegistry viObjReg = new SimpleVendorInformationObjectRegistry();
@@ -53,37 +53,37 @@ public class SimplePCEPExtensionProviderContext implements PCEPExtensionProvider
     private final SimpleVendorInformationTlvRegistry viTlvReg = new SimpleVendorInformationTlvRegistry();
 
     @Override
-    public final LabelRegistry getLabelHandlerRegistry() {
+    public LabelRegistry getLabelHandlerRegistry() {
         return this.labelReg;
     }
 
     @Override
-    public final MessageRegistry getMessageHandlerRegistry() {
+    public MessageRegistry getMessageHandlerRegistry() {
         return this.msgReg;
     }
 
     @Override
-    public final ObjectRegistry getObjectHandlerRegistry() {
+    public ObjectRegistry getObjectHandlerRegistry() {
         return this.objReg;
     }
 
     @Override
-    public final EROSubobjectRegistry getEROSubobjectHandlerRegistry() {
+    public EROSubobjectRegistry getEROSubobjectHandlerRegistry() {
         return this.eroSubReg;
     }
 
     @Override
-    public final RROSubobjectRegistry getRROSubobjectHandlerRegistry() {
+    public RROSubobjectRegistry getRROSubobjectHandlerRegistry() {
         return this.rroSubReg;
     }
 
     @Override
-    public final XROSubobjectRegistry getXROSubobjectHandlerRegistry() {
+    public XROSubobjectRegistry getXROSubobjectHandlerRegistry() {
         return this.xroSubReg;
     }
 
     @Override
-    public final TlvRegistry getTlvHandlerRegistry() {
+    public TlvRegistry getTlvHandlerRegistry() {
         return this.tlvReg;
     }
 
@@ -93,56 +93,56 @@ public class SimplePCEPExtensionProviderContext implements PCEPExtensionProvider
     }
 
     @Override
-    public final Registration registerLabelSerializer(final Class<? extends LabelType> labelClass,
+    public Registration registerLabelSerializer(final Class<? extends LabelType> labelClass,
             final LabelSerializer serializer) {
         return this.labelReg.registerLabelSerializer(labelClass, serializer);
     }
 
     @Override
-    public final Registration registerLabelParser(final int ctype, final LabelParser parser) {
+    public Registration registerLabelParser(final int ctype, final LabelParser parser) {
         return this.labelReg.registerLabelParser(ctype, parser);
     }
 
     @Override
-    public final Registration registerEROSubobjectParser(final int subobjectType, final EROSubobjectParser parser) {
+    public Registration registerEROSubobjectParser(final int subobjectType, final EROSubobjectParser parser) {
         return this.eroSubReg.registerSubobjectParser(subobjectType, parser);
     }
 
     @Override
-    public final Registration registerEROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
+    public Registration registerEROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
             final EROSubobjectSerializer serializer) {
         return this.eroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
     }
 
     @Override
-    public final Registration registerMessageParser(final int messageType, final MessageParser parser) {
+    public Registration registerMessageParser(final int messageType, final MessageParser parser) {
         return this.msgReg.registerMessageParser(messageType, parser);
     }
 
     @Override
-    public final Registration registerMessageSerializer(final Class<? extends Message> msgClass,
+    public Registration registerMessageSerializer(final Class<? extends Message> msgClass,
             final MessageSerializer serializer) {
         return this.msgReg.registerMessageSerializer(msgClass, serializer);
     }
 
     @Override
-    public final Registration registerObjectParser(final ObjectParser parser) {
+    public Registration registerObjectParser(final ObjectParser parser) {
         return this.objReg.registerObjectParser(parser.getObjectClass(), parser.getObjectType(), parser);
     }
 
     @Override
-    public final Registration registerObjectSerializer(final Class<? extends Object> objClass,
+    public Registration registerObjectSerializer(final Class<? extends Object> objClass,
             final ObjectSerializer serializer) {
         return this.objReg.registerObjectSerializer(objClass, serializer);
     }
 
     @Override
-    public final Registration registerRROSubobjectParser(final int subobjectType, final RROSubobjectParser parser) {
+    public Registration registerRROSubobjectParser(final int subobjectType, final RROSubobjectParser parser) {
         return this.rroSubReg.registerSubobjectParser(subobjectType, parser);
     }
 
     @Override
-    public final Registration registerRROSubobjectSerializer(final Class<? extends org.opendaylight.yang.gen.v1.urn
+    public Registration registerRROSubobjectSerializer(final Class<? extends org.opendaylight.yang.gen.v1.urn
             .opendaylight.params.xml.ns.yang.rsvp.rev150820._record.route.subobjects.SubobjectType> subobjectClass,
             final RROSubobjectSerializer serializer) {
         return this.rroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
@@ -154,18 +154,18 @@ public class SimplePCEPExtensionProviderContext implements PCEPExtensionProvider
     }
 
     @Override
-    public final Registration registerTlvSerializer(final Class<? extends Tlv> tlvClass,
+    public Registration registerTlvSerializer(final Class<? extends Tlv> tlvClass,
             final TlvSerializer serializer) {
         return this.tlvReg.registerTlvSerializer(tlvClass, serializer);
     }
 
     @Override
-    public final Registration registerXROSubobjectParser(final int subobjectType, final XROSubobjectParser parser) {
+    public Registration registerXROSubobjectParser(final int subobjectType, final XROSubobjectParser parser) {
         return this.xroSubReg.registerSubobjectParser(subobjectType, parser);
     }
 
     @Override
-    public final Registration registerXROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
+    public Registration registerXROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
             final XROSubobjectSerializer serializer) {
         return this.xroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
     }
index bf38c3092bd4a3876bcd008ab40f987475ac300a..15221e51fc0d5ee876f74c2d51acfb0ac28ae310 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.impl.DefaultPCEPSessionNegotiatorFactory;
 import org.opendaylight.protocol.pcep.pcc.mock.protocol.PCCDispatcherImpl;
-import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.pojo.DefaultPCEPExtensionConsumerContext;
 import org.opendaylight.protocol.util.InetSocketAddressUtil;
 
 public final class PCCMock {
@@ -40,8 +40,8 @@ public final class PCCMock {
                 .getPortOrDefault(12345));
         final InetSocketAddress clientAddr = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress(0);
 
-        try (PCCDispatcherImpl pccDispatcher = new PCCDispatcherImpl(ServiceLoaderPCEPExtensionProviderContext
-                .getSingletonInstance().getMessageHandlerRegistry())) {
+        try (PCCDispatcherImpl pccDispatcher = new PCCDispatcherImpl(
+                new DefaultPCEPExtensionConsumerContext().getMessageHandlerRegistry())) {
             pccDispatcher.createClient(serverAddr, -1, SimpleSessionListener::new, snf,
                     KeyMapping.getKeyMapping(), clientAddr).get();
         }