[API] Fix explicit implementation assignments

This commit is contained in:
Victor Woeltjen
2016-01-07 11:31:22 -08:00
parent 4ed1836ae5
commit 5bbbdd4e50
3 changed files with 34 additions and 11 deletions

View File

@@ -134,8 +134,28 @@ define(
*/
Extension.prototype.getImplementationPath = function () {
return this.definition.implementation ?
this.bundle.getSourcePath(this.definition.implementation) :
undefined;
this.bundle.getSourcePath(this.definition.implementation) :
undefined;
};
/**
* Check if an extension has an actual implementation value
* (and not just a path to an implementation) defined.
* @returns {function} the constructor for this extension instance
*/
Extension.prototype.getImplementationValue = function () {
return typeof this.definition.implementation === 'function' ?
this.definition.implementation :
undefined;
};
/**
* Check if an extension has an actual implementation value
* (and not just a path to an implementation) defined.
* @returns {boolean} true if a value is available
*/
Extension.prototype.hasImplementationValue = function () {
return typeof this.definition.implementation === 'function';
};
/**

View File

@@ -61,10 +61,10 @@ define(
$log = this.$log;
function loadImplementation(extension) {
var implValue = extension.getImplementationPath(),
implPromise = (typeof implValue === 'string') ?
loader.load(implValue) :
Promise.resolve(implValue),
var implPath = extension.getImplementationPath(),
implPromise = extension.hasImplementationValue() ?
Promise.resolve(extension.getImplementationValue()) :
loader.load(implPath),
definition = extension.getDefinition();
// Wrap a constructor function (to avoid modifying the original)
@@ -122,7 +122,7 @@ define(
// Log that loading has begun
$log.info([
"Loading implementation ",
implValue,
implPath,
" for extension ",
extension.getLogName()
].join(""));