Merge "Unification of broker concepts implementations"
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / sal / dom / broker / MountPointImpl.java
1 package org.opendaylight.controller.sal.dom.broker;
2
3 import java.util.Set;
4 import java.util.concurrent.Future;
5
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;
26
27 public class MountPointImpl implements MountProvisionInstance {
28
29     final RpcRouter rpcs;
30     final DataReaderRouter dataReader;
31     final NotificationRouter notificationRouter;
32
33     public MountPointImpl(InstanceIdentifier path) {
34         rpcs = new RpcRouterImpl("");
35         dataReader = new DataReaderRouter();
36         notificationRouter = new NotificationRouterImpl();
37     }
38
39     @Override
40     public void publish(CompositeNode notification) {
41         notificationRouter.publish(notification);
42     }
43
44     @Override
45     public Registration<NotificationListener> addNotificationListener(QName notification, NotificationListener listener) {
46         return notificationRouter.addNotificationListener(notification, listener);
47     }
48
49     @Override
50     public CompositeNode readConfigurationData(InstanceIdentifier path) {
51         return dataReader.readConfigurationData(path);
52     }
53
54     @Override
55     public CompositeNode readOperationalData(InstanceIdentifier path) {
56         return dataReader.readOperationalData(path);
57     }
58
59     public Registration<DataReader<InstanceIdentifier, CompositeNode>> registerOperationalReader(
60             InstanceIdentifier path, DataReader<InstanceIdentifier, CompositeNode> reader) {
61         return dataReader.registerOperationalReader(path, reader);
62     }
63
64     public Registration<DataReader<InstanceIdentifier, CompositeNode>> registerConfigurationReader(
65             InstanceIdentifier path, DataReader<InstanceIdentifier, CompositeNode> reader) {
66         return dataReader.registerConfigurationReader(path, reader);
67     }
68
69     @Override
70     public RoutedRpcRegistration addRoutedRpcImplementation(QName rpcType, RpcImplementation implementation) {
71         return rpcs.addRoutedRpcImplementation(rpcType, implementation);
72     }
73
74     @Override
75     public RpcRegistration addRpcImplementation(QName rpcType, RpcImplementation implementation)
76             throws IllegalArgumentException {
77         return rpcs.addRpcImplementation(rpcType, implementation);
78     }
79
80     public Set<QName> getSupportedRpcs() {
81         return rpcs.getSupportedRpcs();
82     }
83
84     
85     public RpcResult<CompositeNode> invokeRpc(QName rpc, CompositeNode input) {
86         return rpcs.invokeRpc(rpc, input);
87     }
88
89     public ListenerRegistration<RpcRegistrationListener> addRpcRegistrationListener(RpcRegistrationListener listener) {
90         return rpcs.addRpcRegistrationListener(listener);
91     }
92
93
94     @Override
95     public Future<RpcResult<CompositeNode>> rpc(QName type, CompositeNode input) {
96         // TODO Auto-generated method stub
97         return null;
98     }
99
100     @Override
101     public DataModificationTransaction beginTransaction() {
102         // TODO Auto-generated method stub
103         return null;
104     }
105
106     @Override
107     public ListenerRegistration<DataChangeListener> registerDataChangeListener(InstanceIdentifier path,
108             DataChangeListener listener) {
109         // TODO Auto-generated method stub
110         return null;
111     }
112
113     @Override
114     public void sendNotification(CompositeNode notification) {
115         publish(notification);
116         
117     }
118 }