Cleanup PCEPTopologyProvider a bit 68/98568/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 16 Nov 2021 09:33:13 +0000 (10:33 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 16 Nov 2021 09:34:00 +0000 (10:34 +0100)
Prior to diving into untangling activation mess, perform self-contained
cleanups in PCEPTopologyProvider.

JIRA: BGPCEP-983
Change-Id: I456a852665dd28a64c71251a56aaf69c6b25f74b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologyProvider.java

index f8c37364a2785144e95897f43a3c7f3cdb61a598..bd3b652e6b55739e85f80d2ef16af0afddb219f1 100644 (file)
@@ -14,9 +14,8 @@ import com.google.common.util.concurrent.FluentFuture;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelFutureListener;
-import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.bgpcep.pcep.topology.provider.config.PCEPTopologyConfiguration;
 import org.opendaylight.bgpcep.pcep.topology.provider.config.PCEPTopologyProviderDependencies;
@@ -30,12 +29,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology
 import org.opendaylight.yangtools.concepts.ObjectRegistration;
 
 public final class PCEPTopologyProvider extends DefaultTopologyReference {
-    private static final String STATEFUL_NOT_DEFINED = "Stateful capability not defined, aborting PCEP Topology"
-            + " Provider instantiation";
     private final ServerSessionManager manager;
     private final PCEPTopologyProviderDependencies dependenciesProvider;
     private final PCEPTopologyConfiguration configDependencies;
     private final InstructionScheduler scheduler;
+
     private ObjectRegistration<NetworkTopologyPcepProgrammingService> network;
     private ObjectRegistration<NetworkTopologyPcepService> element;
     private Channel channel;
@@ -55,54 +53,46 @@ public final class PCEPTopologyProvider extends DefaultTopologyReference {
             final InstructionScheduler scheduler, final PCEPTopologyConfiguration configDependencies) {
         final List<PCEPCapability> capabilities = dependenciesProvider.getPCEPDispatcher()
                 .getPCEPSessionNegotiatorFactory().getPCEPSessionProposalFactory().getCapabilities();
-        final Optional<PCEPCapability> statefulCapability = capabilities
-                .stream()
-                .filter(PCEPCapability::isStateful)
-                .findAny();
-
-        final TopologySessionListenerFactory listenerFactory = dependenciesProvider.getTopologySessionListenerFactory();
-        if (!statefulCapability.isPresent()) {
-            throw new IllegalStateException(STATEFUL_NOT_DEFINED);
+        if (capabilities.stream().filter(PCEPCapability::isStateful).findAny().isEmpty()) {
+            throw new IllegalStateException(
+                "Stateful capability not defined, aborting PCEP Topology Provider instantiation");
         }
 
-        final ServerSessionManager manager = new ServerSessionManager(dependenciesProvider, listenerFactory,
-                configDependencies);
+        final ServerSessionManager manager = new ServerSessionManager(dependenciesProvider,
+            dependenciesProvider.getTopologySessionListenerFactory(), configDependencies);
 
         return new PCEPTopologyProvider(configDependencies, dependenciesProvider, manager, scheduler);
     }
 
     public void instantiateServiceInstance() throws ExecutionException, InterruptedException {
-        final RpcProviderService rpcRegistry = this.dependenciesProvider.getRpcProviderRegistry();
+        final RpcProviderService rpcRegistry = dependenciesProvider.getRpcProviderRegistry();
 
-        this.element = requireNonNull(rpcRegistry
-            .registerRpcImplementation(NetworkTopologyPcepService.class, new TopologyRPCs(this.manager),
-                Collections.singleton(this.configDependencies.getTopology())));
+        element = requireNonNull(rpcRegistry.registerRpcImplementation(NetworkTopologyPcepService.class,
+            new TopologyRPCs(manager), Set.of(configDependencies.getTopology())));
 
-        this.network = requireNonNull(rpcRegistry
-            .registerRpcImplementation(NetworkTopologyPcepProgrammingService.class,
-                new TopologyProgramming(this.scheduler, this.manager),
-                Collections.singleton(this.configDependencies.getTopology())));
+        network = requireNonNull(rpcRegistry.registerRpcImplementation(NetworkTopologyPcepProgrammingService.class,
+            new TopologyProgramming(scheduler, manager), Set.of(configDependencies.getTopology())));
 
-        this.manager.instantiateServiceInstance();
-        final ChannelFuture channelFuture = this.dependenciesProvider.getPCEPDispatcher()
-                .createServer(this.manager.getPCEPDispatcherDependencies());
+        manager.instantiateServiceInstance();
+        final ChannelFuture channelFuture = dependenciesProvider.getPCEPDispatcher()
+                .createServer(manager.getPCEPDispatcherDependencies());
         channelFuture.get();
-        this.channel = channelFuture.channel();
+        channel = channelFuture.channel();
     }
 
     public FluentFuture<? extends CommitInfo> closeServiceInstance() {
         //FIXME return also channelClose once ListenableFuture implements wildcard
-        this.channel.close().addListener((ChannelFutureListener) future ->
+        channel.close().addListener((ChannelFutureListener) future ->
                 checkArgument(future.isSuccess(), "Channel failed to close: %s", future.cause()));
 
-        if (this.network != null) {
-            this.network.close();
-            this.network = null;
+        if (network != null) {
+            network.close();
+            network = null;
         }
-        if (this.element != null) {
-            this.element.close();
-            this.element = null;
+        if (element != null) {
+            element.close();
+            element = null;
         }
-        return this.manager.closeServiceInstance();
+        return manager.closeServiceInstance();
     }
 }
\ No newline at end of file