--- /dev/null
+/*
+ * 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);
+ }
+}
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;
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 <T extends DOMRpcImplementation> DOMRpcImplementationRegistration<T> registerRpcImplementation(
final T implementation, final DOMRpcIdentifier... rpcs) {
@Override
public void close() {
listenerNotifier.shutdown();
+
+ if (listenerRegistration != null) {
+ listenerRegistration.close();
+ }
}
@VisibleForTesting
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
+ odl:restart-dependents-on-updates="false">
+
+ <cm:property-placeholder persistent-id="org.opendaylight.mdsal.dom.notification" update-strategy="none">
+ <cm:default-properties>
+ <cm:property name="notification-queue-depth" value="65536"/>
+ <cm:property name="notification-queue-spin" value="0"/>
+ <cm:property name="notification-queue-park" value="0"/>
+ </cm:default-properties>
+ </cm:property-placeholder>
+
+ <!-- Schema Service -->
+
+ <odl:static-reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService"/>
+
+ <!-- DOM Notification Service -->
+
+ <bean id="domNotificationRouter" class="org.opendaylight.mdsal.dom.broker.DOMNotificationRouter"
+ factory-method="create">
+ <argument value="${notification-queue-depth}"/>
+ <argument value="${notification-queue-spin}"/>
+ <argument value="${notification-queue-park}"/>
+ <argument value="MILLISECONDS"/>
+ </bean>
+
+ <service ref="domNotificationRouter" odl:type="default">
+ <interfaces>
+ <value>org.opendaylight.mdsal.dom.api.DOMNotificationService</value>
+ <value>org.opendaylight.mdsal.dom.api.DOMNotificationPublishService</value>
+ <value>org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListenerRegistry</value>
+ </interfaces>
+ </service>
+
+ <!-- DOM RPC Service -->
+
+ <bean id="domRpcRouter" class="org.opendaylight.mdsal.dom.broker.DOMRpcRouter"
+ factory-method="newInstance">
+ <argument ref="schemaService"/>
+ </bean>
+
+ <service ref="domRpcRouter" odl:type="default">
+ <interfaces>
+ <value>org.opendaylight.mdsal.dom.api.DOMRpcService</value>
+ <value>org.opendaylight.mdsal.dom.api.DOMRpcProviderService</value>
+ </interfaces>
+ </service>
+
+ <!-- DOM MountPoint Service -->
+
+ <bean id="domMountPointService" class="org.opendaylight.mdsal.dom.broker.DOMMountPointServiceImpl"/>
+
+ <service ref="domMountPointService" interface="org.opendaylight.mdsal.dom.api.DOMMountPointService"
+ odl:type="default"/>
+
+ <!-- DOM PingPong Data Broker -->
+
+<!-- <reference id="domDefaultDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker" -->
+<!-- odl:type="default"/> -->
+
+<!-- <bean id="domPingPongDataBroker" class="org.opendaylight.controller.md.sal.dom.broker.impl.PingPongDataBroker"> -->
+<!-- <argument ref="domDefaultDataBroker"/> -->
+<!-- </bean> -->
+
+<!-- <service ref="domPingPongDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker" -->
+<!-- odl:type="pingpong"/> -->
+
+</blueprint>