1 package org.opendaylight.controller.sal.dom.broker;
4 import java.util.concurrent.Future;
6 import org.opendaylight.controller.md.sal.common.api.data.DataReader;
7 import org.opendaylight.controller.sal.core.api.Broker.RoutedRpcRegistration;
8 import org.opendaylight.controller.sal.core.api.RpcImplementation;
9 import org.opendaylight.controller.sal.core.api.Broker.RpcRegistration;
10 import org.opendaylight.controller.sal.core.api.RpcRegistrationListener;
11 import org.opendaylight.controller.sal.core.api.data.DataChangeListener;
12 import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction;
13 import org.opendaylight.controller.sal.core.api.mount.MountProvisionInstance;
14 import org.opendaylight.controller.sal.core.api.notify.NotificationListener;
15 import org.opendaylight.controller.sal.dom.broker.impl.DataReaderRouter;
16 import org.opendaylight.controller.sal.dom.broker.impl.NotificationRouterImpl;
17 import org.opendaylight.controller.sal.dom.broker.impl.RpcRouterImpl;
18 import org.opendaylight.controller.sal.dom.broker.spi.NotificationRouter;
19 import org.opendaylight.controller.sal.dom.broker.spi.RpcRouter;
20 import org.opendaylight.yangtools.concepts.ListenerRegistration;
21 import org.opendaylight.yangtools.concepts.Registration;
22 import org.opendaylight.yangtools.yang.common.QName;
23 import org.opendaylight.yangtools.yang.common.RpcResult;
24 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
25 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
27 public class MountPointImpl implements MountProvisionInstance {
30 final DataReaderRouter dataReader;
31 final NotificationRouter notificationRouter;
33 public MountPointImpl(InstanceIdentifier path) {
34 rpcs = new RpcRouterImpl("");
35 dataReader = new DataReaderRouter();
36 notificationRouter = new NotificationRouterImpl();
40 public void publish(CompositeNode notification) {
41 notificationRouter.publish(notification);
45 public Registration<NotificationListener> addNotificationListener(QName notification, NotificationListener listener) {
46 return notificationRouter.addNotificationListener(notification, listener);
50 public CompositeNode readConfigurationData(InstanceIdentifier path) {
51 return dataReader.readConfigurationData(path);
55 public CompositeNode readOperationalData(InstanceIdentifier path) {
56 return dataReader.readOperationalData(path);
59 public Registration<DataReader<InstanceIdentifier, CompositeNode>> registerOperationalReader(
60 InstanceIdentifier path, DataReader<InstanceIdentifier, CompositeNode> reader) {
61 return dataReader.registerOperationalReader(path, reader);
64 public Registration<DataReader<InstanceIdentifier, CompositeNode>> registerConfigurationReader(
65 InstanceIdentifier path, DataReader<InstanceIdentifier, CompositeNode> reader) {
66 return dataReader.registerConfigurationReader(path, reader);
70 public RoutedRpcRegistration addRoutedRpcImplementation(QName rpcType, RpcImplementation implementation) {
71 return rpcs.addRoutedRpcImplementation(rpcType, implementation);
75 public RpcRegistration addRpcImplementation(QName rpcType, RpcImplementation implementation)
76 throws IllegalArgumentException {
77 return rpcs.addRpcImplementation(rpcType, implementation);
80 public Set<QName> getSupportedRpcs() {
81 return rpcs.getSupportedRpcs();
85 public RpcResult<CompositeNode> invokeRpc(QName rpc, CompositeNode input) {
86 return rpcs.invokeRpc(rpc, input);
89 public ListenerRegistration<RpcRegistrationListener> addRpcRegistrationListener(RpcRegistrationListener listener) {
90 return rpcs.addRpcRegistrationListener(listener);
95 public Future<RpcResult<CompositeNode>> rpc(QName type, CompositeNode input) {
96 // TODO Auto-generated method stub
101 public DataModificationTransaction beginTransaction() {
102 // TODO Auto-generated method stub
107 public ListenerRegistration<DataChangeListener> registerDataChangeListener(InstanceIdentifier path,
108 DataChangeListener listener) {
109 // TODO Auto-generated method stub
114 public void sendNotification(CompositeNode notification) {
115 publish(notification);