diff options
Diffstat (limited to 'addons/web/static/src/js/core')
| -rw-r--r-- | addons/web/static/src/js/core/abstract_service.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/core/service_mixins.js | 16 |
2 files changed, 11 insertions, 6 deletions
diff --git a/addons/web/static/src/js/core/abstract_service.js b/addons/web/static/src/js/core/abstract_service.js index e6840cc92f9..c907b28f7c8 100644 --- a/addons/web/static/src/js/core/abstract_service.js +++ b/addons/web/static/src/js/core/abstract_service.js @@ -7,7 +7,6 @@ var ServicesMixin = require('web.ServicesMixin'); var AbstractService = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { dependencies: [], - name: null, init: function (parent) { Mixins.EventDispatcherMixin.init.call(this, arguments); this.setParent(parent); diff --git a/addons/web/static/src/js/core/service_mixins.js b/addons/web/static/src/js/core/service_mixins.js index 850e9983a74..170d5dd098a 100644 --- a/addons/web/static/src/js/core/service_mixins.js +++ b/addons/web/static/src/js/core/service_mixins.js @@ -20,12 +20,18 @@ var ServiceProviderMixin = { // add already registered services from the service registry _.each(core.serviceRegistry.map, function (Service, serviceName) { + if (serviceName in self.UndeployedServices) { + throw new Error('Service "' + serviceName + '" is already loaded.'); + } self.UndeployedServices[serviceName] = Service; }); this._deployServices(); // listen on newly added services core.serviceRegistry.onAdd(function (serviceName, Service) { + if (serviceName in self.services || serviceName in self.UndeployedServices) { + throw new Error('Service "' + serviceName + '" is already loaded.'); + } self.UndeployedServices[serviceName] = Service; self._deployServices(); }); @@ -42,16 +48,16 @@ var ServiceProviderMixin = { var self = this; var done = false; while (!done) { - var Service = _.find(this.UndeployedServices, function (Service) { + var serviceName = _.findKey(this.UndeployedServices, function (Service) { // no missing dependency return !_.some(Service.prototype.dependencies, function (depName) { return !self.services[depName]; }); }); - if (Service) { - var service = new Service(this); - this.services[Service.prototype.name] = service; - delete this.UndeployedServices[Service.prototype.name]; + if (serviceName) { + var service = new this.UndeployedServices[serviceName](this); + this.services[serviceName] = service; + delete this.UndeployedServices[serviceName]; service.start(); } else { done = true; |
