UNPKG

hazelcast-client

Version:

Hazelcast - open source In-Memory Data Grid - client for NodeJS

293 lines 13.8 kB
"use strict"; /* * Copyright (c) 2008-2018, Hazelcast, Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); var Config_1 = require("./Config"); var Promise = require("bluebird"); var HazelcastError_1 = require("../HazelcastError"); var Util_1 = require("../Util"); var TopicOverloadPolicy_1 = require("../proxy/topic/TopicOverloadPolicy"); var ReliableTopicConfig_1 = require("./ReliableTopicConfig"); var InMemoryFormat_1 = require("./InMemoryFormat"); var EvictionPolicy_1 = require("./EvictionPolicy"); var NearCacheConfig_1 = require("./NearCacheConfig"); var JsonConfigLocator_1 = require("./JsonConfigLocator"); var BasicSSLOptionsFactory_1 = require("../connection/BasicSSLOptionsFactory"); var FlakeIdGeneratorConfig_1 = require("./FlakeIdGeneratorConfig"); var ConfigBuilder = /** @class */ (function () { function ConfigBuilder() { this.clientConfig = new Config_1.ClientConfig(); this.configLocator = new JsonConfigLocator_1.JsonConfigLocator(); } ConfigBuilder.prototype.loadConfig = function () { var _this = this; return this.configLocator.load().then(function () { var loadedBuffer = _this.configLocator.getBuffer(); if (loadedBuffer) { _this.loadedJson = JSON.parse(loadedBuffer.toString()); return _this.replaceImportsWithContent(_this.loadedJson); } }); }; ConfigBuilder.prototype.build = function () { try { this.handleConfig(this.loadedJson); return this.clientConfig; } catch (e) { throw new HazelcastError_1.HazelcastError('Error parsing config.', e); } }; ConfigBuilder.prototype.replaceImportsWithContent = function (jsonObject) { var _this = this; if (jsonObject['import']) { var includes = Util_1.tryGetArray(jsonObject['import']); return Promise.map(includes, function (path) { return _this.configLocator.loadImported(path); }).map(function (buffer) { Util_1.mergeJson(jsonObject, JSON.parse(buffer.toString())); }).return(); } }; ConfigBuilder.prototype.handleConfig = function (jsonObject) { for (var key in jsonObject) { if (key === 'network') { this.handleNetwork(jsonObject[key]); } else if (key === 'group') { this.handleGroup(jsonObject[key]); } else if (key === 'properties') { this.handleProperties(jsonObject[key]); } else if (key === 'listeners') { this.handleListeners(jsonObject[key]); } else if (key === 'serialization') { this.handleSerialization(jsonObject[key]); } else if (key === 'nearCaches') { this.handleNearCaches(jsonObject[key]); } else if (key === 'reliableTopics') { this.handleReliableTopics(jsonObject[key]); } else if (key === 'flakeIdGeneratorConfigs') { this.handleFlakeIds(jsonObject[key]); } } }; ConfigBuilder.prototype.handleNetwork = function (jsonObject) { for (var key in jsonObject) { if (key === 'clusterMembers') { this.handleClusterMembers(jsonObject[key]); } else if (key === 'smartRouting') { this.clientConfig.networkConfig.smartRouting = Util_1.tryGetBoolean(jsonObject[key]); } else if (key === 'connectionTimeout') { this.clientConfig.networkConfig.connectionTimeout = Util_1.tryGetNumber(jsonObject[key]); } else if (key === 'connectionAttemptPeriod') { this.clientConfig.networkConfig.connectionAttemptPeriod = Util_1.tryGetNumber(jsonObject[key]); } else if (key === 'connectionAttemptLimit') { this.clientConfig.networkConfig.connectionAttemptLimit = Util_1.tryGetNumber(jsonObject[key]); } else if (key === 'ssl') { this.handleSsl(jsonObject[key]); } } }; ConfigBuilder.prototype.parseProperties = function (jsonObject) { var props = {}; for (var key in jsonObject) { props[key] = jsonObject[key]; } return props; }; ConfigBuilder.prototype.parseImportConfig = function (jsonObject) { var importConfig = {}; importConfig.path = jsonObject['path']; importConfig.exportedName = jsonObject['exportedName']; return importConfig; }; ConfigBuilder.prototype.handleSsl = function (jsonObject) { var sslEnabled = Util_1.tryGetBoolean(jsonObject['enabled']); if (sslEnabled) { if (jsonObject['factory']) { var factory = jsonObject['factory']; var importConfig = this.parseImportConfig(factory); if (importConfig.path == null && importConfig.exportedName !== BasicSSLOptionsFactory_1.BasicSSLOptionsFactory.name) { throw new RangeError('Invalid configuration. Either ssl factory path should be set or exportedName ' + ' should be ' + BasicSSLOptionsFactory_1.BasicSSLOptionsFactory.name); } else { this.clientConfig.networkConfig.sslOptionsFactoryConfig = this.parseImportConfig(factory); this.clientConfig.networkConfig.sslOptionsFactoryProperties = this.parseProperties(factory['properties']); } } } }; ConfigBuilder.prototype.handleClusterMembers = function (jsonObject) { var addressArray = Util_1.tryGetArray(jsonObject); for (var index in addressArray) { var address = addressArray[index]; this.clientConfig.networkConfig.addresses.push(Util_1.createAddressFromString(Util_1.tryGetString(address))); } }; ConfigBuilder.prototype.handleGroup = function (jsonObject) { for (var key in jsonObject) { if (key === 'name') { this.clientConfig.groupConfig.name = Util_1.tryGetString(jsonObject[key]); } else if (key === 'password') { this.clientConfig.groupConfig.password = Util_1.tryGetString(jsonObject[key]); } } }; ConfigBuilder.prototype.handleProperties = function (jsonObject) { for (var key in jsonObject) { this.clientConfig.properties[key] = jsonObject[key]; } }; ConfigBuilder.prototype.handleListeners = function (jsonObject) { var listenersArray = Util_1.tryGetArray(jsonObject); for (var index in listenersArray) { var listenerConfig = listenersArray[index]; this.clientConfig.listenerConfigs.push(this.parseImportConfig(listenerConfig)); } }; ConfigBuilder.prototype.handleSerialization = function (jsonObject) { for (var key in jsonObject) { if (key === 'defaultNumberType') { this.clientConfig.serializationConfig.defaultNumberType = Util_1.tryGetString(jsonObject[key]); } else if (key === 'isBigEndian') { this.clientConfig.serializationConfig.isBigEndian = Util_1.tryGetBoolean(jsonObject[key]); } else if (key === 'portableVersion') { this.clientConfig.serializationConfig.portableVersion = Util_1.tryGetNumber(jsonObject[key]); } else if (key === 'dataSerializableFactories') { for (var index in jsonObject[key]) { var factory = jsonObject[key][index]; this.clientConfig.serializationConfig .dataSerializableFactoryConfigs[factory.factoryId] = this.parseImportConfig(factory); } } else if (key === 'portableFactories') { for (var index in jsonObject[key]) { var factory = jsonObject[key][index]; this.clientConfig.serializationConfig .portableFactoryConfigs[factory.factoryId] = this.parseImportConfig(factory); } } else if (key === 'globalSerializer') { var globalSerializer = jsonObject[key]; this.clientConfig.serializationConfig.globalSerializerConfig = this.parseImportConfig(globalSerializer); } else if (key === 'serializers') { this.handleSerializers(jsonObject[key]); } } }; ConfigBuilder.prototype.handleSerializers = function (jsonObject) { var serializersArray = Util_1.tryGetArray(jsonObject); for (var index in serializersArray) { var serializer = serializersArray[index]; this.clientConfig.serializationConfig.customSerializerConfigs[serializer.typeId] = this.parseImportConfig(serializer); } }; ConfigBuilder.prototype.handleNearCaches = function (jsonObject) { var nearCachesArray = Util_1.tryGetArray(jsonObject); for (var index in nearCachesArray) { var ncConfig = nearCachesArray[index]; var nearCacheConfig = new NearCacheConfig_1.NearCacheConfig(); for (var name in ncConfig) { if (name === 'name') { nearCacheConfig.name = Util_1.tryGetString(ncConfig[name]); } else if (name === 'invalidateOnChange') { nearCacheConfig.invalidateOnChange = Util_1.tryGetBoolean(ncConfig[name]); } else if (name === 'maxIdleSeconds') { nearCacheConfig.maxIdleSeconds = Util_1.tryGetNumber(ncConfig[name]); } else if (name === 'inMemoryFormat') { nearCacheConfig.inMemoryFormat = Util_1.tryGetEnum(InMemoryFormat_1.InMemoryFormat, ncConfig[name]); } else if (name === 'timeToLiveSeconds') { nearCacheConfig.timeToLiveSeconds = Util_1.tryGetNumber(ncConfig[name]); } else if (name === 'evictionPolicy') { nearCacheConfig.evictionPolicy = Util_1.tryGetEnum(EvictionPolicy_1.EvictionPolicy, ncConfig[name]); } else if (name === 'evictionMaxSize') { nearCacheConfig.evictionMaxSize = Util_1.tryGetNumber(ncConfig[name]); } else if (name === 'evictionSamplingCount') { nearCacheConfig.evictionSamplingCount = Util_1.tryGetNumber(ncConfig[name]); } else if (name === 'evictionSamplingPoolSize') { nearCacheConfig.evictionSamplingPoolSize = Util_1.tryGetNumber(ncConfig[name]); } } this.clientConfig.nearCacheConfigs[nearCacheConfig.name] = nearCacheConfig; } }; ConfigBuilder.prototype.handleReliableTopics = function (jsonObject) { var rtConfigsArray = Util_1.tryGetArray(jsonObject); for (var index in rtConfigsArray) { var jsonRtCfg = rtConfigsArray[index]; var reliableTopicConfig = new ReliableTopicConfig_1.ReliableTopicConfig(); for (var name in jsonRtCfg) { if (name === 'name') { reliableTopicConfig.name = jsonRtCfg[name]; } else if (name === 'readBatchSize') { reliableTopicConfig.readBatchSize = jsonRtCfg[name]; } else if (name === 'overloadPolicy') { reliableTopicConfig.overloadPolicy = Util_1.tryGetEnum(TopicOverloadPolicy_1.TopicOverloadPolicy, jsonRtCfg[name]); } } this.clientConfig.reliableTopicConfigs[reliableTopicConfig.name] = reliableTopicConfig; } }; ConfigBuilder.prototype.handleFlakeIds = function (jsonObject) { var flakeIdsArray = Util_1.tryGetArray(jsonObject); for (var index in flakeIdsArray) { var fidConfig = flakeIdsArray[index]; var flakeIdConfig = new FlakeIdGeneratorConfig_1.FlakeIdGeneratorConfig(); for (var name in fidConfig) { if (name === 'name') { flakeIdConfig.name = Util_1.tryGetString(fidConfig[name]); } else if (name === 'prefetchCount') { flakeIdConfig.prefetchCount = Util_1.tryGetNumber(fidConfig[name]); } else if (name === 'prefetchValidityMillis') { flakeIdConfig.prefetchValidityMillis = Util_1.tryGetNumber(fidConfig[name]); } } this.clientConfig.flakeIdGeneratorConfigs[flakeIdConfig.name] = flakeIdConfig; } }; return ConfigBuilder; }()); exports.ConfigBuilder = ConfigBuilder; //# sourceMappingURL=ConfigBuilder.js.map