Add DOM blueprint XML
[mdsal.git] / dom / mdsal-dom-broker / src / main / java / org / opendaylight / mdsal / dom / broker / DOMRpcRouter.java
index 492fd4abfbd8854b6a3381d62c24710a178636ef..9dce3e929131b5de63d10ad9a82d51eb51085139 100644 (file)
@@ -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 <T extends DOMRpcImplementation> DOMRpcImplementationRegistration<T> 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