Added paths and mediatypes from Restconf draft 02
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / restconf / impl / RestconfImpl.xtend
1 package org.opendaylight.controller.sal.restconf.impl
2
3 import org.opendaylight.yangtools.yang.data.api.CompositeNode
4 import org.opendaylight.controller.sal.rest.api.RestconfService
5
6 class RestconfImpl implements RestconfService {
7     
8     val static RestconfImpl INSTANCE = new RestconfImpl
9
10     @Property
11     BrokerFacade broker
12
13     @Property
14     extension ControllerContext controllerContext
15     
16     private new() {
17         if (INSTANCE != null) {
18             throw new IllegalStateException("Already instantiated");
19         }
20     }
21     
22     static def getInstance() {
23         return INSTANCE
24     }
25
26     override readAllData() {
27 //        return broker.readOperationalData("".toInstanceIdentifier.getInstanceIdentifier);
28         throw new UnsupportedOperationException("Reading all data is currently not supported.")
29     }
30
31     override getModules() {
32         throw new UnsupportedOperationException("TODO: auto-generated method stub")
33     }
34
35     override getRoot() {
36         return null;
37     }
38
39     override readData(String identifier) {
40         val instanceIdentifierWithSchemaNode = identifier.toInstanceIdentifier
41         val data = broker.readOperationalData(instanceIdentifierWithSchemaNode.getInstanceIdentifier);
42         return new StructuredData(data, instanceIdentifierWithSchemaNode.schemaNode)
43     }
44
45     override createConfigurationData(String identifier, CompositeNode payload) {
46         val identifierWithSchemaNode = identifier.toInstanceIdentifier
47         return broker.commitConfigurationDataPut(identifierWithSchemaNode.instanceIdentifier,payload).get();
48     }
49
50     override updateConfigurationData(String identifier, CompositeNode payload) {
51         val identifierWithSchemaNode = identifier.toInstanceIdentifier
52         return broker.commitConfigurationDataPut(identifierWithSchemaNode.instanceIdentifier,payload).get();
53     }
54
55     override invokeRpc(String identifier, CompositeNode payload) {
56         val rpc = identifier.toQName;
57         val rpcResult = broker.invokeRpc(rpc, payload);
58         val schema = controllerContext.getRpcOutputSchema(rpc);
59         return new StructuredData(rpcResult.result, schema);
60     }
61     
62     override readConfigurationData(String identifier) {
63         val instanceIdentifierWithSchemaNode = identifier.toInstanceIdentifier
64         val data = broker.readOperationalData(instanceIdentifierWithSchemaNode.getInstanceIdentifier);
65         return new StructuredData(data, instanceIdentifierWithSchemaNode.schemaNode)
66     }
67     
68     override readOperationalData(String identifier) {
69         val instanceIdentifierWithSchemaNode = identifier.toInstanceIdentifier
70         val data = broker.readOperationalData(instanceIdentifierWithSchemaNode.getInstanceIdentifier);
71         return new StructuredData(data, instanceIdentifierWithSchemaNode.schemaNode)
72     }
73     
74     override updateConfigurationDataLegacy(String identifier, CompositeNode payload) {
75         updateConfigurationData(identifier,payload);
76     }
77     
78     override createConfigurationDataLegacy(String identifier, CompositeNode payload) {
79         createConfigurationData(identifier,payload);
80     }
81     
82     override createOperationalData(String identifier, CompositeNode payload) {
83         val identifierWithSchemaNode = identifier.toInstanceIdentifier
84         return broker.commitOperationalDataPut(identifierWithSchemaNode.instanceIdentifier,payload).get();
85     }
86     
87     override updateOperationalData(String identifier, CompositeNode payload) {
88         val identifierWithSchemaNode = identifier.toInstanceIdentifier
89         return broker.commitOperationalDataPut(identifierWithSchemaNode.instanceIdentifier,payload).get();
90     }
91
92 }