Solved bugs and added tests in sal-rest-connector
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / restconf / impl / RestconfImpl.xtend
index 4a23c76387db1c11e4ca78370eaf47a0795d629a..0b0ebc592259b5c89a8fb29ff9a2c9026b9d95a9 100644 (file)
@@ -1,41 +1,61 @@
 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
+
+}