summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/core')
-rw-r--r--addons/web/static/src/js/core/abstract_service.js1
-rw-r--r--addons/web/static/src/js/core/service_mixins.js16
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;