package org.opendaylight.controller.sal.restconf.impl
+import org.opendaylight.controller.sal.core.api.model.SchemaService
import org.opendaylight.yangtools.yang.data.api.CompositeNode
+import static com.google.common.base.Preconditions.*
+
class RestconfImpl implements RestconfService {
-
+
@Property
- BrokerFacade broker;
-
+ BrokerFacade broker
+
+ @Property
+ extension ControllerContext controllerContext
+
+ val JsonMapper jsonMapper = new JsonMapper;
+
+ def init(SchemaService schemaService) {
+ checkState(broker !== null)
+ checkState(controllerContext !== null)
+ checkState(schemaService !== null)
+ controllerContext.schemas = schemaService.globalContext
+ }
+
override readAllData() {
- return broker.readOperationalData("");
+ return broker.readOperationalData("".removePrefixes.toInstanceIdentifier.getInstanceIdentifier);
}
-
-
+
override getModules() {
throw new UnsupportedOperationException("TODO: auto-generated method stub")
}
-
+
override getRoot() {
throw new UnsupportedOperationException("TODO: auto-generated method stub")
-
+
}
-
+
override readData(String identifier) {
- return broker.readOperationalData(identifier);
+ val instanceIdentifierWithSchemaNode = identifier.removePrefixes.toInstanceIdentifier
+ val data = broker.readOperationalData(instanceIdentifierWithSchemaNode.getInstanceIdentifier);
+ jsonMapper.convert(instanceIdentifierWithSchemaNode.getSchemaNode, data)
}
-
+
override createConfigurationData(String identifier, CompositeNode payload) {
- return broker.commitConfigurationDataCreate(identifier,payload);
+ return broker.commitConfigurationDataCreate(identifier.removePrefixes.toInstanceIdentifier.getInstanceIdentifier, payload);
}
-
-
+
override updateConfigurationData(String identifier, CompositeNode payload) {
- return broker.commitConfigurationDataCreate(identifier,payload);
+ return broker.commitConfigurationDataCreate(identifier.removePrefixes.toInstanceIdentifier.getInstanceIdentifier, payload);
}
-
+
override invokeRpc(String identifier, CompositeNode payload) {
- return broker.invokeRpc(identifier,payload);
+ val rpcResult = broker.invokeRpc(identifier.removePrefixes.toRpcQName, payload);
+ jsonMapper.convert(identifier.removePrefixes.toInstanceIdentifier.getSchemaNode, rpcResult.result);
+ }
+
+ private def String removePrefixes(String path) {
+ return path;
}
-
-}
\ No newline at end of file
+
+}