Merge (OSGi)DOMRpcRouter 42/97942/1
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 17 Oct 2021 06:19:34 +0000 (08:19 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 17 Oct 2021 06:20:45 +0000 (08:20 +0200)
We have contructor injection in OSGi DS, hence we can merge these
classes. Also add missing cleanup under javax.inject rules.

Change-Id: I3c580929f67e4f103707902706c9303221272cb3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
dom/mdsal-dom-broker/pom.xml
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/OSGiDOMRpcRouter.java [deleted file]

index fcbd5d3fc75c547dfe986d1e169d8349e8828093..6279d2328f6feb9b763394af1eb04298f818e96f 100644 (file)
             <artifactId>javax.inject</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>javax.annotation</groupId>
+            <artifactId>javax.annotation-api</artifactId>
+            <scope>provided</scope>
+            <optional>true</optional>
+        </dependency>
         <dependency>
             <groupId>org.kohsuke.metainf-services</groupId>
             <artifactId>metainf-services</artifactId>
index 42577046f3d0b3233fc9839e8d04d1ccfac262ca..37713fd58cc2512e45ca0840f70c717254d93942 100644 (file)
@@ -38,6 +38,7 @@ import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
+import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.checkerframework.checker.lock.qual.GuardedBy;
@@ -76,12 +77,20 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.RequireServiceComponentRuntime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Singleton
+@Component(immediate = true, service = DOMRpcRouterServices.class)
+@RequireServiceComponentRuntime
 public final class DOMRpcRouter extends AbstractRegistration
         implements DOMRpcRouterServices, EffectiveModelContextListener {
+    private static final Logger LOG = LoggerFactory.getLogger(DOMRpcRouter.class);
     private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat(
             "DOMRpcRouter-listener-%s").setDaemon(true).build();
 
@@ -103,11 +112,29 @@ public final class DOMRpcRouter extends AbstractRegistration
 
     private ListenerRegistration<?> listenerRegistration;
 
+    @Deprecated
+    @VisibleForTesting
+    // FIXME: 9.0.0: make this constructor package-private
+    public DOMRpcRouter() {
+
+    }
+
     @Inject
+    @Activate
+    public DOMRpcRouter(@Reference final DOMSchemaService schemaService) {
+        listenerRegistration = schemaService.registerSchemaContextListener(this);
+        LOG.info("DOM RPC/Action router started");
+    }
+
+    @Deprecated(forRemoval = true)
     public static DOMRpcRouter newInstance(final DOMSchemaService schemaService) {
-        final DOMRpcRouter rpcRouter = new DOMRpcRouter();
-        rpcRouter.listenerRegistration = schemaService.registerSchemaContextListener(rpcRouter);
-        return rpcRouter;
+        return new DOMRpcRouter(schemaService);
+    }
+
+    @PreDestroy
+    @Deactivate
+    public void shutdown() {
+        close();
     }
 
     @Override
@@ -238,6 +265,7 @@ public final class DOMRpcRouter extends AbstractRegistration
             listenerRegistration = null;
         }
         listenerNotifier.shutdown();
+        LOG.info("DOM RPC/Action router stopped");
     }
 
     @VisibleForTesting
diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/OSGiDOMRpcRouter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/OSGiDOMRpcRouter.java
deleted file mode 100644 (file)
index fd1aef2..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.mdsal.dom.broker;
-
-import com.google.common.annotations.Beta;
-import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
-import org.opendaylight.mdsal.dom.api.DOMActionService;
-import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
-import org.opendaylight.mdsal.dom.api.DOMRpcService;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Beta
-@Component(immediate = true, service = DOMRpcRouterServices.class)
-// FIXME: 9.0.0: merge with DOMRpcRouter
-public final class OSGiDOMRpcRouter implements DOMRpcRouterServices {
-    private static final Logger LOG = LoggerFactory.getLogger(OSGiDOMRpcRouter.class);
-
-    @Reference
-    DOMSchemaService schemaService = null;
-
-    private DOMRpcRouter router;
-
-    @Override
-    public DOMActionService getActionService() {
-        return router.getActionService();
-    }
-
-    @Override
-    public DOMActionProviderService getActionProviderService() {
-        return router.getActionProviderService();
-    }
-
-    @Override
-    public DOMRpcService getRpcService() {
-        return router.getRpcService();
-    }
-
-    @Override
-    public DOMRpcProviderService getRpcProviderService() {
-        return router.getRpcProviderService();
-    }
-
-    @Activate
-    void activate() {
-        router = DOMRpcRouter.newInstance(schemaService);
-        LOG.info("DOM RPC/Action router started");
-    }
-
-    @Deactivate
-    void deactivate() {
-        router.close();
-        router = null;
-        LOG.info("DOM RPC/Action router stopped");
-    }
-}