Updated RESTCONF implementation
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / restconf / impl / BrokerFacade.xtend
1 package org.opendaylight.controller.sal.restconf.impl
2
3 import org.opendaylight.controller.md.sal.common.api.data.DataReader
4 import java.net.URI
5 import org.opendaylight.yangtools.yang.data.api.CompositeNode
6 import org.opendaylight.controller.sal.core.api.data.DataBrokerService
7 import org.opendaylight.controller.sal.core.api.model.SchemaService
8 import static com.google.common.base.Preconditions.*;
9 import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession
10 import org.opendaylight.yangtools.yang.common.RpcResult
11 import org.opendaylight.controller.md.sal.common.api.data.DataModificationTransactionFactory
12
13 class BrokerFacade implements DataReader<String, CompositeNode> {
14
15     @Property
16     private ConsumerSession context;
17     
18     @Property
19     private DataBrokerService dataService;
20     
21     @Property
22     private SchemaService schemaService;
23
24     @Property
25     private extension ControllerContext schemaContext;
26
27
28     def void init() {
29         checkState(dataService !== null)
30         checkState(schemaService !== null)
31         schemaContext = new ControllerContext();
32         schemaContext.schemas = schemaService.globalContext;
33     }
34
35     override readConfigurationData(String path) {
36         val processedPath = path.removePrefixes();
37         return dataService.readConfigurationData(processedPath.toInstanceIdentifier);
38     }
39
40     override readOperationalData(String path) {
41         val processedPath = path.removePrefixes();
42         return dataService.readOperationalData(processedPath.toInstanceIdentifier);
43     }
44     
45     def RpcResult<CompositeNode> invokeRpc(String type,CompositeNode payload) {
46         val future = context.rpc(type.toRpcQName(),payload);
47         return future.get;
48     }
49     
50     def commitConfigurationDataUpdate(String path, CompositeNode payload) {
51         val transaction = dataService.beginTransaction;
52         transaction.putConfigurationData(path.toInstanceIdentifier,payload);
53         return transaction.commit()
54     }
55     
56     def commitConfigurationDataCreate(String path, CompositeNode payload) {
57         val transaction = dataService.beginTransaction;
58         transaction.putConfigurationData(path.toInstanceIdentifier,payload);
59         return transaction.commit()
60     }
61     
62     private def String removePrefixes(String path) {
63         return path;
64     }
65 }