diff --git a/platform/entanglement/src/services/CopyService.js b/platform/entanglement/src/services/CopyService.js index d62eb2a0ed..48ba3e7ce5 100644 --- a/platform/entanglement/src/services/CopyService.js +++ b/platform/entanglement/src/services/CopyService.js @@ -64,6 +64,12 @@ define( return self.perform(domainObject, parent); } + if (!this.validate(domainObject, parent)) { + throw new Error( + "Tried to copy objects without validating first." + ); + } + if (domainObject.hasCapability('composition')) { model.composition = []; } diff --git a/platform/entanglement/src/services/LinkService.js b/platform/entanglement/src/services/LinkService.js index da4a89e33c..465a07f3de 100644 --- a/platform/entanglement/src/services/LinkService.js +++ b/platform/entanglement/src/services/LinkService.js @@ -53,15 +53,18 @@ define( }; LinkService.prototype.perform = function (object, parentObject) { - // It is assumed here that validate has been called, and therefore - // that parentObject.hasCapability('composition'). - var composition = parentObject.getCapability('composition'); + if (!this.validate(object, parentObject)) { + throw new Error( + "Tried to link objects without validating first." + ); + } - return composition.add(object).then(function (objectInNewContext) { - return parentObject.getCapability('persistence') - .persist() - .then(function () { return objectInNewContext; }); - }); + return parentObject.getCapability('composition').add(object) + .then(function (objectInNewContext) { + return parentObject.getCapability('persistence') + .persist() + .then(function () { return objectInNewContext; }); + }); }; return LinkService; diff --git a/platform/entanglement/src/services/MoveService.js b/platform/entanglement/src/services/MoveService.js index 30c341ef22..608163310f 100644 --- a/platform/entanglement/src/services/MoveService.js +++ b/platform/entanglement/src/services/MoveService.js @@ -82,6 +82,12 @@ define( } } + if (!this.validate(object, parentObject)) { + throw new Error( + "Tried to move objects without validating first." + ); + } + return this.linkService .perform(object, parentObject) .then(relocate)