You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2015/06/23 12:46:04 UTC
[1/6] incubator-ignite git commit: # IGNITE-843 Extract
'generatorXml' and 'generatorJava' modules.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-843 94ff76bf7 -> 196710a6f
# IGNITE-843 Extract 'generatorXml' and 'generatorJava' modules.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/95d9f0a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/95d9f0a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/95d9f0a0
Branch: refs/heads/ignite-843
Commit: 95d9f0a0aa0acb84b169188dac69206f01ddceed
Parents: de85e69
Author: sevdokimov <se...@jetbrains.com>
Authored: Tue Jun 23 09:41:59 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Tue Jun 23 09:41:59 2015 +0300
----------------------------------------------------------------------
.../webconfig/nodejs/routes/configGenerator.js | 367 +------------------
modules/webconfig/nodejs/utils/generatorJava.js | 22 ++
.../webconfig/nodejs/utils/generatorUtils.js | 105 ++++++
modules/webconfig/nodejs/utils/generatorXml.js | 291 +++++++++++++++
4 files changed, 431 insertions(+), 354 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/95d9f0a0/modules/webconfig/nodejs/routes/configGenerator.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/routes/configGenerator.js b/modules/webconfig/nodejs/routes/configGenerator.js
index 36e86db..89034e4 100644
--- a/modules/webconfig/nodejs/routes/configGenerator.js
+++ b/modules/webconfig/nodejs/routes/configGenerator.js
@@ -19,6 +19,9 @@ var db = require('../db');
var router = require('express').Router();
+var generatorXml = require('./../utils/generatorXml');
+var generatorJava = require('./../utils/generatorJava');
+
router.get('/', function(req, res) {
var lang = req.query.lang;
var name = req.query.name;
@@ -46,365 +49,21 @@ router.get('/', function(req, res) {
var cluster = clusters[0];
- try {
- switch (lang) {
- case 'xml':
- res.send(generateXml(cluster));
- break;
+ switch (lang) {
+ case 'xml':
+ res.send(generatorXml.generate(cluster));
+ break;
- case 'java':
- res.send(generateJava(cluster));
- break;
+ case 'java':
+ res.send(generatorJava.generate(cluster));
+ break;
- default:
- res.status(404).send("Unknown language: " + lang);
- break;
- }
- }
- catch (e) {
- res.status(500).send(e);
+ default:
+ res.status(404).send("Unknown language: " + lang);
+ break;
}
});
});
});
-function generateJava(cluster) {
- return "java";
-}
-
-function builder() {
- var res = [];
-
- res.deep = 0;
- res.lineStart = true;
-
- res.append = function(s) {
- if (this.lineStart) {
- for (var i = 0; i < this.deep; i++)
- this.push(' ');
-
- this.lineStart = false;
- }
-
- this.push(s);
-
- return this;
- };
-
- res.line = function(s) {
- if (s)
- this.append(s);
-
- this.push('\n');
- this.lineStart = true;
-
- return this;
- };
-
- res.startBlock = function(s) {
- if (s)
- this.append(s);
-
- this.push('\n');
- this.lineStart = true;
- this.deep++;
-
- return this;
- };
-
- res.endBlock = function(s) {
- this.deep--;
-
- if (s)
- this.append(s);
-
- this.push('\n');
- this.lineStart = true;
-
- return this;
- };
-
- res.emptyLineIfNeeded = function() {
- if (this.needEmptyLine) {
- this.line();
-
- this.needEmptyLine = false;
- }
- };
-
- return res;
-}
-
-function addProperty(res, obj, propName, newLine) {
- var val = obj[propName];
-
- if (val) {
- res.emptyLineIfNeeded();
-
- res.line('<property name="' + propName + '" value="' + escapeAttr(val) + '"/>');
- }
-}
-
-function addBeanWithProperties(res, obj, beanPropName, beanClass, props) {
- var bean = obj[beanPropName];
-
- if (bean) {
- var hasProp = false;
-
- for (var i = 0; i < props.length; i++) {
- if (bean[props[i]]) {
- hasProp = true;
-
- break;
- }
- }
-
- if (hasProp) {
- res.emptyLineIfNeeded();
-
- res.startBlock('<property name="' + beanPropName + '">');
- res.startBlock('<bean class="' + beanClass + '">');
-
- for (i = 0; i < props.length; i++) {
- addProperty(res, bean, props[i]);
- }
-
- res.endBlock('</bean>');
- res.endBlock('</property>');
- }
- }
-}
-
-function addListProperty(res, obj, propName) {
- var val = obj[propName];
-
- if (val && val.length > 0) {
- res.emptyLineIfNeeded();
-
- res.startBlock('<property name="' + propName + '">');
- res.startBlock('<list>');
-
- for (var i = 0; i < val.length; i++)
- res.line('<value>' + escape(val[i]) + '</value>');
-
- res.endBlock('</list>');
- res.endBlock('</property>');
- }
-}
-
-
-
-function escapeAttr(s) {
- if (typeof(s) != 'string')
- return s;
-
- return s.replace(/&/g, '&').replace(/"/g, '"');
-}
-
-function escape(s) {
- if (typeof(s) != 'string')
- return s;
-
- return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
-}
-
-function generateXml(cluster) {
- var res = builder();
-
- res.push('' +
- '<?xml version="1.0" encoding="UTF-8"?>\n' +
- '<beans xmlns="http://www.springframework.org/schema/beans"\n' +
- ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n' +
- ' xsi:schemaLocation="http://www.springframework.org/schema/beans\n' +
- ' http://www.springframework.org/schema/beans/spring-beans.xsd">\n' +
- ' <bean class="org.apache.ignite.configuration.IgniteConfiguration">\n');
-
- res.deep = 2;
-
- if (cluster.discovery) {
- res.startBlock('<property name="discoverySpi">');
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">');
- res.startBlock('<property name="ipFinder">');
-
- var className;
-
- var d = cluster.discovery;
-
- switch (d.kind) {
- case 'Multicast':
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">');
-
- addProperty(res, d.Multicast, 'multicastGroup');
- addProperty(res, d.Multicast, 'multicastPort');
- addProperty(res, d.Multicast, 'responseWaitTime');
- addProperty(res, d.Multicast, 'addressRequestAttempts');
- addProperty(res, d.Multicast, 'localAddress');
-
- res.endBlock('</bean>');
-
- break;
-
- case 'Vm':
- if (d.Vm.addresses.length > 0) {
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">');
-
- addListProperty(res, d.Vm, 'addresses');
-
- res.endBlock('</bean>');
- }
- else {
- res.line('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"/>');
- }
-
- break;
-
- case 'S3':
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder">');
-
- if (d.S3 && d.S3.bucketName)
- res.line('<property name="bucketName" value="' + escapeAttr(d.S3.bucketName) + '" />');
-
- res.endBlock('</bean>');
-
- break;
-
- case 'Cloud':
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder">');
-
- addProperty(res, d.Cloud, 'credential');
- addProperty(res, d.Cloud, 'credentialPath');
- addProperty(res, d.Cloud, 'identity');
- addProperty(res, d.Cloud, 'provider');
-
- res.endBlock('</bean>');
-
- break;
-
- case 'GoogleStorage':
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.gce.TcpDiscoveryGoogleStorageIpFinder">');
-
- addProperty(res, d.GoogleStorage, 'projectName');
- addProperty(res, d.GoogleStorage, 'bucketName');
- addProperty(res, d.GoogleStorage, 'serviceAccountP12FilePath');
-
- //if (d.GoogleStorage.addrReqAttempts) todo ????
- // res.line('<property name="serviceAccountP12FilePath" value="' + escapeAttr(d.GoogleStorage.addrReqAttempts) + '"/>');
-
- res.endBlock('</bean>');
-
- break;
-
- case 'Jdbc':
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.jdbc.TcpDiscoveryJdbcIpFinder">');
- res.line('<property name="initSchema" value="' + (d.Jdbc.initSchema != null || d.Jdbc.initSchema) + '"/>');
- res.endBlock('</bean>');
-
- break;
-
- case 'SharedFs':
- if (d.SharedFs.initSchema != null) {
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">');
- addProperty(res, d.SharedFs, 'path');
- res.endBlock('</bean>');
- }
- else {
- res.line('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder"/>');
- }
-
- break;
-
- default:
- throw "Unknown discovery kind: " + d.kind;
- }
-
- res.endBlock('</property>');
- res.endBlock('</bean>');
- res.endBlock('</property>');
-
- res.needEmptyLine = true
- }
-
- addBeanWithProperties(res, cluster, 'atomicConfiguration', 'org.apache.ignite.configuration.AtomicConfiguration',
- ['backups', 'cacheMode', 'atomicSequenceReserveSize']);
- res.needEmptyLine = true;
-
- addProperty(res, cluster, 'clockSyncSamples');
- addProperty(res, cluster, 'clockSyncFrequency');
- res.needEmptyLine = true;
- addListProperty(res, cluster, 'includeEventTypes');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'igfsThreadPoolSize');
- addProperty(res, cluster, 'publicThreadPoolSize');
- addProperty(res, cluster, 'systemThreadPoolSize');
- addProperty(res, cluster, 'utilityCachePoolSize');
- addProperty(res, cluster, 'managementThreadPoolSize');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'marshalLocalJobs');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'marshCacheKeepAliveTime');
- addProperty(res, cluster, 'marshCachePoolSize');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'cacheSanityCheckEnabled');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'metricsExpireTime');
- addProperty(res, cluster, 'metricsHistorySize');
- addProperty(res, cluster, 'metricsLogFrequency');
- addProperty(res, cluster, 'metricsUpdateFrequency');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'networkTimeout');
- addProperty(res, cluster, 'networkSendRetryDelay');
- addProperty(res, cluster, 'networkSendRetryCount');
- addProperty(res, cluster, 'discoveryStartupDelay');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'deploymentMode');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'peerClassLoadingEnabled');
- addListProperty(res, cluster, 'peerClassLoadingLocalClassPathExclude');
- addProperty(res, cluster, 'peerClassLoadingMissedResourcesCacheSize');
- addProperty(res, cluster, 'peerClassLoadingThreadPoolSize');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'segmentCheckFrequency');
- addProperty(res, cluster, 'segmentationPolicy');
- addProperty(res, cluster, 'allSegmentationResolversPassRequired');
- addProperty(res, cluster, 'segmentationResolveAttempts');
- addProperty(res, cluster, 'waitForSegmentOnStart');
- res.needEmptyLine = true;
-
- //addBeanWithProperties(res, cluster, 'swapSpaceSpi', 'org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi',
- //['baseDirectory', 'readStripesNumber', 'maximumSparsity', 'maxWriteQueueSize', 'writeBufferSize']);
- //res.emptyLineIfNeeded();
-
- if (cluster.swapSpaceSpi) {
- res.emptyLineIfNeeded();
-
- res.startBlock('<property name="swapSpaceSpi">');
- res.startBlock('<bean class="org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi">');
-
- addProperty(res, cluster.swapSpaceSpi, 'baseDirectory');
- addProperty(res, cluster.swapSpaceSpi, 'readStripesNumber');
- addProperty(res, cluster.swapSpaceSpi, 'maximumSparsity');
- addProperty(res, cluster.swapSpaceSpi, 'maxWriteQueueSize');
- addProperty(res, cluster.swapSpaceSpi, 'writeBufferSize');
-
- res.endBlock('</bean>');
- res.endBlock('</property>');
-
- res.needEmptyLine = true;
- }
-
- addBeanWithProperties(res, cluster, 'transactionConfiguration', 'org.apache.ignite.configuration.TransactionConfiguration',
- ['defaultTxConcurrency', 'transactionIsolation', 'defaultTxTimeout', 'pessimisticTxLogLinger',
- 'pessimisticTxLogSize', 'txSerializableEnabled']);
-
- addProperty(res, cluster, 'timeServerPortBase');
- addProperty(res, cluster, 'timeServerPortRange');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'utilityCacheKeepAliveTime');
-
- res.push(' </bean>\n');
- res.push('</beans>');
-
- return res.join('');
-}
-
module.exports = router;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/95d9f0a0/modules/webconfig/nodejs/utils/generatorJava.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorJava.js b/modules/webconfig/nodejs/utils/generatorJava.js
new file mode 100644
index 0000000..6ab62bf
--- /dev/null
+++ b/modules/webconfig/nodejs/utils/generatorJava.js
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+var generatorUtils = require("./generatorUtils");
+
+exports.generate = function(cluster) {
+ return 'java'
+};
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/95d9f0a0/modules/webconfig/nodejs/utils/generatorUtils.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorUtils.js b/modules/webconfig/nodejs/utils/generatorUtils.js
new file mode 100644
index 0000000..dd26314
--- /dev/null
+++ b/modules/webconfig/nodejs/utils/generatorUtils.js
@@ -0,0 +1,105 @@
+/*
+ * 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.
+ */
+
+exports.mainComment = 'This configuration was generated by automatically by Ignite ($date)';
+
+function addLeadingZero(numberStr, minSize) {
+ if (typeof (numberStr) != 'string')
+ numberStr = '' + numberStr;
+
+ while (numberStr.length < minSize) {
+ numberStr = '0' + numberStr;
+ }
+
+ return numberStr;
+}
+
+exports.formatDate = function (date) {
+ var dd = addLeadingZero(date.getDate(), 2);
+ var mm = addLeadingZero(date.getMonth() + 1, 2);
+
+ var yyyy = date.getFullYear();
+
+ return mm + '/' + dd + '/' + yyyy + ' ' + addLeadingZero(date.getHours(), 2) + ':' + addLeadingZero(date.getMinutes(), 2);
+};
+
+exports.builder = function () {
+ var res = [];
+
+ res.deep = 0;
+ res.lineStart = true;
+
+ res.append = function(s) {
+ if (this.lineStart) {
+ for (var i = 0; i < this.deep; i++)
+ this.push(' ');
+
+ this.lineStart = false;
+ }
+
+ this.push(s);
+
+ return this;
+ };
+
+ res.line = function(s) {
+ if (s)
+ this.append(s);
+
+ this.push('\n');
+ this.lineStart = true;
+
+ return this;
+ };
+
+ res.startBlock = function(s) {
+ if (s)
+ this.append(s);
+
+ this.push('\n');
+ this.lineStart = true;
+ this.deep++;
+
+ return this;
+ };
+
+ res.endBlock = function(s) {
+ this.deep--;
+
+ if (s)
+ this.append(s);
+
+ this.push('\n');
+ this.lineStart = true;
+
+ return this;
+ };
+
+ res.emptyLineIfNeeded = function() {
+ if (this.needEmptyLine) {
+ this.line();
+
+ this.needEmptyLine = false;
+ }
+ };
+
+ return res;
+};
+
+exports.writeProperties = function(writer, cluster) {
+
+};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/95d9f0a0/modules/webconfig/nodejs/utils/generatorXml.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorXml.js b/modules/webconfig/nodejs/utils/generatorXml.js
new file mode 100644
index 0000000..3112754
--- /dev/null
+++ b/modules/webconfig/nodejs/utils/generatorXml.js
@@ -0,0 +1,291 @@
+/*
+ * 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.
+ */
+
+var generatorUtils = require("./generatorUtils");
+
+exports.generate = function(cluster) {
+ var res = generatorUtils.builder();
+
+ res.push('' +
+ '<?xml version="1.0" encoding="UTF-8"?>\n' +
+ '\n' +
+ '<!-- ' + (generatorUtils.mainComment.replace('$date', generatorUtils.formatDate(new Date()))) + ' -->\n' +
+ '<beans xmlns="http://www.springframework.org/schema/beans"\n' +
+ ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n' +
+ ' xsi:schemaLocation="http://www.springframework.org/schema/beans\n' +
+ ' http://www.springframework.org/schema/beans/spring-beans.xsd">\n' +
+ ' <bean class="org.apache.ignite.configuration.IgniteConfiguration">\n');
+
+ res.deep = 2;
+
+ if (cluster.discovery) {
+ res.startBlock('<property name="discoverySpi">');
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">');
+ res.startBlock('<property name="ipFinder">');
+
+ var className;
+
+ var d = cluster.discovery;
+
+ switch (d.kind) {
+ case 'Multicast':
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">');
+
+ addProperty(res, d.Multicast, 'multicastGroup');
+ addProperty(res, d.Multicast, 'multicastPort');
+ addProperty(res, d.Multicast, 'responseWaitTime');
+ addProperty(res, d.Multicast, 'addressRequestAttempts');
+ addProperty(res, d.Multicast, 'localAddress');
+
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'Vm':
+ if (d.Vm.addresses.length > 0) {
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">');
+
+ addListProperty(res, d.Vm, 'addresses');
+
+ res.endBlock('</bean>');
+ }
+ else {
+ res.line('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"/>');
+ }
+
+ break;
+
+ case 'S3':
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder">');
+
+ if (d.S3 && d.S3.bucketName)
+ res.line('<property name="bucketName" value="' + escapeAttr(d.S3.bucketName) + '" />');
+
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'Cloud':
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder">');
+
+ addProperty(res, d.Cloud, 'credential');
+ addProperty(res, d.Cloud, 'credentialPath');
+ addProperty(res, d.Cloud, 'identity');
+ addProperty(res, d.Cloud, 'provider');
+
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'GoogleStorage':
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.gce.TcpDiscoveryGoogleStorageIpFinder">');
+
+ addProperty(res, d.GoogleStorage, 'projectName');
+ addProperty(res, d.GoogleStorage, 'bucketName');
+ addProperty(res, d.GoogleStorage, 'serviceAccountP12FilePath');
+
+ //if (d.GoogleStorage.addrReqAttempts) todo ????
+ // res.line('<property name="serviceAccountP12FilePath" value="' + escapeAttr(d.GoogleStorage.addrReqAttempts) + '"/>');
+
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'Jdbc':
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.jdbc.TcpDiscoveryJdbcIpFinder">');
+ res.line('<property name="initSchema" value="' + (d.Jdbc.initSchema != null || d.Jdbc.initSchema) + '"/>');
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'SharedFs':
+ if (d.SharedFs.initSchema != null) {
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">');
+ addProperty(res, d.SharedFs, 'path');
+ res.endBlock('</bean>');
+ }
+ else {
+ res.line('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder"/>');
+ }
+
+ break;
+
+ default:
+ throw "Unknown discovery kind: " + d.kind;
+ }
+
+ res.endBlock('</property>');
+ res.endBlock('</bean>');
+ res.endBlock('</property>');
+
+ res.needEmptyLine = true
+ }
+
+ addBeanWithProperties(res, cluster, 'atomicConfiguration', 'org.apache.ignite.configuration.AtomicConfiguration',
+ ['backups', 'cacheMode', 'atomicSequenceReserveSize']);
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'clockSyncSamples');
+ addProperty(res, cluster, 'clockSyncFrequency');
+ res.needEmptyLine = true;
+ addListProperty(res, cluster, 'includeEventTypes');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'igfsThreadPoolSize');
+ addProperty(res, cluster, 'publicThreadPoolSize');
+ addProperty(res, cluster, 'systemThreadPoolSize');
+ addProperty(res, cluster, 'utilityCachePoolSize');
+ addProperty(res, cluster, 'managementThreadPoolSize');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'marshalLocalJobs');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'marshCacheKeepAliveTime');
+ addProperty(res, cluster, 'marshCachePoolSize');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'cacheSanityCheckEnabled');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'metricsExpireTime');
+ addProperty(res, cluster, 'metricsHistorySize');
+ addProperty(res, cluster, 'metricsLogFrequency');
+ addProperty(res, cluster, 'metricsUpdateFrequency');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'networkTimeout');
+ addProperty(res, cluster, 'networkSendRetryDelay');
+ addProperty(res, cluster, 'networkSendRetryCount');
+ addProperty(res, cluster, 'discoveryStartupDelay');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'deploymentMode');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'peerClassLoadingEnabled');
+ addListProperty(res, cluster, 'peerClassLoadingLocalClassPathExclude');
+ addProperty(res, cluster, 'peerClassLoadingMissedResourcesCacheSize');
+ addProperty(res, cluster, 'peerClassLoadingThreadPoolSize');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'segmentCheckFrequency');
+ addProperty(res, cluster, 'segmentationPolicy');
+ addProperty(res, cluster, 'allSegmentationResolversPassRequired');
+ addProperty(res, cluster, 'segmentationResolveAttempts');
+ addProperty(res, cluster, 'waitForSegmentOnStart');
+ res.needEmptyLine = true;
+
+ //addBeanWithProperties(res, cluster, 'swapSpaceSpi', 'org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi',
+ //['baseDirectory', 'readStripesNumber', 'maximumSparsity', 'maxWriteQueueSize', 'writeBufferSize']);
+ //res.emptyLineIfNeeded();
+
+ if (cluster.swapSpaceSpi) {
+ res.emptyLineIfNeeded();
+
+ res.startBlock('<property name="swapSpaceSpi">');
+ res.startBlock('<bean class="org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi">');
+
+ addProperty(res, cluster.swapSpaceSpi, 'baseDirectory');
+ addProperty(res, cluster.swapSpaceSpi, 'readStripesNumber');
+ addProperty(res, cluster.swapSpaceSpi, 'maximumSparsity');
+ addProperty(res, cluster.swapSpaceSpi, 'maxWriteQueueSize');
+ addProperty(res, cluster.swapSpaceSpi, 'writeBufferSize');
+
+ res.endBlock('</bean>');
+ res.endBlock('</property>');
+
+ res.needEmptyLine = true;
+ }
+
+ addBeanWithProperties(res, cluster, 'transactionConfiguration', 'org.apache.ignite.configuration.TransactionConfiguration',
+ ['defaultTxConcurrency', 'transactionIsolation', 'defaultTxTimeout', 'pessimisticTxLogLinger',
+ 'pessimisticTxLogSize', 'txSerializableEnabled']);
+
+ addProperty(res, cluster, 'timeServerPortBase');
+ addProperty(res, cluster, 'timeServerPortRange');
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'utilityCacheKeepAliveTime');
+
+ res.push(' </bean>\n');
+ res.push('</beans>');
+
+ return res.join('');
+};
+
+
+function addProperty(res, obj, propName) {
+ var val = obj[propName];
+
+ if (val) {
+ res.emptyLineIfNeeded();
+
+ res.line('<property name="' + propName + '" value="' + escapeAttr(val) + '"/>');
+ }
+}
+
+function addBeanWithProperties(res, obj, beanPropName, beanClass, props) {
+ var bean = obj[beanPropName];
+
+ if (bean) {
+ var hasProp = false;
+
+ for (var i = 0; i < props.length; i++) {
+ if (bean[props[i]]) {
+ hasProp = true;
+
+ break;
+ }
+ }
+
+ if (hasProp) {
+ res.emptyLineIfNeeded();
+
+ res.startBlock('<property name="' + beanPropName + '">');
+ res.startBlock('<bean class="' + beanClass + '">');
+
+ for (i = 0; i < props.length; i++) {
+ addProperty(res, bean, props[i]);
+ }
+
+ res.endBlock('</bean>');
+ res.endBlock('</property>');
+ }
+ }
+}
+
+function addListProperty(res, obj, propName) {
+ var val = obj[propName];
+
+ if (val && val.length > 0) {
+ res.emptyLineIfNeeded();
+
+ res.startBlock('<property name="' + propName + '">');
+ res.startBlock('<list>');
+
+ for (var i = 0; i < val.length; i++)
+ res.line('<value>' + escape(val[i]) + '</value>');
+
+ res.endBlock('</list>');
+ res.endBlock('</property>');
+ }
+}
+
+function escapeAttr(s) {
+ if (typeof(s) != 'string')
+ return s;
+
+ return s.replace(/&/g, '&').replace(/"/g, '"');
+}
+
+function escape(s) {
+ if (typeof(s) != 'string')
+ return s;
+
+ return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
+}
[6/6] incubator-ignite git commit: Merge branch 'ignite-843' of
https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-843
Posted by se...@apache.org.
Merge branch 'ignite-843' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-843
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/196710a6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/196710a6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/196710a6
Branch: refs/heads/ignite-843
Commit: 196710a6f1c7b9157f7f012fe1d1b6824485ad54
Parents: 8c2fdae 94ff76b
Author: sevdokimov <se...@jetbrains.com>
Authored: Tue Jun 23 13:45:20 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Tue Jun 23 13:45:20 2015 +0300
----------------------------------------------------------------------
modules/webconfig/nodejs/db.js | 27 +++-
.../nodejs/public/form-models/caches.json | 143 +++++++++++++++++++
.../nodejs/public/form-models/clusters.json | 20 +--
.../public/javascripts/controllers/caches.js | 21 +++
.../public/javascripts/controllers/clusters.js | 6 +
.../public/javascripts/controllers/common.js | 4 +-
.../nodejs/public/stylesheets/style.css | 2 +-
.../nodejs/public/stylesheets/style.less | 27 +++-
modules/webconfig/nodejs/views/caches.jade | 4 +-
modules/webconfig/nodejs/views/clusters.jade | 2 +-
.../nodejs/views/includes/controls.jade | 22 ++-
.../webconfig/nodejs/views/includes/header.jade | 2 +-
12 files changed, 259 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
[4/6] incubator-ignite git commit: # IGNITE-843 Don't use '!= null'
in javascript
Posted by se...@apache.org.
# IGNITE-843 Don't use '!= null' in javascript
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/adc1e4d0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/adc1e4d0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/adc1e4d0
Branch: refs/heads/ignite-843
Commit: adc1e4d00aa67c16df841ff6f1fe91df50e499f7
Parents: 01d4a35
Author: sevdokimov <se...@jetbrains.com>
Authored: Tue Jun 23 11:53:58 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Tue Jun 23 11:53:58 2015 +0300
----------------------------------------------------------------------
modules/webconfig/nodejs/utils/generatorXml.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/adc1e4d0/modules/webconfig/nodejs/utils/generatorXml.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorXml.js b/modules/webconfig/nodejs/utils/generatorXml.js
index 0315576..d72874d 100644
--- a/modules/webconfig/nodejs/utils/generatorXml.js
+++ b/modules/webconfig/nodejs/utils/generatorXml.js
@@ -113,7 +113,7 @@ exports.generate = function(cluster) {
break;
case 'SharedFs':
- if (d.SharedFs.path != null) {
+ if (d.SharedFs.path) {
res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">');
addProperty(res, d.SharedFs, 'path');
res.endBlock('</bean>');
[3/6] incubator-ignite git commit: # IGNITE-843 Bug fix: wrong
property used.
Posted by se...@apache.org.
# IGNITE-843 Bug fix: wrong property used.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/01d4a353
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/01d4a353
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/01d4a353
Branch: refs/heads/ignite-843
Commit: 01d4a353526a8a18091f8a62bc1f863f02e2baac
Parents: d3902e0
Author: sevdokimov <se...@jetbrains.com>
Authored: Tue Jun 23 10:37:58 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Tue Jun 23 10:37:58 2015 +0300
----------------------------------------------------------------------
modules/webconfig/nodejs/utils/generatorXml.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/01d4a353/modules/webconfig/nodejs/utils/generatorXml.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorXml.js b/modules/webconfig/nodejs/utils/generatorXml.js
index 5fc0e9b..0315576 100644
--- a/modules/webconfig/nodejs/utils/generatorXml.js
+++ b/modules/webconfig/nodejs/utils/generatorXml.js
@@ -113,7 +113,7 @@ exports.generate = function(cluster) {
break;
case 'SharedFs':
- if (d.SharedFs.initSchema != null) {
+ if (d.SharedFs.path != null) {
res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">');
addProperty(res, d.SharedFs, 'path');
res.endBlock('</bean>');
[2/6] incubator-ignite git commit: # IGNITE-843 Bug fix: use
TcpDiscoveryVmIpFinder instead of TcpDiscoveryMulticastIpFinder.
Posted by se...@apache.org.
# IGNITE-843 Bug fix: use TcpDiscoveryVmIpFinder instead of TcpDiscoveryMulticastIpFinder.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d3902e02
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d3902e02
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d3902e02
Branch: refs/heads/ignite-843
Commit: d3902e020884e8753b537b373fe8a796d5213ab4
Parents: 95d9f0a
Author: sevdokimov <se...@jetbrains.com>
Authored: Tue Jun 23 10:26:30 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Tue Jun 23 10:26:30 2015 +0300
----------------------------------------------------------------------
modules/webconfig/nodejs/utils/generatorXml.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d3902e02/modules/webconfig/nodejs/utils/generatorXml.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorXml.js b/modules/webconfig/nodejs/utils/generatorXml.js
index 3112754..5fc0e9b 100644
--- a/modules/webconfig/nodejs/utils/generatorXml.js
+++ b/modules/webconfig/nodejs/utils/generatorXml.js
@@ -57,14 +57,14 @@ exports.generate = function(cluster) {
case 'Vm':
if (d.Vm.addresses.length > 0) {
- res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">');
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">');
addListProperty(res, d.Vm, 'addresses');
res.endBlock('</bean>');
}
else {
- res.line('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"/>');
+ res.line('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"/>');
}
break;
[5/6] incubator-ignite git commit: # IGNITE-843 Implement java code
generator
Posted by se...@apache.org.
# IGNITE-843 Implement java code generator
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8c2fdaee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8c2fdaee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8c2fdaee
Branch: refs/heads/ignite-843
Commit: 8c2fdaee21e320461bef3f19a8cba1ad3083ab4d
Parents: adc1e4d
Author: sevdokimov <se...@jetbrains.com>
Authored: Tue Jun 23 13:44:53 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Tue Jun 23 13:44:53 2015 +0300
----------------------------------------------------------------------
modules/webconfig/nodejs/utils/generatorJava.js | 300 ++++++++++++++++++-
.../webconfig/nodejs/utils/generatorUtils.js | 4 +
modules/webconfig/nodejs/utils/generatorXml.js | 149 ++++-----
3 files changed, 380 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c2fdaee/modules/webconfig/nodejs/utils/generatorJava.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorJava.js b/modules/webconfig/nodejs/utils/generatorJava.js
index 6ab62bf..64a742c 100644
--- a/modules/webconfig/nodejs/utils/generatorJava.js
+++ b/modules/webconfig/nodejs/utils/generatorJava.js
@@ -17,6 +17,304 @@
var generatorUtils = require("./generatorUtils");
+function toJavaCode(val, type) {
+ if (val == null)
+ return 'null';
+
+ if (type == 'f')
+ return val + 'f';
+
+ if (type)
+ return type + '.' + val;
+
+ if (typeof(val) == 'string')
+ return '"' + val.replace('"', '\\"') + '"';
+
+ if (typeof(val) == 'number' || typeof(val) == 'boolean')
+ return '' + val;
+
+ throw "Unknown type: " + typeof(val) + ' (' + val + ')';
+}
+
+function addProperty(res, obj, objVariableName, propName, enumType) {
+ var val = obj[propName];
+
+ if (val) {
+ res.emptyLineIfNeeded();
+
+ res.line(objVariableName + '.' + getSetterName(propName) + '(' + toJavaCode(val, enumType) + ');');
+ }
+}
+
+function getSetterName(propName) {
+ return 'set' + propName.charAt(0).toLocaleUpperCase() + propName.slice(1);
+}
+
+function addListProperty(res, obj, objVariableName, propName, enumType) {
+ var val = obj[propName];
+
+ if (val && val.length > 0) {
+ var setterName = getSetterName(propName);
+
+ res.append(objVariableName + '.' + setterName + '(Arrays.asList(');
+
+ for (var i = 0; i < val.length; i++) {
+ if (i > 0)
+ res.append(', ');
+
+ res.append(toJavaCode(val[i], enumType));
+ }
+
+ res.line('));');
+ }
+}
+
+function addMultiparamProperty(res, obj, objVariableName, propName, enumType) {
+ var val = obj[propName];
+
+ if (val && val.length > 0) {
+ var setterName = getSetterName(propName);
+
+ res.append(objVariableName + '.' + setterName + '(');
+
+ for (var i = 0; i < val.length; i++) {
+ if (i > 0)
+ res.append(', ');
+
+ res.append(toJavaCode(val[i], enumType));
+ }
+
+ res.line(');');
+ }
+}
+
+function addBeanWithProperties(res, bean, objVarName, beanPropName, beanVarName, beanClass, props, alwaysCreateBean) {
+ if (!bean)
+ return;
+
+ var hasProps = false;
+ for (var propName in props) {
+ if (props.hasOwnProperty(propName)) {
+ if (bean[propName]) {
+ hasProps = true;
+ break;
+ }
+ }
+ }
+
+ if (hasProps) {
+ if (!res.emptyLineIfNeeded()) {
+ res.line();
+ }
+
+ res.line(beanClass + ' ' + beanVarName + ' = new ' + beanClass + '();');
+ for (propName in props) {
+ if (props.hasOwnProperty(propName)) {
+ var val = bean[propName];
+ if (val) {
+ var type = props[propName];
+
+ if (type == 'list') {
+ addListProperty(res, bean, beanVarName, propName);
+ }
+ else {
+ addProperty(res, bean, beanVarName, propName, type);
+ }
+ }
+ }
+ }
+ res.line(objVarName + '.' + getSetterName(beanPropName) + '(' + beanVarName + ');');
+
+ res.needEmptyLine = true;
+ }
+ else if (alwaysCreateBean) {
+ res.emptyLineIfNeeded();
+
+ res.line(objVarName + '.' + getSetterName(beanPropName) + '(new ' + beanClass + '());');
+ }
+}
+
exports.generate = function(cluster) {
- return 'java'
+ var res = generatorUtils.builder();
+
+ res.line('IgniteConfiguration cfg = new IgniteConfiguration();');
+ res.line();
+
+ if (cluster.discovery) {
+ var d = cluster.discovery;
+
+ res.line('TcpDiscoverySpi discovery = new TcpDiscoverySpi();');
+ switch (d.kind) {
+ case 'Multicast':
+ addBeanWithProperties(res, d.Multicast, 'discovery', 'ipFinder', 'ipFinder',
+ 'TcpDiscoveryMulticastIpFinder', {
+ multicastGroup: null,
+ multicastPort: null,
+ responseWaitTime: null,
+ addressRequestAttempts: null,
+ localAddress: null
+ }, true);
+
+ break;
+
+ case 'Vm':
+ addBeanWithProperties(res, d.Vm, 'discovery', 'ipFinder', 'ipFinder',
+ 'TcpDiscoveryVmIpFinder', {addresses: 'list'}, true);
+
+ break;
+
+ case 'S3':
+ if (d.S3) {
+ addBeanWithProperties(res, d.S3, 'discovery', 'ipFinder', 'ipFinder',
+ 'TcpDiscoveryS3IpFinder', {bucketName: null}, true);
+ }
+ else {
+ res.line('discovery.setIpFinder(new TcpDiscoveryS3IpFinder());');
+ }
+
+ break;
+
+ case 'Cloud':
+ addBeanWithProperties(res, d.Cloud, 'discovery', 'ipFinder', 'ipFinder',
+ 'TcpDiscoveryCloudIpFinder', {
+ credential: null,
+ credentialPath: null,
+ identity: null,
+ provider: null
+ }, true);
+
+ break;
+
+ case 'GoogleStorage':
+ addBeanWithProperties(res, d.GoogleStorage, 'discovery', 'ipFinder', 'ipFinder',
+ 'TcpDiscoveryGoogleStorageIpFinder', {
+ projectName: null,
+ bucketName: null,
+ serviceAccountP12FilePath: null
+ }, true);
+
+ //if (d.GoogleStorage.addrReqAttempts) todo ????
+ // res.line('<property name="serviceAccountP12FilePath" value="' + escapeAttr(d.GoogleStorage.addrReqAttempts) + '"/>');
+
+ break;
+
+ case 'Jdbc':
+ res.line();
+ res.line('TcpDiscoveryJdbcIpFinder ipFinder = new TcpDiscoveryJdbcIpFinder();');
+ res.line('ipFinder.setInitSchema(' + (d.Jdbc.initSchema != null || d.Jdbc.initSchema) + ');');
+ res.line('discovery.setIpFinder(ipFinder);');
+ res.needEmptyLine = true;
+
+ break;
+
+ case 'SharedFs':
+ addBeanWithProperties(res, d.SharedFs, 'discovery', 'ipFinder', 'ipFinder',
+ 'TcpDiscoverySharedFsIpFinder', {path: null}, true);
+
+ break;
+
+ default:
+ throw "Unknown discovery kind: " + d.kind;
+ }
+
+ res.emptyLineIfNeeded();
+
+ res.line('cfg.setDiscoverySpi(discovery);');
+
+ res.needEmptyLine = true;
+ }
+
+ addBeanWithProperties(res, cluster.atomicConfiguration, 'cfg', 'atomicConfiguration', 'atomicCfg', 'AtomicConfiguration', {
+ backups: null,
+ cacheMode: 'CacheMode',
+ atomicSequenceReserveSize: null});
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'networkTimeout');
+ addProperty(res, cluster, 'cfg', 'networkSendRetryDelay');
+ addProperty(res, cluster, 'cfg', 'networkSendRetryCount');
+ addProperty(res, cluster, 'cfg', 'segmentCheckFrequency');
+ addProperty(res, cluster, 'cfg', 'waitForSegmentOnStart');
+ addProperty(res, cluster, 'cfg', 'discoveryStartupDelay');
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'deploymentMode', 'DeploymentMode');
+
+ res.needEmptyLine = true;
+
+ addListProperty(res, cluster, 'cfg', 'includeEventTypes');
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'marshalLocalJobs');
+ addProperty(res, cluster, 'cfg', 'marshCacheKeepAliveTime');
+ addProperty(res, cluster, 'cfg', 'marshCachePoolSize');
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'metricsExpireTime');
+ addProperty(res, cluster, 'cfg', 'metricsHistorySize');
+ addProperty(res, cluster, 'cfg', 'metricsLogFrequency');
+ addProperty(res, cluster, 'cfg', 'metricsUpdateFrequency');
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'peerClassLoadingEnabled');
+ addMultiparamProperty(res, cluster, 'cfg', 'peerClassLoadingLocalClassPathExclude');
+ addProperty(res, cluster, 'cfg', 'peerClassLoadingMissedResourcesCacheSize');
+ addProperty(res, cluster, 'cfg', 'peerClassLoadingThreadPoolSize');
+ res.needEmptyLine = true;
+
+ addBeanWithProperties(res, cluster.swapSpaceSpi.FileSwapSpaceSpi, 'cfg', 'swapSpaceSpi', 'swapSpi', 'FileSwapSpaceSpi', {
+ baseDirectory: null,
+ readStripesNumber: null,
+ maximumSparsity: 'f',
+ maxWriteQueueSize: null,
+ writeBufferSize: null
+ }, true);
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'clockSyncSamples');
+ addProperty(res, cluster, 'cfg', 'clockSyncFrequency');
+ addProperty(res, cluster, 'cfg', 'timeServerPortBase');
+ addProperty(res, cluster, 'cfg', 'timeServerPortRange');
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'publicThreadPoolSize');
+ addProperty(res, cluster, 'cfg', 'systemThreadPoolSize');
+ addProperty(res, cluster, 'cfg', 'managementThreadPoolSize');
+ addProperty(res, cluster, 'cfg', 'igfsThreadPoolSize');
+
+ res.needEmptyLine = true;
+
+ addBeanWithProperties(res, cluster.transactionConfiguration, 'cfg', 'transactionConfiguration',
+ 'transactionConfiguration', 'TransactionConfiguration', {
+ defaultTxConcurrency: 'TransactionConcurrency',
+ transactionIsolation: 'TransactionIsolation',
+ defaultTxTimeout: null,
+ pessimisticTxLogLinger: null,
+ pessimisticTxLogSize: null,
+ txSerializableEnabled: null
+ });
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'cacheSanityCheckEnabled');
+
+ res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'cfg', 'segmentationPolicy', 'SegmentationPolicy');
+ addProperty(res, cluster, 'cfg', 'segmentationResolveAttempts');
+ addProperty(res, cluster, 'cfg', 'allSegmentationResolversPassRequired');
+
+ res.needEmptyLine = true;
+
+ res.needEmptyLine = true;
+ addProperty(res, cluster, 'cfg', 'utilityCacheKeepAliveTime');
+ addProperty(res, cluster, 'cfg', 'utilityCachePoolSize');
+
+ return res.join('');
};
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c2fdaee/modules/webconfig/nodejs/utils/generatorUtils.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorUtils.js b/modules/webconfig/nodejs/utils/generatorUtils.js
index dd26314..84e8f62 100644
--- a/modules/webconfig/nodejs/utils/generatorUtils.js
+++ b/modules/webconfig/nodejs/utils/generatorUtils.js
@@ -94,7 +94,11 @@ exports.builder = function () {
this.line();
this.needEmptyLine = false;
+
+ return true;
}
+
+ return false;
};
return res;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c2fdaee/modules/webconfig/nodejs/utils/generatorXml.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorXml.js b/modules/webconfig/nodejs/utils/generatorXml.js
index d72874d..e786612 100644
--- a/modules/webconfig/nodejs/utils/generatorXml.js
+++ b/modules/webconfig/nodejs/utils/generatorXml.js
@@ -135,83 +135,89 @@ exports.generate = function(cluster) {
res.needEmptyLine = true
}
- addBeanWithProperties(res, cluster, 'atomicConfiguration', 'org.apache.ignite.configuration.AtomicConfiguration',
- ['backups', 'cacheMode', 'atomicSequenceReserveSize']);
+ addBeanWithProperties(res, cluster.atomicConfiguration, 'atomicConfiguration',
+ 'org.apache.ignite.configuration.AtomicConfiguration', ['backups', 'cacheMode', 'atomicSequenceReserveSize']);
res.needEmptyLine = true;
- addProperty(res, cluster, 'clockSyncSamples');
- addProperty(res, cluster, 'clockSyncFrequency');
+ addProperty(res, cluster, 'networkTimeout');
+ addProperty(res, cluster, 'networkSendRetryDelay');
+ addProperty(res, cluster, 'networkSendRetryCount');
+ addProperty(res, cluster, 'segmentCheckFrequency');
+ addProperty(res, cluster, 'waitForSegmentOnStart');
+ addProperty(res, cluster, 'discoveryStartupDelay');
+
res.needEmptyLine = true;
- addListProperty(res, cluster, 'includeEventTypes');
+
+ addProperty(res, cluster, 'deploymentMode');
+
res.needEmptyLine = true;
- addProperty(res, cluster, 'igfsThreadPoolSize');
- addProperty(res, cluster, 'publicThreadPoolSize');
- addProperty(res, cluster, 'systemThreadPoolSize');
- addProperty(res, cluster, 'utilityCachePoolSize');
- addProperty(res, cluster, 'managementThreadPoolSize');
+
+ addListProperty(res, cluster, 'includeEventTypes');
+
res.needEmptyLine = true;
+
addProperty(res, cluster, 'marshalLocalJobs');
- res.needEmptyLine = true;
addProperty(res, cluster, 'marshCacheKeepAliveTime');
addProperty(res, cluster, 'marshCachePoolSize');
+
res.needEmptyLine = true;
- addProperty(res, cluster, 'cacheSanityCheckEnabled');
- res.needEmptyLine = true;
+
addProperty(res, cluster, 'metricsExpireTime');
addProperty(res, cluster, 'metricsHistorySize');
addProperty(res, cluster, 'metricsLogFrequency');
addProperty(res, cluster, 'metricsUpdateFrequency');
+
res.needEmptyLine = true;
- addProperty(res, cluster, 'networkTimeout');
- addProperty(res, cluster, 'networkSendRetryDelay');
- addProperty(res, cluster, 'networkSendRetryCount');
- addProperty(res, cluster, 'discoveryStartupDelay');
- res.needEmptyLine = true;
- addProperty(res, cluster, 'deploymentMode');
- res.needEmptyLine = true;
+
addProperty(res, cluster, 'peerClassLoadingEnabled');
addListProperty(res, cluster, 'peerClassLoadingLocalClassPathExclude');
addProperty(res, cluster, 'peerClassLoadingMissedResourcesCacheSize');
addProperty(res, cluster, 'peerClassLoadingThreadPoolSize');
+
res.needEmptyLine = true;
- addProperty(res, cluster, 'segmentCheckFrequency');
- addProperty(res, cluster, 'segmentationPolicy');
- addProperty(res, cluster, 'allSegmentationResolversPassRequired');
- addProperty(res, cluster, 'segmentationResolveAttempts');
- addProperty(res, cluster, 'waitForSegmentOnStart');
+
+ addBeanWithProperties(res, cluster.swapSpaceSpi.FileSwapSpaceSpi, 'swapSpaceSpi',
+ 'org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi', ['baseDirectory', 'readStripesNumber',
+ 'maximumSparsity', 'maxWriteQueueSize', 'writeBufferSize'], true);
+
res.needEmptyLine = true;
+
+ addProperty(res, cluster, 'clockSyncSamples');
+ addProperty(res, cluster, 'clockSyncFrequency');
+ addProperty(res, cluster, 'timeServerPortBase');
+ addProperty(res, cluster, 'timeServerPortRange');
- //addBeanWithProperties(res, cluster, 'swapSpaceSpi', 'org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi',
- //['baseDirectory', 'readStripesNumber', 'maximumSparsity', 'maxWriteQueueSize', 'writeBufferSize']);
- //res.emptyLineIfNeeded();
+ res.needEmptyLine = true;
- if (cluster.swapSpaceSpi) {
- res.emptyLineIfNeeded();
+ addProperty(res, cluster, 'publicThreadPoolSize');
+ addProperty(res, cluster, 'systemThreadPoolSize');
+ addProperty(res, cluster, 'managementThreadPoolSize');
+ addProperty(res, cluster, 'igfsThreadPoolSize');
- res.startBlock('<property name="swapSpaceSpi">');
- res.startBlock('<bean class="org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi">');
+ res.needEmptyLine = true;
+
+ addBeanWithProperties(res, cluster.transactionConfiguration, 'transactionConfiguration',
+ 'org.apache.ignite.configuration.TransactionConfiguration', ['defaultTxConcurrency', 'transactionIsolation',
+ 'defaultTxTimeout', 'pessimisticTxLogLinger',
+ 'pessimisticTxLogSize', 'txSerializableEnabled']);
- addProperty(res, cluster.swapSpaceSpi, 'baseDirectory');
- addProperty(res, cluster.swapSpaceSpi, 'readStripesNumber');
- addProperty(res, cluster.swapSpaceSpi, 'maximumSparsity');
- addProperty(res, cluster.swapSpaceSpi, 'maxWriteQueueSize');
- addProperty(res, cluster.swapSpaceSpi, 'writeBufferSize');
- res.endBlock('</bean>');
- res.endBlock('</property>');
+ res.needEmptyLine = true;
- res.needEmptyLine = true;
- }
+ addProperty(res, cluster, 'segmentationPolicy');
+ addProperty(res, cluster, 'allSegmentationResolversPassRequired');
+ addProperty(res, cluster, 'segmentationResolveAttempts');
+
+ res.needEmptyLine = true;
- addBeanWithProperties(res, cluster, 'transactionConfiguration', 'org.apache.ignite.configuration.TransactionConfiguration',
- ['defaultTxConcurrency', 'transactionIsolation', 'defaultTxTimeout', 'pessimisticTxLogLinger',
- 'pessimisticTxLogSize', 'txSerializableEnabled']);
+ addProperty(res, cluster, 'cacheSanityCheckEnabled');
+
+ res.needEmptyLine = true;
- addProperty(res, cluster, 'timeServerPortBase');
- addProperty(res, cluster, 'timeServerPortRange');
res.needEmptyLine = true;
addProperty(res, cluster, 'utilityCacheKeepAliveTime');
-
+ addProperty(res, cluster, 'utilityCachePoolSize');
+
res.push(' </bean>\n');
res.push('</beans>');
@@ -229,36 +235,35 @@ function addProperty(res, obj, propName) {
}
}
-function addBeanWithProperties(res, obj, beanPropName, beanClass, props) {
- var bean = obj[beanPropName];
-
- if (bean) {
- var hasProp = false;
-
- for (var i = 0; i < props.length; i++) {
- if (bean[props[i]]) {
- hasProp = true;
+function addBeanWithProperties(res, bean, beanPropName, beanClass, props, alwaysCreateBean) {
+ if (!bean)
+ return;
- break;
- }
+ var hasProp = false;
+ for (var i = 0; i < props.length; i++) {
+ if (bean[props[i]]) {
+ hasProp = true;
+ break;
}
-
- if (hasProp) {
- res.emptyLineIfNeeded();
-
- res.startBlock('<property name="' + beanPropName + '">');
- res.startBlock('<bean class="' + beanClass + '">');
-
- for (i = 0; i < props.length; i++) {
- addProperty(res, bean, props[i]);
- }
-
- res.endBlock('</bean>');
- res.endBlock('</property>');
+ }
+
+ if (hasProp) {
+ res.emptyLineIfNeeded();
+ res.startBlock('<property name="' + beanPropName + '">');
+ res.startBlock('<bean class="' + beanClass + '">');
+ for (i = 0; i < props.length; i++) {
+ addProperty(res, bean, props[i]);
}
+ res.endBlock('</bean>');
+ res.endBlock('</property>');
+ }
+ else if (alwaysCreateBean) {
+ res.emptyLineIfNeeded();
+ res.line('<property name="' + beanPropName + '">');
+ res.line(' <bean class="' + beanClass + '"/>');
+ res.line('</property>');
}
}
-
function addListProperty(res, obj, propName) {
var val = obj[propName];