pip-services4-components-node
Version:
Portable Component Model in Node.js / ES2017
73 lines (66 loc) • 2.08 kB
text/typescript
/** @module refer */
import { Descriptor } from './Descriptor';
/**
* Contains a reference to a component and locator to find it.
* It is used by [[References]] to store registered component references.
*/
export class Reference {
private _locator: any;
private _component: any;
/**
* Create a new instance of the reference object and assigns its values.
*
* @param locator a locator to find the reference.
* @param reference a reference to component.
*/
public constructor(locator: any, component: any) {
if (component == null) {
throw new Error("Component cannot be null");
}
this._locator = locator;
this._component = component;
}
/**
* Matches locator to this reference locator.
*
* Descriptors are matched using equal method.
* All other locator types are matched using direct comparison.
*
* @param locator the locator to match.
* @return true if locators are matching and false it they don't.
*
* @see [[Descriptor]]
*/
public match(locator: any): boolean {
// Locate by direct reference matching
if (this._component == locator) {
return true;
}
// Locate by direct locator matching
else if (this._locator instanceof Descriptor) {
return (<Descriptor>this._locator).equals(locator);
}
// Locate by direct locator matching
else if (this._locator != null) {
return this._locator == locator;
} else {
return false;
}
}
/**
* Gets the stored component reference.
*
* @return the component's references.
*/
public getComponent(): any {
return this._component;
}
/**
* Gets the stored component locator.
*
* @return the component's locator.
*/
public getLocator(): any {
return this._locator;
}
}