text: /**
   * Copyright JS Foundation and other contributors, http://js.foundation
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   **/
  
  var log;
  var api;
   var instances = {};
  
  module.exports = function(instance_id) {
      if (instances[instance_id]) {
          return instances[instance_id];
      }
  
  var result =  {
      init: function(runtime) {
          log = runtime.log;
          api = runtime.nodes;
      },
      get: function (req, res) {
          // TODO: It should verify the given node id is of the type specified -
          //       but that would add a dependency from this module to the
          //       registry module that knows about node types.
          var nodeType = req.params.type;
          var nodeID = req.params.id;
          log.audit({event: "credentials.get",type:nodeType,id:nodeID},req);
          var credentials = api.getCredentials(nodeID);
          if (!credentials) {
              res.json({});
              return;
          }
          var definition = api.getCredentialDefinition(nodeType);
  
          var sendCredentials = {};
          for (var cred in definition) {
              if (definition.hasOwnProperty(cred)) {
                  if (definition[cred].type == "password") {
                      var key = 'has_' + cred;
                      sendCredentials[key] = credentials[cred] != null && credentials[cred] !== '';
                      continue;
                  }
                  sendCredentials[cred] = credentials[cred] || '';
              }
          }
          res.json(sendCredentials);
      }
  }
  
  instances[instance_id] = result;
  return result;
  
  };