diff --git a/platform/core/src/capabilities/CreationCapability.js b/platform/core/src/capabilities/CreationCapability.js index 3252a413fc..680f3f2805 100644 --- a/platform/core/src/capabilities/CreationCapability.js +++ b/platform/core/src/capabilities/CreationCapability.js @@ -34,8 +34,9 @@ define( * @memberof platform/core * @param $injector Angular's `$injector` */ - function CreationCapability($injector, domainObject) { + function CreationCapability($injector, identifierService, domainObject) { this.$injector = $injector; + this.identifierService = identifierService; this.domainObject = domainObject; } @@ -63,14 +64,12 @@ define( * @returns {DomainObject} the new domain object */ CreationCapability.prototype.create = function (model) { - var id = uuid(), + var parsedId = + this.identifierService.parse(this.domainObject.getId()), + space = parsedId.getDefinedSpace(), + id = this.identifierService.generate(space), capabilities = this.getCapabilities(model); - // Retain any space-prefixing from the parent - if (this.domainObject.getId().indexOf(":") !== -1) { - id = this.domainObject.getId().split(":")[0] + ":" + id; - } - return new DomainObjectImpl(id, model, capabilities); }; diff --git a/platform/core/src/identifiers/Identifier.js b/platform/core/src/identifiers/Identifier.js index 60e3bcb051..7e3410a743 100644 --- a/platform/core/src/identifiers/Identifier.js +++ b/platform/core/src/identifiers/Identifier.js @@ -38,11 +38,11 @@ define( if (separatorIndex > -1) { this.key = id.substring(separatorIndex + 1); this.space = id.substring(0, separatorIndex); - this.spaceDefined = true; + this.definedSpace = this.pace; } else { this.key = id; this.space = defaultSpace; - this.spaceDefined = false; + this.definedSpace = undefined; } } @@ -54,8 +54,8 @@ define( return this.space; }; - Identifier.prototype.hasDefinedSpace = function () { - return this.spaceDefined; + Identifier.prototype.getDefinedSpace = function () { + return this.definedSpace; }; return Identifier; diff --git a/platform/core/src/identifiers/IdentifierProvider.js b/platform/core/src/identifiers/IdentifierProvider.js index f86356efb5..a922807cc3 100644 --- a/platform/core/src/identifiers/IdentifierProvider.js +++ b/platform/core/src/identifiers/IdentifierProvider.js @@ -35,7 +35,7 @@ define( IdentifierProvider.prototype.generate = function (space) { var id = uuid(); - if (arguments.length > 0) { + if (space !== undefined) { id = space + ":" + id; } return id;