vulcain-corejs
Version: 
Vulcain micro-service framework
34 lines (32 loc) • 1.37 kB
JavaScript
;
// Copyright (c) Zenasoft. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
const dynamicProperty_1 = require("./dynamicProperty");
const chainedDynamicProperty_1 = require("./chainedDynamicProperty");
class PropertiesFactory {
    constructor(_properties) {
        this._properties = _properties;
    }
    add(name, prop) {
        this._properties.addProperty(name, prop);
    }
    asProperty(value, name, dontCheck = false) {
        if (!dontCheck && name && this._properties.getProperty(name)) {
            throw new Error("Duplicate property name");
        }
        let p = new dynamicProperty_1.DynamicProperty(this._properties, name, value);
        if (name)
            this.add(name, p);
        p.set(value); // To send propertychanged
        return p;
    }
    asChainedProperty(defaultValue, name, fallbackPropertyNames) {
        if (fallbackPropertyNames.length === 0)
            throw new Error("You must provide at least one fallback property name");
        let properties = [name].concat(fallbackPropertyNames);
        let p = new chainedDynamicProperty_1.ChainedDynamicProperty(this._properties, properties, defaultValue);
        return p;
    }
}
exports.PropertiesFactory = PropertiesFactory;
//# sourceMappingURL=propertiesFactory.js.map