<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>
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;
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();
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
listenerRegistration = null;
}
listenerNotifier.shutdown();
+ LOG.info("DOM RPC/Action router stopped");
}
@VisibleForTesting
+++ /dev/null
-/*
- * 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");
- }
-}