From 987335fb7f56d352321cb3adeec3c8296438e5a5 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Fri, 22 Jun 2018 23:38:19 -0400 Subject: [PATCH] Add DOM blueprint XML In order to start using the mdsal DOM APIs, we need them advertised. Change-Id: I4988119c399c5984da0b1c56fc7a2d9704c4e176 Signed-off-by: Tom Pantelis --- .../mdsal/dom/api/DefaultDOMRpcException.java | 21 ++++++ .../dom/broker/DOMNotificationRouter.java | 2 + .../mdsal/dom/broker/DOMRpcRouter.java | 13 ++++ .../org/opendaylight/blueprint/dom-broker.xml | 70 +++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DefaultDOMRpcException.java create mode 100644 dom/mdsal-dom-broker/src/main/resources/org/opendaylight/blueprint/dom-broker.xml diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DefaultDOMRpcException.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DefaultDOMRpcException.java new file mode 100644 index 0000000000..4a99b9647b --- /dev/null +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DefaultDOMRpcException.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2018 Inocybe Technologies 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.api; + +/** + * Default implementation of DOMRpcException. + * + * @author Thomas Pantelis + */ +public class DefaultDOMRpcException extends DOMRpcException { + private static final long serialVersionUID = 1L; + + public DefaultDOMRpcException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMNotificationRouter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMNotificationRouter.java index 78ba3cc19b..e8a307c958 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMNotificationRouter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMNotificationRouter.java @@ -105,6 +105,8 @@ public class DOMNotificationRouter implements AutoCloseable, DOMNotificationPubl public static DOMNotificationRouter create(final int queueDepth, final long spinTime, final long parkTime, final TimeUnit unit) { + Preconditions.checkArgument(Long.lowestOneBit(queueDepth) == Long.highestOneBit(queueDepth), + "Queue depth %s is not power-of-two", queueDepth); final ExecutorService executor = Executors.newCachedThreadPool(); final WaitStrategy strategy = PhasedBackoffWaitStrategy.withLock(spinTime, parkTime, unit); diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java index 492fd4abfb..9dce3e9291 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java @@ -36,6 +36,7 @@ import org.opendaylight.mdsal.dom.api.DOMRpcImplementationRegistration; import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.spi.AbstractDOMRpcImplementationRegistration; import org.opendaylight.yangtools.concepts.AbstractListenerRegistration; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -56,6 +57,14 @@ public final class DOMRpcRouter implements AutoCloseable, DOMRpcService, DOMRpcP private volatile DOMRpcRoutingTable routingTable = DOMRpcRoutingTable.EMPTY; + private ListenerRegistration listenerRegistration; + + public static DOMRpcRouter newInstance(final DOMSchemaService schemaService) { + final DOMRpcRouter rpcRouter = new DOMRpcRouter(); + rpcRouter.listenerRegistration = schemaService.registerSchemaContextListener(rpcRouter); + return rpcRouter; + } + @Override public DOMRpcImplementationRegistration registerRpcImplementation( final T implementation, final DOMRpcIdentifier... rpcs) { @@ -133,6 +142,10 @@ public final class DOMRpcRouter implements AutoCloseable, DOMRpcService, DOMRpcP @Override public void close() { listenerNotifier.shutdown(); + + if (listenerRegistration != null) { + listenerRegistration.close(); + } } @VisibleForTesting diff --git a/dom/mdsal-dom-broker/src/main/resources/org/opendaylight/blueprint/dom-broker.xml b/dom/mdsal-dom-broker/src/main/resources/org/opendaylight/blueprint/dom-broker.xml new file mode 100644 index 0000000000..72e42ebb10 --- /dev/null +++ b/dom/mdsal-dom-broker/src/main/resources/org/opendaylight/blueprint/dom-broker.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + org.opendaylight.mdsal.dom.api.DOMNotificationService + org.opendaylight.mdsal.dom.api.DOMNotificationPublishService + org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry + + + + + + + + + + + + org.opendaylight.mdsal.dom.api.DOMRpcService + org.opendaylight.mdsal.dom.api.DOMRpcProviderService + + + + + + + + + + + + + + + + + + + + + + -- 2.36.6