pip-services3-commons-node
Version:
Portable abstractions and patterns for Pip.Services in Node.js
42 lines (38 loc) • 1.64 kB
text/typescript
/** @module config */
import { ConfigParams } from './ConfigParams';
import { Descriptor } from '../refer/Descriptor';
/**
* A helper class that allows to extract component name from configuration parameters.
* The name can be defined in "id", "name" parameters or inside a component descriptor.
*
* ### Example ###
*
* let config = ConfigParams.fromTuples(
* "descriptor", "myservice:connector:aws:connector1:1.0",
* "param1", "ABC",
* "param2", 123
* );
*
* let name = NameResolver.resolve(config); // Result: connector1
*/
export class NameResolver {
/**
* Resolves a component name from configuration parameters.
* The name can be stored in "id", "name" fields or inside a component descriptor.
* If name cannot be determined it returns a defaultName.
*
* @param config configuration parameters that may contain a component name.
* @param defaultName (optional) a default component name.
* @returns resolved name or default name if the name cannot be determined.
*/
static resolve(config: ConfigParams, defaultName: string = null): string {
let name: string = config.getAsNullableString("name") || config.getAsNullableString("id");
if (name == null) {
let descriptorStr: string = config.getAsNullableString("descriptor");
let descriptor: Descriptor = Descriptor.fromString(descriptorStr);
if (descriptor != null)
name = descriptor.getName();
}
return name || defaultName;
}
}