old_contents: /* Copyright 2015 Canoo Engineering AG.
   *
   * 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.
   */
  
  /*jslint browserify: true */
  /* global console */
  "use strict";
  
  var Emitter = require('emitter-component');
  
  var utils = require('./utils.js');
  var checkMethod = utils.checkMethod;
  var checkParam = utils.checkParam;
  
  var DOLPHIN_PLATFORM_PREFIX = 'dolphin_platform_intern_';
  var INIT_COMMAND_NAME = DOLPHIN_PLATFORM_PREFIX + 'initClientContext';
  var DISCONNECT_COMMAND_NAME = DOLPHIN_PLATFORM_PREFIX + 'disconnectClientContext';
  
  function ClientContext(dolphin, beanManager, controllerManager, connector) {
      checkMethod('ClientContext(dolphin, beanManager, controllerManager, connector)');
      checkParam(dolphin, 'dolphin');
      checkParam(beanManager, 'beanManager');
      checkParam(controllerManager, 'controllerManager');
      checkParam(connector, 'connector');
  
      this.dolphin = dolphin;
      this.beanManager = beanManager;
      this._controllerManager = controllerManager;
      this._connector = connector;
  
      this._connector.invoke(INIT_COMMAND_NAME);
  }
  
  Emitter(ClientContext.prototype);
  
  
  ClientContext.prototype.createController = function(name) {
      checkMethod('ClientContext.createController(name)');
      checkParam(name, 'name');
  
      return this._controllerManager.createController(name);
  };
  
  
  ClientContext.prototype.disconnect = function() {
      // TODO: Implement ClientContext.disconnect [DP-46]
      var self = this;
      this.dolphin.stopPushListening();
      return new Promise(function(resolve) {
          this._controllerManager.destroy().then(function () {
              self._connector.invoke(DISCONNECT_COMMAND_NAME);
              self.dolphin = null;
              self.beanManager = null;
              self._controllerManager = null;
              self._connector = null;
              resolve();
          });
      });
  };
  
  
  exports.ClientContext = ClientContext;
new_contents: /* Copyright 2015 Canoo Engineering AG.
   *
   * 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.
   */
  
  /*jslint browserify: true */
  /* global console */
  "use strict";
  
  var Emitter = require('emitter-component');
  var Promise = require('../bower_components/core.js/library/fn/promise');
  var utils = require('./utils.js');
  var checkMethod = utils.checkMethod;
  var checkParam = utils.checkParam;
  
  var DOLPHIN_PLATFORM_PREFIX = 'dolphin_platform_intern_';
  var INIT_COMMAND_NAME = DOLPHIN_PLATFORM_PREFIX + 'initClientContext';
  var DISCONNECT_COMMAND_NAME = DOLPHIN_PLATFORM_PREFIX + 'disconnectClientContext';
  
  function ClientContext(dolphin, beanManager, controllerManager, connector) {
      checkMethod('ClientContext(dolphin, beanManager, controllerManager, connector)');
      checkParam(dolphin, 'dolphin');
      checkParam(beanManager, 'beanManager');
      checkParam(controllerManager, 'controllerManager');
      checkParam(connector, 'connector');
  
      this.dolphin = dolphin;
      this.beanManager = beanManager;
      this._controllerManager = controllerManager;
      this._connector = connector;
  
      this._connector.invoke(INIT_COMMAND_NAME);
  }
  
  Emitter(ClientContext.prototype);
  
  
  ClientContext.prototype.createController = function(name) {
      checkMethod('ClientContext.createController(name)');
      checkParam(name, 'name');
  
      return this._controllerManager.createController(name);
  };
  
  
  ClientContext.prototype.disconnect = function() {
      // TODO: Implement ClientContext.disconnect [DP-46]
      var self = this;
      this.dolphin.stopPushListening();
      return new Promise(function(resolve) {
          this._controllerManager.destroy().then(function () {
              self._connector.invoke(DISCONNECT_COMMAND_NAME);
              self.dolphin = null;
              self.beanManager = null;
              self._controllerManager = null;
              self._connector = null;
              resolve();
          });
      });
  };
  
  
  exports.ClientContext = ClientContext;
subject: Fix Promise is not defined