Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 36DA0187E4 for ; Tue, 10 Nov 2015 06:57:44 +0000 (UTC) Received: (qmail 56542 invoked by uid 500); 10 Nov 2015 06:57:44 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 56495 invoked by uid 500); 10 Nov 2015 06:57:44 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 56483 invoked by uid 99); 10 Nov 2015 06:57:43 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Nov 2015 06:57:43 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id CEB95DFF1B; Tue, 10 Nov 2015 06:57:43 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: anovikov@apache.org To: commits@ignite.apache.org Date: Tue, 10 Nov 2015 06:57:43 -0000 Message-Id: <8b402fd484dc424c9826f2295173d3fa@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/7] ignite git commit: IGNITE-1857 Generate configuration zip on client side. Repository: ignite Updated Branches: refs/heads/ignite-843-rc1 0a76801ce -> 2dc76991a http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/routes/generator/generator-pom.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-pom.js b/modules/control-center-web/src/main/js/routes/generator/generator-pom.js deleted file mode 100644 index b7bd05e..0000000 --- a/modules/control-center-web/src/main/js/routes/generator/generator-pom.js +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -// For server side we should load required libraries. -if (typeof window === 'undefined') { - _ = require('lodash'); - - $generatorCommon = require('./generator-common'); -} - -// pom.xml generation entry point. -$generatorPom = {}; - -/** - * Generate pom.xml. - * - * @param caches Collection of caches to take info about used JDBC dialects. - * @param igniteVersion Ignite version for Ignite dependencies. - * @param res Resulting output with generated pom. - * @returns {string} Generated content. - */ -$generatorPom.pom = function (caches, igniteVersion, res) { - if (!res) - res = $generatorCommon.builder(); - - var dialect = {}; - - _.forEach(caches, function (cache) { - if (cache.cacheStoreFactory && cache.cacheStoreFactory.kind == 'CacheJdbcPojoStoreFactory') { - if (cache.cacheStoreFactory.CacheJdbcPojoStoreFactory) { - dialect[cache.cacheStoreFactory.CacheJdbcPojoStoreFactory.dialect] = true; - } - } - }); - - function addProperty(tag, val) { - res.line('<' + tag + '>' + val + ''); - } - - function addDependency(groupId, artifactId, version, jar) { - res.startBlock(''); - addProperty('groupId', groupId); - addProperty('artifactId', artifactId); - addProperty('version', version); - - if (jar) { - addProperty('scope', 'system'); - addProperty('systemPath', '${project.basedir}/jdbc-drivers/' + jar); - } - - res.endBlock(''); - } - - function addResource(dir, exclude) { - res.startBlock(''); - if (dir) - addProperty('directory', dir); - - if (exclude) { - res.startBlock(''); - addProperty('exclude', exclude); - res.endBlock(''); - } - - res.endBlock(''); - } - - res.line(''); - - res.needEmptyLine = true; - - res.line(''); - - res.needEmptyLine = true; - - res.startBlock(''); - - res.line('4.0.0'); - - res.needEmptyLine = true; - - addProperty('groupId', 'org.apache.ignite'); - addProperty('artifactId', 'ignite-generated-model'); - addProperty('version', igniteVersion); - - res.needEmptyLine = true; - - res.startBlock(''); - - addDependency('org.apache.ignite', 'ignite-core', igniteVersion); - addDependency('org.apache.ignite', 'ignite-spring', igniteVersion); - addDependency('org.apache.ignite', 'ignite-indexing', igniteVersion); - addDependency('org.apache.ignite', 'ignite-rest-http', igniteVersion); - - if (dialect.MySQL) - addDependency('mysql', 'mysql-connector-java', '5.1.37'); - - if (dialect.PosgreSQL) - addDependency('org.postgresql', 'postgresql', '9.4-1204-jdbc42'); - - if (dialect.H2) - addDependency('com.h2database', 'h2', '1.3.175'); - - if (dialect.Oracle) - addDependency('oracle', 'jdbc', '11.2', 'ojdbc6.jar'); - - if (dialect.DB2) - addDependency('ibm', 'jdbc', '4.19.26', 'db2jcc4.jar'); - - if (dialect.SQLServer) - addDependency('microsoft', 'jdbc', '4.1', 'sqljdbc41.jar'); - - res.endBlock(''); - - res.needEmptyLine = true; - - res.startBlock(''); - res.startBlock(''); - addResource('src/main/java', '**/*.java'); - addResource('src/main/resources'); - res.endBlock(''); - - res.startBlock(''); - res.startBlock(''); - addProperty('artifactId', 'maven-compiler-plugin'); - addProperty('version', '3.1'); - res.startBlock(''); - addProperty('source', '1.7'); - addProperty('target', '1.7'); - res.endBlock(''); - res.endBlock(''); - res.endBlock(''); - res.endBlock(''); - - res.endBlock(''); - - return res; -}; - -// For server side we should export properties generation entry point. -if (typeof window === 'undefined') { - module.exports = $generatorPom; -} http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/routes/generator/generator-properties.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-properties.js b/modules/control-center-web/src/main/js/routes/generator/generator-properties.js deleted file mode 100644 index 5a1dafe..0000000 --- a/modules/control-center-web/src/main/js/routes/generator/generator-properties.js +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -// For server side we should load required libraries. -if (typeof window === 'undefined') { - _ = require('lodash'); - - $generatorCommon = require('./generator-common'); -} - -// Properties generation entry point. -$generatorProperties = {}; - -/** - * Generate properties file with properties stubs for stores data sources. - * - * @param cluster Configuration to process. - * @param res Resulting output with generated properties. - * @returns {string} Generated content. - */ -$generatorProperties.dataSourcesProperties = function (cluster, res) { - var datasources = []; - - if (cluster.caches && cluster.caches.length > 0) { - _.forEach(cluster.caches, function (cache) { - if (cache.cacheStoreFactory && cache.cacheStoreFactory.kind) { - var storeFactory = cache.cacheStoreFactory[cache.cacheStoreFactory.kind]; - - if (storeFactory.dialect) { - var beanId = storeFactory.dataSourceBean; - - if (!_.contains(datasources, beanId)) { - datasources.push(beanId); - - if (!res) { - res = $generatorCommon.builder(); - - res.line('# ' + $generatorCommon.mainComment()); - } - - res.needEmptyLine = true; - - switch (storeFactory.dialect) { - case 'DB2': - res.line(beanId + '.jdbc.server_name=YOUR_JDBC_SERVER_NAME'); - res.line(beanId + '.jdbc.port_number=YOUR_JDBC_PORT_NUMBER'); - res.line(beanId + '.jdbc.database_name=YOUR_JDBC_DATABASE_TYPE'); - res.line(beanId + '.jdbc.driver_type=YOUR_JDBC_DRIVER_TYPE'); - break; - - default: - res.line(beanId + '.jdbc.url=YOUR_JDBC_URL'); - } - - res.line(beanId + '.jdbc.username=YOUR_USER_NAME'); - res.line(beanId + '.jdbc.password=YOUR_PASSWORD'); - res.line(); - } - } - } - }); - } - - return res; -}; - -/** - * Generate properties file with properties stubs for cluster SSL configuration. - * - * @param cluster Cluster to get SSL configuration. - * @param res Optional configuration presentation builder object. - * @returns Configuration presentation builder object - */ -$generatorProperties.sslProperties = function (cluster, res) { - if (cluster.sslEnabled && cluster.sslContextFactory) { - if (!res) { - res = $generatorCommon.builder(); - - res.line('# ' + $generatorCommon.mainComment()); - } - - res.needEmptyLine = true; - - if ($commonUtils.isDefinedAndNotEmpty(cluster.sslContextFactory.keyStoreFilePath)) - res.line('ssl.key.storage.password=YOUR_SSL_KEY_STORAGE_PASSWORD'); - - if ($commonUtils.isDefinedAndNotEmpty(cluster.sslContextFactory.trustStoreFilePath)) - res.line('ssl.trust.storage.password=YOUR_SSL_TRUST_STORAGE_PASSWORD'); - } - - return res; -}; - -// For server side we should export properties generation entry point. -if (typeof window === 'undefined') { - module.exports = $generatorProperties; -} http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/routes/generator/generator-readme.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-readme.js b/modules/control-center-web/src/main/js/routes/generator/generator-readme.js deleted file mode 100644 index 5278e7f..0000000 --- a/modules/control-center-web/src/main/js/routes/generator/generator-readme.js +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -// For server side we should load required libraries. -if (typeof window === 'undefined') { - $generatorCommon = require('./generator-common'); -} - -// README.txt generation entry point. -$generatorReadme = {}; - -/** - * Generate README.txt. - * - * @param res Resulting output with generated pom. - * @returns {string} Generated content. - */ -$generatorReadme.readme = function (res) { - if (!res) - res = $generatorCommon.builder(); - - res.line('Content of this folder was generated by Apache Ignite Web Console'); - res.line('================================================================='); - - res.needEmptyLine = true; - - res.line('Ignite ships with CacheJdbcPojoStore, which is out-of-the-box JDBC'); - res.line('implementation of the IgniteCacheStore interface, and automatically'); - res.line('handles all the write-through and read-through logic.'); - - res.needEmptyLine = true; - - res.line('You can use generated configuration and POJO classes as part of your application.'); - - res.needEmptyLine = true; - - res.line('Note, in case of using proprietary JDBC drivers (Oracle, IBM DB2, Microsoft SQL Server)'); - res.line('you should download them and copy into ./jdbc-drivers folder.'); - - return res; -}; - -// For server side we should export properties generation entry point. -if (typeof window === 'undefined') { - module.exports = $generatorReadme; -} http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/routes/generator/generator-xml.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js deleted file mode 100644 index 38885c5..0000000 --- a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js +++ /dev/null @@ -1,1493 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -// For server side we should load required libraries. -if (typeof window === 'undefined') { - _ = require('lodash'); - - $commonUtils = require('../../helpers/common-utils'); - $dataStructures = require('../../helpers/data-structures'); - $generatorCommon = require('./generator-common'); -} - -// XML generation entry point. -$generatorXml = {}; - -// Do XML escape. -$generatorXml.escape = function (s) { - if (typeof(s) != 'string') - return s; - - return s.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); -}; - -// Add XML element. -$generatorXml.element = function (res, tag, attr1, val1, attr2, val2) { - var elem = '<' + tag; - - if (attr1) - elem += ' ' + attr1 + '="' + val1 + '"'; - - if (attr2) - elem += ' ' + attr2 + '="' + val2 + '"'; - - elem += '/>'; - - res.emptyLineIfNeeded(); - res.line(elem); -}; - -// Add property. -$generatorXml.property = function (res, obj, propName, setterName, dflt) { - if ($commonUtils.isDefined(obj)) { - var val = obj[propName]; - - if ($commonUtils.isDefinedAndNotEmpty(val)) { - var hasDflt = $commonUtils.isDefined(dflt); - - // Add to result if no default provided or value not equals to default. - if (!hasDflt || (hasDflt && val != dflt)) { - $generatorXml.element(res, 'property', 'name', setterName ? setterName : propName, 'value', $generatorXml.escape(val)); - - return true; - } - } - } - - return false; -}; - -// Add property for class name. -$generatorXml.classNameProperty = function (res, obj, propName) { - var val = obj[propName]; - - if ($commonUtils.isDefined(val)) - $generatorXml.element(res, 'property', 'name', propName, 'value', $dataStructures.fullClassName(val)); -}; - -// Add list property. -$generatorXml.listProperty = function (res, obj, propName, listType, rowFactory) { - var val = obj[propName]; - - if (val && val.length > 0) { - res.emptyLineIfNeeded(); - - if (!listType) - listType = 'list'; - - if (!rowFactory) - rowFactory = function (val) { - return '' + $generatorXml.escape(val) + '' - }; - - res.startBlock(''); - res.startBlock('<' + listType + '>'); - - _.forEach(val, function(v) { - res.line(rowFactory(v)); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } -}; - -// Add array property -$generatorXml.arrayProperty = function (res, obj, propName, descr, rowFactory) { - var val = obj[propName]; - - if (val && val.length > 0) { - res.emptyLineIfNeeded(); - - if (!rowFactory) - rowFactory = function (val) { - return ''; - }; - - res.startBlock(''); - res.startBlock(''); - - _.forEach(val, function (v) { - res.append(rowFactory(v)) - }); - - res.endBlock(''); - res.endBlock(''); - } -}; - -// Add bean property. -$generatorXml.beanProperty = function (res, bean, beanPropName, desc, createBeanAlthoughNoProps) { - var props = desc.fields; - - if (bean && $commonUtils.hasProperty(bean, props)) { - res.startSafeBlock(); - - res.emptyLineIfNeeded(); - res.startBlock(''); - res.startBlock(''); - - var hasData = false; - - _.forIn(props, function(descr, propName) { - if (props.hasOwnProperty(propName)) { - if (descr) { - switch (descr.type) { - case 'list': - $generatorXml.listProperty(res, bean, propName, descr.setterName); - - break; - - case 'array': - $generatorXml.arrayProperty(res, bean, propName, descr); - - break; - - case 'propertiesAsList': - var val = bean[propName]; - - if (val && val.length > 0) { - res.startBlock(''); - res.startBlock(''); - - _.forEach(val, function(nameAndValue) { - var eqIndex = nameAndValue.indexOf('='); - if (eqIndex >= 0) { - res.line('' + - $generatorXml.escape(nameAndValue.substr(eqIndex + 1)) + ''); - } - }); - - res.endBlock(''); - res.endBlock(''); - - hasData = true; - } - - break; - - case 'bean': - if ($commonUtils.isDefinedAndNotEmpty(bean[propName])) { - res.startBlock(''); - res.line(''); - res.endBlock(''); - - hasData = true; - } - - break; - - default: - if ($generatorXml.property(res, bean, propName, descr.setterName, descr.dflt)) - hasData = true; - } - } - else - if ($generatorXml.property(res, bean, propName)) - hasData = true; - } - }); - - res.endBlock(''); - res.endBlock(''); - - if (!hasData) - res.rollbackSafeBlock(); - } - else if (createBeanAlthoughNoProps) { - res.emptyLineIfNeeded(); - res.line(''); - res.line(' '); - res.line(''); - } -}; - -// Generate eviction policy. -$generatorXml.evictionPolicy = function (res, evtPlc, propName) { - if (evtPlc && evtPlc.kind) { - $generatorXml.beanProperty(res, evtPlc[evtPlc.kind.toUpperCase()], propName, - $generatorCommon.EVICTION_POLICIES[evtPlc.kind], true); - } -}; - -// Generate discovery. -$generatorXml.clusterGeneral = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cluster, 'name', 'gridName'); - - if (cluster.discovery) { - res.startBlock(''); - res.startBlock(''); - res.startBlock(''); - - var d = cluster.discovery; - - switch (d.kind) { - case 'Multicast': - res.startBlock(''); - - if (d.Multicast) { - $generatorXml.property(res, d.Multicast, 'multicastGroup'); - $generatorXml.property(res, d.Multicast, 'multicastPort'); - $generatorXml.property(res, d.Multicast, 'responseWaitTime'); - $generatorXml.property(res, d.Multicast, 'addressRequestAttempts'); - $generatorXml.property(res, d.Multicast, 'localAddress'); - $generatorXml.listProperty(res, d.Multicast, 'addresses'); - } - - res.endBlock(''); - - break; - - case 'Vm': - res.startBlock(''); - - if (d.Vm) { - $generatorXml.listProperty(res, d.Vm, 'addresses'); - } - - res.endBlock(''); - - break; - - case 'S3': - res.startBlock(''); - - if (d.S3) { - if (d.S3.bucketName) - res.line(''); - } - - res.endBlock(''); - - break; - - case 'Cloud': - res.startBlock(''); - - if (d.Cloud) { - $generatorXml.property(res, d.Cloud, 'credential'); - $generatorXml.property(res, d.Cloud, 'credentialPath'); - $generatorXml.property(res, d.Cloud, 'identity'); - $generatorXml.property(res, d.Cloud, 'provider'); - $generatorXml.listProperty(res, d.Cloud, 'regions'); - $generatorXml.listProperty(res, d.Cloud, 'zones'); - } - - res.endBlock(''); - - break; - - case 'GoogleStorage': - res.startBlock(''); - - if (d.GoogleStorage) { - $generatorXml.property(res, d.GoogleStorage, 'projectName'); - $generatorXml.property(res, d.GoogleStorage, 'bucketName'); - $generatorXml.property(res, d.GoogleStorage, 'serviceAccountP12FilePath'); - $generatorXml.property(res, d.GoogleStorage, 'serviceAccountId'); - } - - res.endBlock(''); - - break; - - case 'Jdbc': - res.startBlock(''); - - if (d.Jdbc) { - res.line(''); - } - - res.endBlock(''); - - break; - - case 'SharedFs': - res.startBlock(''); - - if (d.SharedFs) { - $generatorXml.property(res, d.SharedFs, 'path'); - } - - res.endBlock(''); - - break; - - default: - throw "Unknown discovery kind: " + d.kind; - } - - res.endBlock(''); - - $generatorXml.clusterDiscovery(d, res); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate atomics group. -$generatorXml.clusterAtomics = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - var atomics = cluster.atomicConfiguration; - - if ($commonUtils.hasAtLeastOneProperty(atomics, ['cacheMode', 'atomicSequenceReserveSize', 'backups'])) { - res.startSafeBlock(); - - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - var cacheMode = atomics.cacheMode ? atomics.cacheMode : 'PARTITIONED'; - - var hasData = cacheMode != 'PARTITIONED'; - - $generatorXml.property(res, atomics, 'cacheMode'); - - hasData = $generatorXml.property(res, atomics, 'atomicSequenceReserveSize') || hasData; - - if (cacheMode == 'PARTITIONED') - hasData = $generatorXml.property(res, atomics, 'backups') || hasData; - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - - if (!hasData) - res.rollbackSafeBlock(); - } - - return res; -}; - -// Generate communication group. -$generatorXml.clusterCommunication = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.beanProperty(res, cluster.communication, 'communicationSpi', $generatorCommon.COMMUNICATION_CONFIGURATION); - - $generatorXml.property(res, cluster, 'networkTimeout', undefined, 5000); - $generatorXml.property(res, cluster, 'networkSendRetryDelay', undefined, 1000); - $generatorXml.property(res, cluster, 'networkSendRetryCount', undefined, 3); - $generatorXml.property(res, cluster, 'segmentCheckFrequency'); - $generatorXml.property(res, cluster, 'waitForSegmentOnStart', null, false); - $generatorXml.property(res, cluster, 'discoveryStartupDelay', undefined, 600000); - - res.needEmptyLine = true; - - return res; -}; - -/** - * XML generator for cluster's REST access configuration. - * - * @param cluster Cluster to get REST configuration. - * @param res Optional configuration presentation builder object. - * @returns Configuration presentation builder object - */ -$generatorXml.clusterConnector = function(cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - if ($commonUtils.isDefined(cluster.connector) && cluster.connector.enabled) { - var cfg = _.cloneDeep($generatorCommon.CONNECTOR_CONFIGURATION); - - if (cluster.connector.sslEnabled) { - cfg.fields.sslClientAuth = {dflt: false}; - cfg.fields.sslFactory = {type: 'bean'}; - } - - $generatorXml.beanProperty(res, cluster.connector, 'connectorConfiguration', cfg, true); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate deployment group. -$generatorXml.clusterDeployment = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - if ($generatorXml.property(res, cluster, 'deploymentMode', null, 'SHARED')) - res.needEmptyLine = true; - - var p2pEnabled = cluster.peerClassLoadingEnabled; - - if ($commonUtils.isDefined(p2pEnabled)) { - $generatorXml.property(res, cluster, 'peerClassLoadingEnabled', null, false); - - if (p2pEnabled) { - $generatorXml.property(res, cluster, 'peerClassLoadingMissedResourcesCacheSize'); - $generatorXml.property(res, cluster, 'peerClassLoadingThreadPoolSize'); - $generatorXml.listProperty(res, cluster, 'peerClassLoadingLocalClassPathExclude'); - } - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate discovery group. -$generatorXml.clusterDiscovery = function (disco, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, disco, 'localAddress'); - $generatorXml.property(res, disco, 'localPort', undefined, 47500); - $generatorXml.property(res, disco, 'localPortRange', undefined, 100); - if ($commonUtils.isDefinedAndNotEmpty(disco.addressResolver)) - $generatorXml.beanProperty(res, disco, 'addressResolver', {className: disco.addressResolver}, true); - $generatorXml.property(res, disco, 'socketTimeout', undefined, 5000); - $generatorXml.property(res, disco, 'ackTimeout', undefined, 5000); - $generatorXml.property(res, disco, 'maxAckTimeout', undefined, 600000); - $generatorXml.property(res, disco, 'discoNetworkTimeout', 'setNetworkTimeout', 5000); - $generatorXml.property(res, disco, 'joinTimeout', undefined, 0); - $generatorXml.property(res, disco, 'threadPriority', undefined, 10); - $generatorXml.property(res, disco, 'heartbeatFrequency', undefined, 2000); - $generatorXml.property(res, disco, 'maxMissedHeartbeats', undefined, 1); - $generatorXml.property(res, disco, 'maxMissedClientHeartbeats', undefined, 5); - $generatorXml.property(res, disco, 'topHistorySize', undefined, 100); - if ($commonUtils.isDefinedAndNotEmpty(disco.listener)) - $generatorXml.beanProperty(res, disco, 'listener', {className: disco.listener}, true); - if ($commonUtils.isDefinedAndNotEmpty(disco.dataExchange)) - $generatorXml.beanProperty(res, disco, 'dataExchange', {className: disco.dataExchange}, true); - if ($commonUtils.isDefinedAndNotEmpty(disco.metricsProvider)) - $generatorXml.beanProperty(res, disco, 'metricsProvider', {className: disco.metricsProvider}, true); - $generatorXml.property(res, disco, 'reconnectCount', undefined, 10); - $generatorXml.property(res, disco, 'statisticsPrintFrequency', undefined, 0); - $generatorXml.property(res, disco, 'ipFinderCleanFrequency', undefined, 60000); - if ($commonUtils.isDefinedAndNotEmpty(disco.authenticator)) - $generatorXml.beanProperty(res, disco, 'authenticator', {className: disco.authenticator}, true); - $generatorXml.property(res, disco, 'forceServerMode', undefined, false); - $generatorXml.property(res, disco, 'clientReconnectDisabled', undefined, false); - - res.needEmptyLine = true; - - return res; -}; - -// Generate events group. -$generatorXml.clusterEvents = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - if (cluster.includeEventTypes && cluster.includeEventTypes.length > 0) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - - if (cluster.includeEventTypes.length == 1) - res.line(''); - else { - res.startBlock(''); - - _.forEach(cluster.includeEventTypes, function(eventGroup, ix) { - if (ix > 0) - res.line(); - - res.line(''); - - var eventList = $dataStructures.EVENT_GROUPS[eventGroup]; - - _.forEach(eventList, function(event) { - res.line('') - }); - }); - - res.endBlock(''); - } - - res.endBlock(''); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate marshaller group. -$generatorXml.clusterMarshaller = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - var marshaller = cluster.marshaller; - - if (marshaller && marshaller.kind) { - $generatorXml.beanProperty(res, marshaller[marshaller.kind], 'marshaller', $generatorCommon.MARSHALLERS[marshaller.kind], true); - - res.needEmptyLine = true; - } - - $generatorXml.property(res, cluster, 'marshalLocalJobs', null, false); - $generatorXml.property(res, cluster, 'marshallerCacheKeepAliveTime'); - $generatorXml.property(res, cluster, 'marshallerCacheThreadPoolSize'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate metrics group. -$generatorXml.clusterMetrics = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cluster, 'metricsExpireTime'); - $generatorXml.property(res, cluster, 'metricsHistorySize'); - $generatorXml.property(res, cluster, 'metricsLogFrequency'); - $generatorXml.property(res, cluster, 'metricsUpdateFrequency'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate swap group. -$generatorXml.clusterSwap = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - if (cluster.swapSpaceSpi && cluster.swapSpaceSpi.kind == 'FileSwapSpaceSpi') { - $generatorXml.beanProperty(res, cluster.swapSpaceSpi.FileSwapSpaceSpi, 'swapSpaceSpi', - $generatorCommon.SWAP_SPACE_SPI, true); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate time group. -$generatorXml.clusterTime = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cluster, 'clockSyncSamples'); - $generatorXml.property(res, cluster, 'clockSyncFrequency'); - $generatorXml.property(res, cluster, 'timeServerPortBase'); - $generatorXml.property(res, cluster, 'timeServerPortRange'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate thread pools group. -$generatorXml.clusterPools = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cluster, 'publicThreadPoolSize'); - $generatorXml.property(res, cluster, 'systemThreadPoolSize'); - $generatorXml.property(res, cluster, 'managementThreadPoolSize'); - $generatorXml.property(res, cluster, 'igfsThreadPoolSize'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate transactions group. -$generatorXml.clusterTransactions = function (cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.beanProperty(res, cluster.transactionConfiguration, 'transactionConfiguration', $generatorCommon.TRANSACTION_CONFIGURATION); - - res.needEmptyLine = true; - - return res; -}; - -/** - * XML generator for cluster's SSL configuration. - * - * @param cluster Cluster to get SSL configuration. - * @param res Optional configuration presentation builder object. - * @returns Configuration presentation builder object - */ -$generatorXml.clusterSsl = function(cluster, res) { - if (!res) - res = $generatorCommon.builder(); - - if (cluster.sslEnabled && $commonUtils.isDefined(cluster.sslContextFactory)) { - cluster.sslContextFactory.keyStorePassword = - $commonUtils.isDefinedAndNotEmpty(cluster.sslContextFactory.keyStoreFilePath) ? '${ssl.key.storage.password}' : undefined; - - cluster.sslContextFactory.trustStorePassword = - $commonUtils.isDefinedAndNotEmpty(cluster.sslContextFactory.trustStoreFilePath) ? '${ssl.trust.storage.password}' : undefined; - - var propsDesc = $commonUtils.isDefinedAndNotEmpty(cluster.sslContextFactory.trustManagers) ? - $generatorCommon.SSL_CONFIGURATION_TRUST_MANAGER_FACTORY : - $generatorCommon.SSL_CONFIGURATION_TRUST_FILE_FACTORY; - - $generatorXml.beanProperty(res, cluster.sslContextFactory, 'sslContextFactory', propsDesc, true); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate cache general group. -$generatorXml.cacheGeneral = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cache, 'name'); - - $generatorXml.property(res, cache, 'cacheMode'); - $generatorXml.property(res, cache, 'atomicityMode'); - - if (cache.cacheMode == 'PARTITIONED') - $generatorXml.property(res, cache, 'backups'); - - $generatorXml.property(res, cache, 'readFromBackup'); - $generatorXml.property(res, cache, 'copyOnRead'); - $generatorXml.property(res, cache, 'invalidate'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache memory group. -$generatorXml.cacheMemory = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cache, 'memoryMode'); - $generatorXml.property(res, cache, 'offHeapMaxMemory'); - - res.needEmptyLine = true; - - $generatorXml.evictionPolicy(res, cache.evictionPolicy, 'evictionPolicy'); - - res.needEmptyLine = true; - - $generatorXml.property(res, cache, 'swapEnabled'); - $generatorXml.property(res, cache, 'startSize'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache query & indexing group. -$generatorXml.cacheQuery = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cache, 'sqlOnheapRowCacheSize'); - $generatorXml.property(res, cache, 'longQueryWarningTimeout'); - - if (cache.indexedTypes && cache.indexedTypes.length > 0) { - res.startBlock(''); - res.startBlock(''); - - _.forEach(cache.indexedTypes, function(pair) { - res.line('' + $dataStructures.fullClassName(pair.keyClass) + ''); - res.line('' + $dataStructures.fullClassName(pair.valueClass) + ''); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } - - $generatorXml.listProperty(res, cache, 'sqlFunctionClasses'); - - $generatorXml.property(res, cache, 'sqlEscapeAll'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache store group. -$generatorXml.cacheStore = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - if (cache.cacheStoreFactory && cache.cacheStoreFactory.kind) { - var factoryKind = cache.cacheStoreFactory.kind; - - var storeFactory = cache.cacheStoreFactory[factoryKind]; - - if (storeFactory) { - if (factoryKind == 'CacheJdbcPojoStoreFactory') { - res.startBlock(''); - res.startBlock(''); - res.startBlock(''); - res.startBlock(''); - - $generatorXml.property(res, storeFactory, 'dataSourceBean'); - - res.startBlock(''); - res.line(''); - res.endBlock(''); - - var metadatas = cache.metadatas; - - if (metadatas && metadatas.length > 0) { - res.startBlock(''); - res.startBlock(''); - - _.forEach(metadatas, function (meta) { - res.startBlock(''); - - $generatorXml.classNameProperty(res, meta, 'keyType'); - $generatorXml.property(res, meta, 'valueType'); - $generatorXml.property(res, meta, 'keepSerialized', null, null, false); - - res.endBlock(''); - }); - - res.endBlock(''); - res.endBlock(''); - } - - res.endBlock(''); - res.endBlock(""); - res.endBlock(''); - res.endBlock("") - } - else { - $generatorXml.beanProperty(res, storeFactory, 'cacheStoreFactory', $generatorCommon.STORE_FACTORIES[factoryKind], true); - - if (storeFactory.dialect) { - if (_.findIndex(res.datasources, function (ds) { - return ds.dataSourceBean == storeFactory.dataSourceBean; - }) < 0) { - res.datasources.push({ - dataSourceBean: storeFactory.dataSourceBean, - className: $generatorCommon.DATA_SOURCES[storeFactory.dialect], - dialect: storeFactory.dialect - }); - } - } - } - - res.needEmptyLine = true; - } - } - - $generatorXml.property(res, cache, 'loadPreviousValue'); - $generatorXml.property(res, cache, 'readThrough'); - $generatorXml.property(res, cache, 'writeThrough'); - - res.needEmptyLine = true; - - $generatorXml.property(res, cache, 'writeBehindEnabled'); - $generatorXml.property(res, cache, 'writeBehindBatchSize'); - $generatorXml.property(res, cache, 'writeBehindFlushSize'); - $generatorXml.property(res, cache, 'writeBehindFlushFrequency'); - $generatorXml.property(res, cache, 'writeBehindFlushThreadCount'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache concurrency group. -$generatorXml.cacheConcurrency = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cache, 'maxConcurrentAsyncOperations'); - $generatorXml.property(res, cache, 'defaultLockTimeout'); - $generatorXml.property(res, cache, 'atomicWriteOrderMode'); - $generatorXml.property(res, cache, 'writeSynchronizationMode'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache rebalance group. -$generatorXml.cacheRebalance = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - if (cache.cacheMode != 'LOCAL') { - $generatorXml.property(res, cache, 'rebalanceMode'); - $generatorXml.property(res, cache, 'rebalanceThreadPoolSize'); - $generatorXml.property(res, cache, 'rebalanceBatchSize'); - $generatorXml.property(res, cache, 'rebalanceOrder'); - $generatorXml.property(res, cache, 'rebalanceDelay'); - $generatorXml.property(res, cache, 'rebalanceTimeout'); - $generatorXml.property(res, cache, 'rebalanceThrottle'); - - res.needEmptyLine = true; - } - - if (cache.igfsAffinnityGroupSize) { - res.startBlock(''); - res.startBlock(''); - res.line(''); - res.endBlock(''); - res.endBlock(''); - } - - return res; -}; - -// Generate cache server near cache group. -$generatorXml.cacheServerNearCache = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - if (cache.cacheMode == 'PARTITIONED' && cache.nearCacheEnabled) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - if (cache.nearConfiguration) { - if (cache.nearConfiguration.nearStartSize) - $generatorXml.property(res, cache.nearConfiguration, 'nearStartSize'); - - - $generatorXml.evictionPolicy(res, cache.nearConfiguration.nearEvictionPolicy, 'nearEvictionPolicy'); - } - - - - res.endBlock(''); - res.endBlock(''); - } - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache statistics group. -$generatorXml.cacheStatistics = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, cache, 'statisticsEnabled'); - $generatorXml.property(res, cache, 'managementEnabled'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate metadata query fields. -$generatorXml.metadataQueryFields = function (res, meta) { - var fields = meta.fields; - - if (fields && fields.length > 0) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - _.forEach(fields, function (field) { - $generatorXml.element(res, 'entry', 'key', field.name.toUpperCase(), 'value', $dataStructures.fullClassName(field.className)); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } -}; - -// Generate metadata query fields. -$generatorXml.metadataQueryAliases = function (res, meta) { - var aliases = meta.aliases; - - if (aliases && aliases.length > 0) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - _.forEach(aliases, function (alias) { - $generatorXml.element(res, 'entry', 'key', alias.field, 'value', alias.alias); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } -}; - -// Generate metadata indexes. -$generatorXml.metadataQueryIndexes = function (res, meta) { - var indexes = meta.indexes; - - if (indexes && indexes.length > 0) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - _.forEach(indexes, function (index) { - res.startBlock(''); - - $generatorXml.property(res, index, 'name'); - $generatorXml.property(res, index, 'type'); - - var fields = index.fields; - - if (fields && fields.length > 0) { - res.startBlock(''); - res.startBlock(''); - - _.forEach(fields, function (field) { - $generatorXml.element(res, 'entry', 'key', field.name, 'value', field.direction); - }); - - res.endBlock(''); - res.endBlock(''); - } - - res.endBlock(''); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } -}; - -// Generate metadata db fields. -$generatorXml.metadataDatabaseFields = function (res, meta, fieldProp) { - var fields = meta[fieldProp]; - - if (fields && fields.length > 0) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - - res.startBlock(''); - - _.forEach(fields, function (field) { - res.startBlock(''); - - $generatorXml.property(res, field, 'databaseName'); - - res.startBlock(''); - res.line(''); - res.endBlock(''); - - $generatorXml.property(res, field, 'javaName'); - - $generatorXml.classNameProperty(res, field, 'javaType'); - - res.endBlock(''); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } -}; - -// Generate metadata general group. -$generatorXml.metadataGeneral = function(meta, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.classNameProperty(res, meta, 'keyType'); - $generatorXml.property(res, meta, 'valueType'); - - res.needEmptyLine = true; - - return res; -}; - -// Generate metadata for query group. -$generatorXml.metadataQuery = function(meta, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.metadataQueryFields(res, meta); - - $generatorXml.metadataQueryAliases(res, meta); - - $generatorXml.metadataQueryIndexes(res, meta); - - res.needEmptyLine = true; - - return res; -}; - -// Generate metadata for store group. -$generatorXml.metadataStore = function(meta, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, meta, 'databaseSchema'); - $generatorXml.property(res, meta, 'databaseTable'); - $generatorXml.property(res, meta, 'keepSerialized'); - - res.needEmptyLine = true; - - if (!$dataStructures.isJavaBuildInClass(meta.keyType)) - $generatorXml.metadataDatabaseFields(res, meta, 'keyFields'); - - $generatorXml.metadataDatabaseFields(res, meta, 'valueFields'); - - res.needEmptyLine = true; - - return res; -}; - -$generatorXml.cacheQueryMetadata = function(meta, res) { - if (!res) - res = $generatorCommon.builder(); - - res.startBlock(''); - - $generatorXml.classNameProperty(res, meta, 'keyType'); - $generatorXml.property(res, meta, 'valueType'); - - $generatorXml.metadataQuery(meta, res); - - res.endBlock(''); - - res.needEmptyLine = true; - - return res; -}; - -// Generate cache type metadata configs. -$generatorXml.cacheMetadatas = function(metadatas, res) { - if (!res) - res = $generatorCommon.builder(); - - if (metadatas && metadatas.length > 0) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - _.forEach(metadatas, function (meta) { - $generatorXml.cacheQueryMetadata(meta, res); - }); - - res.endBlock(''); - res.endBlock(''); - } - - return res; -}; - -// Generate cache configs. -$generatorXml.cache = function(cache, res) { - if (!res) - res = $generatorCommon.builder(); - - res.startBlock(''); - - $generatorXml.cacheGeneral(cache, res); - - $generatorXml.cacheMemory(cache, res); - - $generatorXml.cacheQuery(cache, res); - - $generatorXml.cacheStore(cache, res); - - $generatorXml.cacheConcurrency(cache, res); - - $generatorXml.cacheRebalance(cache, res); - - $generatorXml.cacheServerNearCache(cache, res); - - $generatorXml.cacheStatistics(cache, res); - - $generatorXml.cacheMetadatas(cache.metadatas, res); - - res.endBlock(''); - - return res; -}; - -// Generate caches configs. -$generatorXml.clusterCaches = function(caches, igfss, res) { - if (!res) - res = $generatorCommon.builder(); - - if ((caches && caches.length > 0) || (igfss && igfss.length > 0)) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - _.forEach(caches, function(cache) { - $generatorXml.cache(cache, res); - - res.needEmptyLine = true; - }); - - _.forEach(igfss, function(igfs) { - $generatorXml.cache($generatorCommon.igfsDataCache(igfs), res); - - res.needEmptyLine = true; - - $generatorXml.cache($generatorCommon.igfsMetaCache(igfs), res); - - res.needEmptyLine = true; - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate IGFSs configs. -$generatorXml.igfss = function(igfss, res) { - if (!res) - res = $generatorCommon.builder(); - - if ($commonUtils.isDefinedAndNotEmpty(igfss)) { - res.emptyLineIfNeeded(); - - res.startBlock(''); - res.startBlock(''); - - _.forEach(igfss, function(igfs) { - res.startBlock(''); - - $generatorXml.igfsGeneral(igfs, res); - $generatorXml.igfsIPC(igfs, res); - $generatorXml.igfsFragmentizer(igfs, res); - $generatorXml.igfsDualMode(igfs, res); - $generatorXml.igfsSecondFS(igfs, res); - $generatorXml.igfsMisc(igfs, res); - - res.endBlock(''); - - res.needEmptyLine = true; - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate IGFS IPC configuration. -$generatorXml.igfsIPC = function(igfs, res) { - if (!res) - res = $generatorCommon.builder(); - - if (igfs.ipcEndpointEnabled) { - $generatorXml.beanProperty(res, igfs.ipcEndpointConfiguration, 'ipcEndpointConfiguration', $generatorCommon.IGFS_IPC_CONFIGURATION, true); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate IGFS fragmentizer configuration. -$generatorXml.igfsFragmentizer = function(igfs, res) { - if (!res) - res = $generatorCommon.builder(); - - if (igfs.fragmentizerEnabled) { - $generatorXml.property(res, igfs, 'fragmentizerConcurrentFiles', undefined, 0); - $generatorXml.property(res, igfs, 'fragmentizerThrottlingBlockLength', undefined, 16777216); - $generatorXml.property(res, igfs, 'fragmentizerThrottlingDelay', undefined, 200); - - res.needEmptyLine = true; - } - else - $generatorXml.property(res, igfs, 'fragmentizerEnabled'); - - return res; -}; - -// Generate IGFS dual mode configuration. -$generatorXml.igfsDualMode = function(igfs, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, igfs, 'dualModeMaxPendingPutsSize', undefined, 0); - - if ($commonUtils.isDefinedAndNotEmpty(igfs.dualModePutExecutorService)) { - res.startBlock(''); - res.line(''); - res.endBlock(''); - } - - $generatorXml.property(res, igfs, 'dualModePutExecutorServiceShutdown', undefined, false); - - res.needEmptyLine = true; - - return res; -}; - -$generatorXml.igfsSecondFS = function(igfs, res) { - if (!res) - res = $generatorCommon.builder(); - - if (igfs.secondaryFileSystemEnabled) { - var secondFs = igfs.secondaryFileSystem || {}; - - res.startBlock(''); - - res.startBlock(''); - - var nameDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.userName); - var cfgDefined = $commonUtils.isDefinedAndNotEmpty(secondFs.cfgPath); - - if ($commonUtils.isDefinedAndNotEmpty(secondFs.uri)) - res.line(''); - else { - res.startBlock(''); - res.line(''); - res.endBlock(''); - } - - if (cfgDefined || nameDefined) { - if (cfgDefined) - res.line(''); - else { - res.startBlock(''); - res.line(''); - res.endBlock(''); - } - } - - if ($commonUtils.isDefinedAndNotEmpty(secondFs.userName)) - res.line(''); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate IGFS general configuration. -$generatorXml.igfsGeneral = function(igfs, res) { - if (!res) - res = $generatorCommon.builder(); - - if ($commonUtils.isDefinedAndNotEmpty(igfs.name)) { - igfs.dataCacheName = $generatorCommon.igfsDataCache(igfs).name; - igfs.metaCacheName = $generatorCommon.igfsMetaCache(igfs).name; - - $generatorXml.property(res, igfs, 'name'); - $generatorXml.property(res, igfs, 'dataCacheName'); - $generatorXml.property(res, igfs, 'metaCacheName'); - - res.needEmptyLine = true; - } - - return res; -}; - -// Generate IGFS misc configuration. -$generatorXml.igfsMisc = function(igfs, res) { - if (!res) - res = $generatorCommon.builder(); - - $generatorXml.property(res, igfs, 'blockSize', undefined, 65536); - $generatorXml.property(res, igfs, 'streamBufferSize', undefined, 65536); - $generatorXml.property(res, igfs, 'defaultMode', undefined, "DUAL_ASYNC"); - $generatorXml.property(res, igfs, 'maxSpaceSize', undefined, 0); - $generatorXml.property(res, igfs, 'maximumTaskRangeLength', undefined, 0); - $generatorXml.property(res, igfs, 'managementPort', undefined, 11400); - - res.needEmptyLine = true; - - if (igfs.pathModes && igfs.pathModes.length > 0) { - res.startBlock(''); - res.startBlock(''); - - _.forEach(igfs.pathModes, function(pair) { - res.line(''); - }); - - res.endBlock(''); - res.endBlock(''); - - res.needEmptyLine = true; - } - - $generatorXml.property(res, igfs, 'perNodeBatchSize', undefined, 100); - $generatorXml.property(res, igfs, 'perNodeParallelBatchCount', undefined, 8); - $generatorXml.property(res, igfs, 'prefetchBlocks', undefined, 0); - $generatorXml.property(res, igfs, 'sequentialReadsBeforePrefetch', undefined, 0); - $generatorXml.property(res, igfs, 'trashPurgeTimeout', undefined, 1000); - - return res; -}; - -// Generate cluster config. -$generatorXml.cluster = function (cluster, clientNearCfg) { - if (cluster) { - var res = $generatorCommon.builder(); - - res.deep = 1; - - if (clientNearCfg) { - res.startBlock(''); - - if (clientNearCfg.nearStartSize) - $generatorXml.property(res, clientNearCfg, 'nearStartSize'); - - if (clientNearCfg.nearEvictionPolicy && clientNearCfg.nearEvictionPolicy.kind) - $generatorXml.evictionPolicy(res, clientNearCfg.nearEvictionPolicy, 'nearEvictionPolicy'); - - res.endBlock(''); - - res.line(); - } - - // Generate Ignite Configuration. - res.startBlock(''); - - if (clientNearCfg) { - res.line(''); - - res.line(); - } - - $generatorXml.clusterGeneral(cluster, res); - - $generatorXml.clusterAtomics(cluster, res); - - $generatorXml.clusterCommunication(cluster, res); - - $generatorXml.clusterConnector(cluster, res); - - $generatorXml.clusterDeployment(cluster, res); - - $generatorXml.clusterEvents(cluster, res); - - $generatorXml.clusterMarshaller(cluster, res); - - $generatorXml.clusterMetrics(cluster, res); - - $generatorXml.clusterSwap(cluster, res); - - $generatorXml.clusterTime(cluster, res); - - $generatorXml.clusterPools(cluster, res); - - $generatorXml.clusterTransactions(cluster, res); - - $generatorXml.clusterCaches(cluster.caches, cluster.igfss, res); - - $generatorXml.clusterSsl(cluster, res); - - $generatorXml.igfss(cluster.igfss, res); - - res.endBlock(''); - - // Build final XML: - // 1. Add header. - var xml = '\n\n'; - - xml += '\n'; - xml += ' 0 || cluster.sslEnabled) { - xml += ' \n'; - xml += ' \n'; - xml += ' \n'; - xml += ' \n\n'; - } - - // 3. Add data sources. - if (res.datasources.length > 0) { - xml += ' \n'; - - _.forEach(res.datasources, function (item) { - var beanId = item.dataSourceBean; - - xml += ' \n'; - switch (item.dialect) { - case 'DB2': - xml += ' \n'; - xml += ' \n'; - xml += ' \n'; - xml += ' \n'; - break; - - default: - xml += ' \n'; - } - - xml += ' \n'; - xml += ' \n'; - xml += ' \n\n'; - }); - } - - // 3. Add main content. - xml += res.asString(); - - // 4. Add footer. - xml += '\n'; - - return xml; - } - - return ''; -}; - -// For server side we should export XML generation entry point. -if (typeof window === 'undefined') { - module.exports = $generatorXml; -} http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/routes/metadata.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/metadata.js b/modules/control-center-web/src/main/js/routes/metadata.js index f714e12..09d67f4 100644 --- a/modules/control-center-web/src/main/js/routes/metadata.js +++ b/modules/control-center-web/src/main/js/routes/metadata.js @@ -16,6 +16,7 @@ */ var async = require('async'); +var _ = require('lodash'); var router = require('express').Router(); var db = require('../db'); http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/routes/summary.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/summary.js b/modules/control-center-web/src/main/js/routes/summary.js index ee39181..0d8f4ce 100644 --- a/modules/control-center-web/src/main/js/routes/summary.js +++ b/modules/control-center-web/src/main/js/routes/summary.js @@ -14,18 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -var db = require('../db'); - var router = require('express').Router(); -var $generatorXml = require('./generator/generator-xml'); -var $generatorJava = require('./generator/generator-java'); -var $generatorDocker = require('./generator/generator-docker'); -var $generatorProperties = require('./generator/generator-properties'); -var $generatorPom = require('./generator/generator-pom'); -var $generatorReadme = require('./generator/generator-readme'); - // GET template for summary tabs. router.get('/summary-tabs', function (req, res) { res.render('configuration/summary-tabs', {}); @@ -36,61 +26,4 @@ router.get('/', function (req, res) { res.render('configuration/summary'); }); -router.post('/download', function (req, res) { - // Get cluster with all inner objects (caches, metadata). - db.Cluster.findById(req.body._id).deepPopulate('caches caches.metadatas igfss').exec(function (err, cluster) { - if (err) - return res.status(500).send(err.message); - - if (!cluster) - return res.sendStatus(404); - - var clientNearConfiguration = JSON.parse(req.body.clientNearConfiguration); - - var JSZip = require('jszip'); - - var zip = new JSZip(); - - // Set the archive name. - res.attachment(cluster.name + '-configuration.zip'); - - var builder = $generatorProperties.sslProperties(cluster); - - zip.file('Dockerfile', $generatorDocker.clusterDocker(cluster, req.body.os)); - - builder = $generatorProperties.dataSourcesProperties(cluster, builder); - - if (builder) - zip.file('src/main/resources/secret.properties', builder.asString()); - - var srcPath = 'src/main/java/'; - - zip.file('config/' + cluster.name + '-server.xml', $generatorXml.cluster(cluster)); - zip.file('config/' + cluster.name + '-client.xml', $generatorXml.cluster(cluster, clientNearConfiguration)); - zip.file(srcPath + 'ServerConfigurationFactory.java', $generatorJava.cluster(cluster, 'ServerConfigurationFactory')); - zip.file(srcPath + 'ClientConfigurationFactory.java', $generatorJava.cluster(cluster, 'ClientConfigurationFactory', clientNearConfiguration)); - zip.file('pom.xml', $generatorPom.pom(cluster.caches, '1.5.0').asString()); - - zip.file('README.txt', $generatorReadme.readme().asString()); - zip.file('jdbc-drivers/README.txt', 'Copy proprietary JDBC drivers to this folder.'); - - $generatorJava.pojos(cluster.caches, req.body.useConstructor, req.body.includeKeyFields); - - var metadatas = $generatorJava.metadatas; - - for (var metaIx = 0; metaIx < metadatas.length; metaIx ++) { - var meta = metadatas[metaIx]; - - if (meta.keyClass) - zip.file(srcPath + meta.keyType.replace(/\./g, '/') + '.java', meta.keyClass); - - zip.file(srcPath + meta.valueType.replace(/\./g, '/') + '.java', meta.valueClass); - } - - var buffer = zip.generate({type:"nodebuffer"}); - - res.send(buffer); - }); -}); - module.exports = router; http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/views/configuration/sidebar.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/configuration/sidebar.jade b/modules/control-center-web/src/main/js/views/configuration/sidebar.jade index 2208d89..a486f9f 100644 --- a/modules/control-center-web/src/main/js/views/configuration/sidebar.jade +++ b/modules/control-center-web/src/main/js/views/configuration/sidebar.jade @@ -21,9 +21,9 @@ append scripts script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/mode-java.js') script(src='/data-structures.js') - script(src='/generator-common.js') - script(src='/generator-xml.js') - script(src='/generator-java.js') + script(src='/generator/generator-common.js') + script(src='/generator/generator-xml.js') + script(src='/generator/generator-java.js') mixin sidebar-item(ref, num, txt) li http://git-wip-us.apache.org/repos/asf/ignite/blob/ce945056/modules/control-center-web/src/main/js/views/configuration/summary.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/configuration/summary.jade b/modules/control-center-web/src/main/js/views/configuration/summary.jade index 51b7493..a812376 100644 --- a/modules/control-center-web/src/main/js/views/configuration/summary.jade +++ b/modules/control-center-web/src/main/js/views/configuration/summary.jade @@ -19,7 +19,14 @@ extends sidebar append scripts script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/mode-dockerfile.js') - script(src='/generator-docker.js') + script(src='/js/jszip.min.js') + script(src='/js/FileSaver.min.js') + script(src='/js/Blob.js') + + script(src='/generator/generator-docker.js') + script(src='/generator/generator-properties.js') + script(src='/generator/generator-pom.js') + script(src='/generator/generator-readme.js') script(src='/summary-controller.js') include ../includes/controls @@ -57,13 +64,7 @@ block content a(href='clusters') here. +main-table('Clusters:', 'clusters', 'clusterName', 'selectItem(row)', '{{$index + 1}}) {{row.name}}') .padding-top-dflt(bs-affix) - form.panel-tip-container(data-placement='bottom' bs-tooltip data-title='Download configuration' method='post' action='summary/download') - input(type='hidden' name='_id' value='{{selectedItem._id}}') - input(type='hidden' name='os' value='{{os}}') - input(type='hidden' name='clientNearConfiguration' value='{{backupItem.nearConfiguration}}') - input(type='hidden' name='useConstructor' value='{{configServer.useConstructor}}') - input(type='hidden' name='includeKeyFields' value='{{configServer.includeKeyFields}}') - button.btn.btn-primary(id='download' type='submit' ng-click='$event.stopPropagation()') Download + button.btn.btn-primary(id='download' ng-click='downloadConfiguration()' bs-tooltip data-title='Download configuration' data-placement='bottom') Download hr div(ng-show='selectedItem && tableVisibleRow(displayedRows, selectedItem)' role='tab') .panel-group(bs-collapse ng-init='panels.activePanels=[0,1]' ng-model='panels.activePanels' data-allow-multiple='true')