You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2015/11/11 10:29:21 UTC

ignite git commit: IGNITE-1867 Fixed generation, preview. Rename

Repository: ignite
Updated Branches:
  refs/heads/ignite-843-rc1 ce83ff394 -> fa7b0c9cb


IGNITE-1867 Fixed generation, preview. Rename


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/fa7b0c9c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/fa7b0c9c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/fa7b0c9c

Branch: refs/heads/ignite-843-rc1
Commit: fa7b0c9cbbe54ce0c5ee5fd9c27d1c8627110f4c
Parents: ce83ff3
Author: Andrey <an...@gridgain.com>
Authored: Wed Nov 11 16:29:06 2015 +0700
Committer: Andrey <an...@gridgain.com>
Committed: Wed Nov 11 16:29:06 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/caches-controller.js    |   6 +-
 .../src/main/js/controllers/common-module.js    |  16 +--
 .../main/js/controllers/metadata-controller.js  |  26 ++--
 .../main/js/controllers/summary-controller.js   |   3 +-
 modules/control-center-web/src/main/js/db.js    |   4 +-
 .../js/helpers/generator/generator-common.js    |   4 +-
 .../main/js/helpers/generator/generator-java.js | 131 +++++++++----------
 .../main/js/helpers/generator/generator-pom.js  |   9 ++
 .../main/js/helpers/generator/generator-xml.js  | 124 ++++++++++--------
 .../src/main/js/views/includes/controls.jade    |  10 +-
 10 files changed, 175 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/caches-controller.js b/modules/control-center-web/src/main/js/controllers/caches-controller.js
index 2ee1690..41584b8 100644
--- a/modules/control-center-web/src/main/js/controllers/caches-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/caches-controller.js
@@ -300,8 +300,10 @@ consoleModule.controller('cachesController', [
                                     $scope.preview.query.java = $generatorJava.cacheQuery(val, varName).asString();
                                     $scope.preview.query.allDefaults = $common.isEmptyString($scope.preview.query.xml);
 
-                                    $scope.preview.store.xml = $generatorXml.cacheStore(val).asString();
-                                    $scope.preview.store.java = $generatorJava.cacheStore(val, varName).asString();
+                                    var storeFactory = $generatorXml.cacheStore(val, metas);
+
+                                    $scope.preview.store.xml = $generatorXml.generateDataSources(storeFactory.datasources).asString() + storeFactory.asString();
+                                    $scope.preview.store.java = $generatorJava.cacheStore(val, metas, varName).asString();
                                     $scope.preview.store.allDefaults = $common.isEmptyString($scope.preview.store.xml);
 
                                     $scope.preview.concurrency.xml = $generatorXml.cacheConcurrency(val).asString();

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/controllers/common-module.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/common-module.js b/modules/control-center-web/src/main/js/controllers/common-module.js
index 680f3a4..3c784f5 100644
--- a/modules/control-center-web/src/main/js/controllers/common-module.js
+++ b/modules/control-center-web/src/main/js/controllers/common-module.js
@@ -1133,10 +1133,10 @@ consoleModule.service('$table', ['$common', '$focus', function ($common, $focus)
             _tableFocus('Key' + field.focusId, index);
         }
         else if (ui == 'table-db-fields') {
-            field.curDatabaseName = val.databaseName;
-            field.curDatabaseType = val.databaseType;
-            field.curJavaName = val.javaName;
-            field.curJavaType = val.javaType;
+            field.curDatabaseFieldName = val.databaseFieldName;
+            field.curDatabaseFieldType = val.databaseFieldType;
+            field.curJavaFieldName = val.javaFieldName;
+            field.curJavaFieldType = val.javaFieldType;
 
             _tableFocus('DatabaseName' + field.focusId, index);
         }
@@ -1166,10 +1166,10 @@ consoleModule.service('$table', ['$common', '$focus', function ($common, $focus)
             _tableFocus('Key' + field.focusId, -1);
         }
         else if (ui == 'table-db-fields') {
-            field.newDatabaseName = null;
-            field.newDatabaseType = null;
-            field.newJavaName = null;
-            field.newJavaType = null;
+            field.newDatabaseFieldName = null;
+            field.newDatabaseFieldType = null;
+            field.newJavaFieldName = null;
+            field.newJavaFieldType = null;
 
             _tableFocus('DatabaseName' + field.focusId, -1);
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/controllers/metadata-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/metadata-controller.js b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
index d2ea8b2..8e81c2c 100644
--- a/modules/control-center-web/src/main/js/controllers/metadata-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/metadata-controller.js
@@ -503,8 +503,8 @@ consoleModule.controller('metadataController', [
                         }
 
                         function dbField(name, jdbcType) {
-                            return {databaseName: name, databaseType: jdbcType.dbName,
-                                javaName: toJavaName(name), javaType: jdbcType.javaType}
+                            return {databaseFieldName: name, databaseFieldType: jdbcType.dbName,
+                                javaFieldName: toJavaName(name), javaFieldType: jdbcType.javaType}
                         }
 
                         var _containKey = false;
@@ -1043,15 +1043,15 @@ consoleModule.controller('metadataController', [
 
             function tableDbFieldValue(field, index) {
                 return index < 0
-                    ? {databaseName: field.newDatabaseName, databaseType: field.newDatabaseType, javaName: field.newJavaName, javaType: field.newJavaType}
-                    : {databaseName: field.curDatabaseName, databaseType: field.curDatabaseType, javaName: field.curJavaName, javaType: field.curJavaType}
+                    ? {databaseFieldName: field.newDatabaseFieldName, databaseFieldType: field.newDatabaseFieldType, javaFieldName: field.newJavaFieldName, javaFieldType: field.newJavaFieldType}
+                    : {databaseFieldName: field.curDatabaseFieldName, databaseFieldType: field.curDatabaseFieldType, javaFieldName: field.curJavaFieldName, javaFieldType: field.curJavaFieldType}
             }
 
             $scope.tableDbFieldSaveVisible = function (field, index) {
                 var dbFieldValue = tableDbFieldValue(field, index);
 
-                return !$common.isEmptyString(dbFieldValue.databaseName) && $common.isDefined(dbFieldValue.databaseType) &&
-                    !$common.isEmptyString(dbFieldValue.javaName) && $common.isDefined(dbFieldValue.javaType);
+                return !$common.isEmptyString(dbFieldValue.databaseFieldName) && $common.isDefined(dbFieldValue.databaseFieldType) &&
+                    !$common.isEmptyString(dbFieldValue.javaFieldName) && $common.isDefined(dbFieldValue.javaFieldType);
             };
 
             var dbFieldTables = {
@@ -1069,12 +1069,12 @@ consoleModule.controller('metadataController', [
 
                     var model = item[field.model];
 
-                    if (!$common.isValidJavaIdentifier(dbFieldTable.msg + ' java name', dbFieldValue.javaName, $table.tableFieldId(index, 'JavaName' + dbFieldTable.id)))
+                    if (!$common.isValidJavaIdentifier(dbFieldTable.msg + ' java name', dbFieldValue.javaFieldName, $table.tableFieldId(index, 'JavaName' + dbFieldTable.id)))
                         return false;
 
                     if ($common.isDefined(model)) {
                         var idx = _.findIndex(model, function (dbMeta) {
-                            return dbMeta.databaseName == dbFieldValue.databaseName;
+                            return dbMeta.databaseFieldName == dbFieldValue.databaseFieldName;
                         });
 
                         // Found duplicate.
@@ -1082,7 +1082,7 @@ consoleModule.controller('metadataController', [
                             return showPopoverMessage(null, null, $table.tableFieldId(index, 'DatabaseName' + dbFieldTable.id), 'Field with such database name already exists!');
 
                         idx = _.findIndex(model, function (dbMeta) {
-                            return dbMeta.javaName == dbFieldValue.javaName;
+                            return dbMeta.javaFieldName == dbFieldValue.javaFieldName;
                         });
 
                         // Found duplicate.
@@ -1095,10 +1095,10 @@ consoleModule.controller('metadataController', [
                         else {
                             var dbField = model[index];
 
-                            dbField.databaseName = dbFieldValue.databaseName;
-                            dbField.databaseType = dbFieldValue.databaseType;
-                            dbField.javaName = dbFieldValue.javaName;
-                            dbField.javaType = dbFieldValue.javaType;
+                            dbField.databaseFieldName = dbFieldValue.databaseFieldName;
+                            dbField.databaseFieldType = dbFieldValue.databaseFieldType;
+                            dbField.javaFieldName = dbFieldValue.javaFieldName;
+                            dbField.javaFieldType = dbFieldValue.javaFieldType;
                         }
                     }
                     else {

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/controllers/summary-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/summary-controller.js b/modules/control-center-web/src/main/js/controllers/summary-controller.js
index f443ac0..4fa27f5 100644
--- a/modules/control-center-web/src/main/js/controllers/summary-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/summary-controller.js
@@ -215,8 +215,9 @@ consoleModule.controller('summaryController', [
 
         zip.file(srcPath + 'ServerConfigurationFactory.java', $generatorJava.cluster(cluster, 'ServerConfigurationFactory'));
         zip.file(srcPath + 'ClientConfigurationFactory.java', $generatorJava.cluster(cluster, 'ClientConfigurationFactory', clientNearConfiguration));
+        zip.file(srcPath + 'NodeStartup.java', $generatorJava.nodeStartup(cluster));
 
-        zip.file('pom.xml', $generatorPom.pom(cluster.caches, '1.5.0').asString());
+        zip.file('pom.xml', $generatorPom.pom(cluster.caches, '1.5.0-IWC').asString());
 
         zip.file('README.txt', $generatorReadme.readme().asString());
         zip.file('jdbc-drivers/README.txt', $generatorReadme.readmeJdbc().asString());

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/db.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/db.js b/modules/control-center-web/src/main/js/db.js
index cce1976..6d4df8d 100644
--- a/modules/control-center-web/src/main/js/db.js
+++ b/modules/control-center-web/src/main/js/db.js
@@ -78,8 +78,8 @@ var CacheTypeMetadataSchema = new Schema({
     databaseTable: String,
     keyType: String,
     valueType: String,
-    keyFields: [{databaseName: String, databaseType: String, javaName: String, javaType: String}],
-    valueFields: [{databaseName: String, databaseType: String, javaName: String, javaType: String}],
+    keyFields: [{databaseFieldName: String, databaseFieldType: String, javaFieldName: String, javaFieldType: String}],
+    valueFields: [{databaseFieldName: String, databaseFieldType: String, javaFieldName: String, javaFieldType: String}],
     keepSerialized: Boolean,
     fields: [{name: String, className: String}],
     aliases: [{field: String, alias: String}],

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/helpers/generator/generator-common.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-common.js b/modules/control-center-web/src/main/js/helpers/generator/generator-common.js
index 16bb952..d9c903b 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-common.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-common.js
@@ -46,10 +46,10 @@ $generatorCommon.mainComment = function mainComment() {
 };
 
 // Create result holder with service functions and properties for XML and java code generation.
-$generatorCommon.builder = function () {
+$generatorCommon.builder = function (deep) {
     var res = [];
 
-    res.deep = 0;
+    res.deep = deep ? deep : 0;
     res.needEmptyLine = false;
     res.lineStart = true;
     res.datasources = [];

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
index cda5db7..138aa7b 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
@@ -119,7 +119,7 @@ $generatorJava.property = function (res, varName, obj, propName, dataType, sette
             res.emptyLineIfNeeded();
 
             res.line(varName + '.' + $generatorJava.setterName(propName, setterName)
-                + '(' + $generatorJava.toJavaCode(val, dataType) + ');');
+                + '(' + $generatorJava.toJavaCode(val, dataType ? res.importClass(dataType) : null) + ');');
 
             return true;
         }
@@ -129,24 +129,6 @@ $generatorJava.property = function (res, varName, obj, propName, dataType, sette
 };
 
 /**
- * Add property via setter assuming that it is a 'Class'.
- *
- * @param res Resulting output with generated code.
- * @param varName Variable name.
- * @param obj Source object with data.
- * @param propName Property name to take from source object.
- */
-$generatorJava.classNameProperty = function (res, varName, obj, propName) {
-    var val = obj[propName];
-
-    if ($commonUtils.isDefined(val)) {
-        res.emptyLineIfNeeded();
-
-        res.line(varName + '.' + $generatorJava.setterName(propName) + '(' + res.importClass(val) + '.class);');
-    }
-};
-
-/**
  * Add list property.
  *
  * @param res Resulting output with generated code.
@@ -259,7 +241,7 @@ $generatorJava.beanProperty = function (res, varName, bean, beanPropName, beanVa
                             break;
 
                         case 'enum':
-                            $generatorJava.property(res, beanVarName, bean, propName, res.importClass(descr.enumClass), descr.setterName);
+                            $generatorJava.property(res, beanVarName, bean, propName, descr.enumClass, descr.setterName);
                             break;
 
                         case 'float':
@@ -844,7 +826,7 @@ $generatorJava.cacheQuery = function (cache, varName, res) {
  * @param res Resulting output with generated code.
  * @returns {*} Java code for cache store configuration.
  */
-$generatorJava.cacheStore = function (cache, cacheVarName, res) {
+$generatorJava.cacheStore = function (cache, metadatas, cacheVarName, res) {
     if (!res)
         res = $generatorCommon.builder();
 
@@ -886,6 +868,8 @@ $generatorJava.cacheStore = function (cache, cacheVarName, res) {
 
                     res.line('dataSource.setUser(props.getProperty("' + dataSourceBean + '.jdbc.username"));');
                     res.line('dataSource.setPassword(props.getProperty("' + dataSourceBean + '.jdbc.password"));');
+
+                    res.needEmptyLine = true;
                 }
             }
 
@@ -893,22 +877,20 @@ $generatorJava.cacheStore = function (cache, cacheVarName, res) {
                 // Generate POJO store factory.
                 $generatorJava.declareVariable(res, 'storeFactory', 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory');
 
-                $generatorJava.declareVariable(res, 'storeFactoryCfg', 'org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreConfiguration');
-
                 if (dataSourceFound)
-                    res.line('storeFactoryCfg.setDataSource(dataSource);');
+                    res.line('storeFactory.setDataSource(dataSource);');
 
-                res.line('storeFactoryCfg.setDialect(new ' +
+                res.line('storeFactory.setDialect(new ' +
                     res.importClass($generatorCommon.jdbcDialectClassName(storeFactory.dialect)) + '());');
 
                 res.needEmptyLine = true;
 
-                if (cache.metadatas && cache.metadatas.length > 0) {
+                if (metadatas && metadatas.length > 0) {
                     $generatorJava.declareVariable(res, 'jdbcTypes', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.store.jdbc.JdbcType');
 
                     res.needEmptyLine = true;
 
-                    _.forEach(cache.metadatas, function (meta) {
+                    _.forEach(metadatas, function (meta) {
                         $generatorJava.declareVariable(res, 'jdbcType', 'org.apache.ignite.cache.store.jdbc.JdbcType');
 
                         res.needEmptyLine = true;
@@ -922,12 +904,10 @@ $generatorJava.cacheStore = function (cache, cacheVarName, res) {
                         res.needEmptyLine = true;
                     });
 
-                    res.line('storeFactoryCfg.setTypes(jdbcTypes);');
+                    res.line('storeFactory.setTypes(jdbcTypes.toArray(new JdbcType[jdbcTypes.size()]));');
 
                     res.needEmptyLine = true;
                 }
-
-                res.line('storeFactory.setConfiguration(storeFactoryCfg);');
             }
             else {
                 $generatorJava.beanProperty(res, cacheVarName, storeFactory, 'cacheStoreFactory', 'storeFactory',
@@ -940,7 +920,7 @@ $generatorJava.cacheStore = function (cache, cacheVarName, res) {
             res.needEmptyLine = true;
         }
 
-        res.line(cacheVarName + '.setStoreFactory(storeFactory);');
+        res.line(cacheVarName + '.setCacheStoreFactory(storeFactory);');
 
         res.needEmptyLine = true;
     }
@@ -969,8 +949,8 @@ $generatorJava.cacheConcurrency = function (cache, varName, res) {
 
     $generatorJava.property(res, varName, cache, 'maxConcurrentAsyncOperations');
     $generatorJava.property(res, varName, cache, 'defaultLockTimeout');
-    $generatorJava.property(res, varName, cache, 'atomicWriteOrderMode', res.importClass('org.apache.ignite.cache.CacheAtomicWriteOrderMode'));
-    $generatorJava.property(res, varName, cache, 'writeSynchronizationMode', res.importClass('org.apache.ignite.cache.CacheWriteSynchronizationMode'));
+    $generatorJava.property(res, varName, cache, 'atomicWriteOrderMode', 'org.apache.ignite.cache.CacheAtomicWriteOrderMode');
+    $generatorJava.property(res, varName, cache, 'writeSynchronizationMode', 'org.apache.ignite.cache.CacheWriteSynchronizationMode');
 
     res.needEmptyLine = true;
 
@@ -1084,15 +1064,15 @@ $generatorJava.metadataQueryIndexes = function (res, meta) {
     if (indexes && indexes.length > 0) {
         res.needEmptyLine = true;
 
-        $generatorJava.declareVariable(res, 'indexes', 'java.util.Map', 'java.util.LinkedHashMap', 'String', 'org.apache.ignite.cache.store.QueryEntityIndex');
+        $generatorJava.declareVariable(res, 'indexes', 'java.util.Map', 'java.util.LinkedHashMap', 'String', 'org.apache.ignite.cache.QueryIndex');
 
         _.forEach(indexes, function (index) {
             res.needEmptyLine = true;
 
-            $generatorJava.declareVariable(res, 'index', 'org.apache.ignite.cache.store.QueryEntityIndex');
+            $generatorJava.declareVariable(res, 'index', 'org.apache.ignite.cache.QueryIndex');
 
             $generatorJava.property(res, 'index', index, 'name');
-            $generatorJava.property(res, 'index', index, 'type', 'org.apache.ignite.cache.store.QueryEntityIndex.Type');
+            $generatorJava.property(res, 'index', index, 'type', 'org.apache.ignite.cache.QueryIndexType');
 
             var fields = index.fields;
 
@@ -1135,9 +1115,11 @@ $generatorJava.metadataDatabaseFields = function (res, meta, fieldProperty) {
         var lastIx = dbFields.length - 1;
 
         _.forEach(dbFields, function (field, ix) {
+            res.importClass('org.apache.ignite.cache.store.jdbc.JdbcTypeField');
+
             res.line('new JdbcTypeField(' +
-                'Types.' + field.databaseType + ', ' + '"' + field.databaseName + '", ' +
-                res.importClass(field.javaType) + '.class, ' + '"' + field.javaName + '"'+ ')' + (ix < lastIx ? ',' : ''));
+                'Types.' + field.databaseFieldType + ', ' + '"' + field.databaseFieldName + '", ' +
+                res.importClass(field.javaFieldType) + '.class, ' + '"' + field.javaFieldName + '"'+ ')' + (ix < lastIx ? ',' : ''));
         });
 
         res.endBlock(');');
@@ -1151,8 +1133,8 @@ $generatorJava.metadataGeneral = function (meta, res) {
     if (!res)
         res = $generatorCommon.builder();
 
-    $generatorJava.classNameProperty(res, 'typeMeta', meta, 'keyType');
-    $generatorJava.classNameProperty(res, 'typeMeta', meta, 'valueType');
+    $generatorJava.property(res, 'typeMeta', meta, 'keyType');
+    $generatorJava.property(res, 'typeMeta', meta, 'valueType');
 
     res.needEmptyLine = true;
 
@@ -1199,23 +1181,11 @@ $generatorJava.metadataStore = function (meta, withTypes, res) {
 };
 
 // Generate cache type metadata config.
-$generatorJava.cacheMetadata = function(meta, res) {
-    $generatorJava.declareVariable(res, 'typeMeta', 'org.apache.ignite.cache.CacheTypeMetadata');
-
-    $generatorJava.metadataGeneral(meta, res);
-
-    res.emptyLineIfNeeded();
-    res.line('types.add(typeMeta);');
-
-    res.needEmptyLine = true;
-};
-
-// Generate cache type metadata config.
 $generatorJava.cacheQueryMetadata = function(meta, res) {
-    $generatorJava.declareVariable(res, 'queryMeta', 'org.apache.ignite.cache.store.QueryEntity');
+    $generatorJava.declareVariable(res, 'queryMeta', 'org.apache.ignite.cache.QueryEntity');
 
-    $generatorJava.classNameProperty(res, 'queryMeta', meta, 'keyType');
-    $generatorJava.classNameProperty(res, 'queryMeta', meta, 'valueType');
+    $generatorJava.property(res, 'queryMeta', meta, 'keyType');
+    $generatorJava.property(res, 'queryMeta', meta, 'valueType');
 
     res.needEmptyLine = true;
 
@@ -1234,17 +1204,7 @@ $generatorJava.cacheMetadatas = function (metadatas, varName, res) {
 
     // Generate cache type metadata configs.
     if (metadatas && metadatas.length > 0) {
-        $generatorJava.declareVariable(res, 'types', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.CacheTypeMetadata');
-
-        _.forEach(metadatas, function (meta) {
-            $generatorJava.cacheMetadata(meta, res);
-        });
-
-        res.line(varName + '.setTypeMetadata(types);');
-
-        res.needEmptyLine = true;
-
-        $generatorJava.declareVariable(res, 'queryEntities', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.store.QueryEntity');
+        $generatorJava.declareVariable(res, 'queryEntities', 'java.util.Collection', 'java.util.ArrayList', 'org.apache.ignite.cache.QueryEntity');
 
         _.forEach(metadatas, function (meta) {
             $generatorJava.cacheQueryMetadata(meta, res);
@@ -1269,7 +1229,7 @@ $generatorJava.cache = function(cache, varName, res) {
 
     $generatorJava.cacheQuery(cache, varName, res);
 
-    $generatorJava.cacheStore(cache, varName, res);
+    $generatorJava.cacheStore(cache, cache.metadatas, varName, res);
 
     $generatorJava.cacheConcurrency(cache, varName, res);
 
@@ -1379,7 +1339,7 @@ $generatorJava.javaClassCode = function (meta, key, pkg, useConstructor, include
 
         res.line('/** Value for ' + fldName + '. */');
 
-        res.line('private ' + res.importClass(field.javaType) + ' ' + fldName + ';');
+        res.line('private ' + res.importClass(field.javaFieldType) + ' ' + fldName + ';');
 
         res.needEmptyLine = true;
     });
@@ -1421,7 +1381,7 @@ $generatorJava.javaClassCode = function (meta, key, pkg, useConstructor, include
     _.forEach(allFields, function (field) {
         var fldName = field.javaName;
 
-        var fldType = res.importClass(field.javaType);
+        var fldType = res.importClass(field.javaFieldType);
 
         res.line('/**');
         res.line(' * Gets ' + fldName + '.');
@@ -1793,7 +1753,7 @@ $generatorJava.igfsMisc = function(igfs, varName, res) {
 
     $generatorJava.property(res, varName, igfs, 'blockSize', null, null, 65536);
     $generatorJava.property(res, varName, igfs, 'streamBufferSize', null, null, 65536);
-    $generatorJava.property(res, varName, igfs, 'defaultMode', res.importClass('org.apache.ignite.igfs.IgfsMode'), undefined, "DUAL_ASYNC");
+    $generatorJava.property(res, varName, igfs, 'defaultMode', 'org.apache.ignite.igfs.IgfsMode', undefined, "DUAL_ASYNC");
     $generatorJava.property(res, varName, igfs, 'maxSpaceSize', null, null, 0);
     $generatorJava.property(res, varName, igfs, 'maximumTaskRangeLength', null, null, 0);
     $generatorJava.property(res, varName, igfs, 'managementPort', null, null, 11400);
@@ -1939,3 +1899,34 @@ $generatorJava.cluster = function (cluster, javaClass, clientNearCfg) {
 
     return res.asString();
 };
+
+/**
+ * Function to generate java code for cluster configuration.
+ * @param cluster Cluster to process.
+ */
+$generatorJava.nodeStartup = function (cluster) {
+    var res = $generatorCommon.builder();
+
+    res.importClass('org.apache.ignite.IgniteException');
+    res.importClass('org.apache.ignite.Ignition');
+
+    res.line('/**');
+    res.line(' * ' + $generatorCommon.mainComment());
+    res.line(' */');
+    res.startBlock('public class NodeStartup {');
+
+    res.line('/**');
+    res.line(' * Start up an server node.');
+    res.line(' *');
+    res.line(' * @param args Command line arguments, none required.');
+    res.line(' * @throws IgniteException If failed.');
+    res.line(' */');
+
+    res.startBlock('public static void main(String[] args) throws IgniteException {');
+    res.line('Ignition.start("config/' + cluster.name + '-server.xml");');
+    res.endBlock('}');
+
+    res.endBlock('}');
+
+    return res.generateImports() + '\n\n' + res.asString();
+};

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js b/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
index 20ed535..182a6e1 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
@@ -92,6 +92,15 @@ $generatorPom.pom = function (caches, igniteVersion, res) {
 
     res.needEmptyLine = true;
 
+    res.startBlock('<repositories>');
+    res.startBlock('<repository>');
+    addProperty('id', 'GridGain External Repository');
+    addProperty('url', 'http://www.gridgainsystems.com/nexus/content/repositories/gridgain_staging-1549');
+    res.endBlock('</repository>');
+    res.endBlock('</repositories>');
+
+    res.needEmptyLine = true;
+
     res.startBlock('<dependencies>');
 
     addDependency('org.apache.ignite', 'ignite-core', igniteVersion);

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
index 9f7683a..94abf9a 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
@@ -728,7 +728,7 @@ $generatorXml.cacheQuery = function(cache, res) {
 };
 
 // Generate cache store group.
-$generatorXml.cacheStore = function(cache, res) {
+$generatorXml.cacheStore = function(cache, metadatas, res) {
     if (!res)
         res = $generatorCommon.builder();
 
@@ -741,8 +741,6 @@ $generatorXml.cacheStore = function(cache, res) {
             if (factoryKind == 'CacheJdbcPojoStoreFactory') {
                 res.startBlock('<property name="cacheStoreFactory">');
                 res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">');
-                res.startBlock('<property name="configuration">');
-                res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreConfiguration">');
 
                 $generatorXml.property(res, storeFactory, 'dataSourceBean');
 
@@ -750,8 +748,6 @@ $generatorXml.cacheStore = function(cache, res) {
                 res.line('<bean class="' + $generatorCommon.jdbcDialectClassName(storeFactory.dialect) + '"/>');
                 res.endBlock('</property>');
 
-                var metadatas = cache.metadatas;
-
                 if (metadatas && metadatas.length > 0) {
                     res.startBlock('<property name="types">');
                     res.startBlock('<list>');
@@ -763,6 +759,8 @@ $generatorXml.cacheStore = function(cache, res) {
                         $generatorXml.property(res, meta, 'valueType');
                         $generatorXml.property(res, meta, 'keepSerialized', null, null, false);
 
+                        $generatorXml.metadataStore(meta, res);
+
                         res.endBlock('</bean>');
                     });
 
@@ -771,23 +769,20 @@ $generatorXml.cacheStore = function(cache, res) {
                 }
 
                 res.endBlock('</bean>');
-                res.endBlock("</property>");
-                res.endBlock('</bean>');
                 res.endBlock("</property>")
             }
-            else {
+            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
-                        });
-                    }
+            if (storeFactory.dialect && storeFactory.dataSourceBean) {
+                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
+                    });
                 }
             }
 
@@ -951,7 +946,7 @@ $generatorXml.metadataQueryIndexes = function (res, meta) {
         res.startBlock('<list>');
 
         _.forEach(indexes, function (index) {
-            res.startBlock('<bean class="org.apache.ignite.cache.store.QueryEntityIndex">');
+            res.startBlock('<bean class="org.apache.ignite.cache.QueryIndex">');
 
             $generatorXml.property(res, index, 'name');
             $generatorXml.property(res, index, 'type');
@@ -994,15 +989,15 @@ $generatorXml.metadataDatabaseFields = function (res, meta, fieldProp) {
         _.forEach(fields, function (field) {
             res.startBlock('<bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">');
 
-            $generatorXml.property(res, field, 'databaseName');
+            $generatorXml.property(res, field, 'databaseFieldName');
 
-            res.startBlock('<property name="databaseType">');
-            res.line('<util:constant static-field="java.sql.Types.' + field.databaseType + '"/>');
+            res.startBlock('<property name="databaseFieldType">');
+            res.line('<util:constant static-field="java.sql.Types.' + field.databaseFieldType + '"/>');
             res.endBlock('</property>');
 
-            $generatorXml.property(res, field, 'javaName');
+            $generatorXml.property(res, field, 'javaFieldName');
 
-            $generatorXml.classNameProperty(res, field, 'javaType');
+            $generatorXml.classNameProperty(res, field, 'javaFieldType');
 
             res.endBlock('</bean>');
         });
@@ -1068,9 +1063,9 @@ $generatorXml.cacheQueryMetadata = function(meta, res) {
     if (!res)
         res = $generatorCommon.builder();
 
-    res.startBlock('<bean class="org.apache.ignite.cache.store.QueryEntity">');
+    res.startBlock('<bean class="org.apache.ignite.cache.QueryEntity">');
 
-    $generatorXml.classNameProperty(res, meta, 'keyType');
+    $generatorXml.property(res, meta, 'keyType');
     $generatorXml.property(res, meta, 'valueType');
 
     $generatorXml.metadataQuery(meta, res);
@@ -1117,7 +1112,7 @@ $generatorXml.cache = function(cache, res) {
 
     $generatorXml.cacheQuery(cache, res);
 
-    $generatorXml.cacheStore(cache, res);
+    $generatorXml.cacheStore(cache, cache.metadatas, res);
 
     $generatorXml.cacheConcurrency(cache, res);
 
@@ -1358,11 +1353,51 @@ $generatorXml.igfsMisc = function(igfs, res) {
 };
 
 // Generate cluster config.
+$generatorXml.generateDataSources = function (datasources, res) {
+    if (!res)
+        res = $generatorCommon.builder();
+
+    if (datasources.length > 0) {
+        res.line('<!-- Data source beans will be initialized from external properties file. -->');
+
+        _.forEach(datasources, function (item) {
+            var beanId = item.dataSourceBean;
+
+            res.startBlock('<bean id="' + beanId + '" class="' + item.className + '">');
+
+            switch (item.dialect) {
+                case 'DB2':
+                    res.line('<property name="serverName" value="${' + beanId + '.jdbc.server_name}" />');
+                    res.line('<property name="portNumber" value="${' + beanId + '.jdbc.port_number}" />');
+                    res.line('<property name="databaseName" value="${' + beanId + '.jdbc.database_name}" />');
+                    res.line('<property name="driverType" value="${' + beanId + '.jdbc.driver_type}" />');
+                    break;
+
+                default:
+                    res.line('<property name="URL" value="${' + beanId + '.jdbc.url}" />');
+            }
+
+            res.line('<property name="user" value="${' + beanId + '.jdbc.username}" />');
+            res.line('<property name="password" value="${' + beanId + '.jdbc.password}" />');
+
+            res.endBlock('</bean>');
+
+            res.needEmptyLine = true;
+
+            res.emptyLineIfNeeded();
+        });
+
+        res.needEmptyLine = true;
+
+        res.emptyLineIfNeeded();
+    }
+
+    return res;
+};
+
 $generatorXml.cluster = function (cluster, clientNearCfg) {
     if (cluster) {
-        var res = $generatorCommon.builder();
-
-        res.deep = 1;
+        var res = $generatorCommon.builder(1);
 
         if (clientNearCfg) {
             res.startBlock('<bean id="nearCacheBean" class="org.apache.ignite.configuration.NearCacheConfiguration">');
@@ -1375,7 +1410,9 @@ $generatorXml.cluster = function (cluster, clientNearCfg) {
 
             res.endBlock('</bean>');
 
-            res.line();
+            res.needEmptyLine = true;
+
+            res.emptyLineIfNeeded();
         }
 
         // Generate Ignite Configuration.
@@ -1441,30 +1478,7 @@ $generatorXml.cluster = function (cluster, clientNearCfg) {
         }
 
         // 3. Add data sources.
-        if (res.datasources.length > 0) {
-            xml += '    <!-- Data source beans will be initialized from external properties file. -->\n';
-
-            _.forEach(res.datasources, function (item) {
-                var beanId = item.dataSourceBean;
-
-                xml += '    <bean id="' + beanId + '" class="' + item.className + '">\n';
-                switch (item.dialect) {
-                    case 'DB2':
-                        xml += '        <property name="serverName" value="${' + beanId + '.jdbc.server_name}" />\n';
-                        xml += '        <property name="portNumber" value="${' + beanId + '.jdbc.port_number}" />\n';
-                        xml += '        <property name="databaseName" value="${' + beanId + '.jdbc.database_name}" />\n';
-                        xml += '        <property name="driverType" value="${' + beanId + '.jdbc.driver_type}" />\n';
-                        break;
-
-                    default:
-                        xml += '        <property name="URL" value="${' + beanId + '.jdbc.url}" />\n';
-                }
-
-                xml += '        <property name="user" value="${' + beanId + '.jdbc.username}" />\n';
-                xml += '        <property name="password" value="${' + beanId + '.jdbc.password}" />\n';
-                xml += '    </bean>\n\n';
-            });
-        }
+        xml += $generatorXml.generateDataSources(res.datasources, $generatorCommon.builder(1)).asString();
 
         // 3. Add main content.
         xml += res.asString();

http://git-wip-us.apache.org/repos/asf/ignite/blob/fa7b0c9c/modules/control-center-web/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/controls.jade b/modules/control-center-web/src/main/js/views/includes/controls.jade
index 336bf67..8262ccc 100644
--- a/modules/control-center-web/src/main/js/views/includes/controls.jade
+++ b/modules/control-center-web/src/main/js/views/includes/controls.jade
@@ -237,10 +237,10 @@ mixin details-row
                                         +ico-exclamation('{{detail.model}}', 'ipaddress', 'Invalid address, see help for format description.')
 
 mixin table-db-field-edit(prefix, focusId, index)
-    -var databaseName = prefix + 'DatabaseName'
-    -var databaseType = prefix + 'DatabaseType'
-    -var javaName = prefix + 'JavaName'
-    -var javaType = prefix + 'JavaType'
+    -var databaseName = prefix + 'DatabaseFieldName'
+    -var databaseType = prefix + 'DatabaseFieldType'
+    -var javaName = prefix + 'JavaFieldName'
+    -var javaType = prefix + 'JavaFieldType'
 
     -var databaseNameModel = 'field.' + databaseName
     -var databaseTypeModel = 'field.' + databaseType
@@ -434,7 +434,7 @@ mixin form-row-custom(lblClasses, fieldClasses, dataSource)
                             tr(ng-repeat='item in #{fieldMdl}')
                                 td
                                     div(ng-show='!tableEditing(field, $index)')
-                                        a.labelFormField(ng-click='tableStartEdit(backupItem, field, $index)') {{$index + 1}}) {{item.databaseName}} / {{item.databaseType}} / {{item.javaName}} / {{item.javaType}}
+                                        a.labelFormField(ng-click='tableStartEdit(backupItem, field, $index)') {{$index + 1}}) {{item.databaseFieldName}} / {{item.databaseFieldType}} / {{item.javaFieldName}} / {{item.javaFieldType}}
                                         +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
                                     div(ng-if='tableEditing(field, $index)')
                                         +table-db-field-edit('cur', '{{::field.focusId}}', '$index')