You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/09/09 08:01:16 UTC

[1/2] ignite git commit: IGNITE-843 Refactored preview generation.

Repository: ignite
Updated Branches:
  refs/heads/ignite-843 c53103bfc -> e083c18c2


IGNITE-843 Refactored preview generation.


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

Branch: refs/heads/ignite-843
Commit: d856287fd2169984a765ce01e730a64d3522633f
Parents: c53103b
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Wed Sep 9 10:52:26 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Sep 9 10:52:26 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/caches-controller.js    |  90 +++++++-------
 .../main/js/controllers/clusters-controller.js  | 117 +++++++++----------
 .../main/js/controllers/metadata-controller.js  |  28 ++---
 3 files changed, 108 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d856287f/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 6543f9c..ccc126b 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
@@ -224,53 +224,6 @@ controlCenterModule.controller('cachesController', [
                 return true;
             };
 
-            // Fill cache previews.
-            function generatePreview(val) {
-                if ($common.isDefined(val)) {
-                    var metadatas = _.reduce($scope.metadatas, function(memo, meta){
-                        if (_.contains(val.metadatas, meta.value)) {
-                            memo.push(meta.meta);
-                        }
-
-                        return memo;
-                    }, []);
-
-                    var varName = 'cache';
-
-                    $scope.preview.general.xml = $generatorXml.cacheMetadatas(metadatas, $generatorXml.cacheGeneral(val)).join('');
-                    $scope.preview.general.java = $generatorJava.cacheMetadatas(metadatas, varName, $generatorJava.cacheGeneral(val, varName)).join('');
-                    $scope.preview.general.allDefaults = $common.isEmptyString($scope.preview.general.xml);
-
-                    $scope.preview.memory.xml = $generatorXml.cacheMemory(val).join('');
-                    $scope.preview.memory.java = $generatorJava.cacheMemory(val, varName).join('');
-                    $scope.preview.memory.allDefaults = $common.isEmptyString($scope.preview.memory.xml);
-
-                    $scope.preview.query.xml = $generatorXml.cacheQuery(val).join('');
-                    $scope.preview.query.java = $generatorJava.cacheQuery(val, varName).join('');
-                    $scope.preview.query.allDefaults = $common.isEmptyString($scope.preview.query.xml);
-
-                    $scope.preview.store.xml = $generatorXml.cacheStore(val).join('');
-                    $scope.preview.store.java = $generatorJava.cacheStore(val, varName).join('');
-                    $scope.preview.store.allDefaults = $common.isEmptyString($scope.preview.store.xml);
-
-                    $scope.preview.concurrency.xml = $generatorXml.cacheConcurrency(val).join('');
-                    $scope.preview.concurrency.java = $generatorJava.cacheConcurrency(val, varName).join('');
-                    $scope.preview.concurrency.allDefaults = $common.isEmptyString($scope.preview.concurrency.xml);
-
-                    $scope.preview.rebalance.xml = $generatorXml.cacheRebalance(val).join('');
-                    $scope.preview.rebalance.java = $generatorJava.cacheRebalance(val, varName).join('');
-                    $scope.preview.rebalance.allDefaults = $common.isEmptyString($scope.preview.rebalance.xml);
-
-                    $scope.preview.serverNearCache.xml = $generatorXml.cacheServerNearCache(val).join('');
-                    $scope.preview.serverNearCache.java = $generatorJava.cacheServerNearCache(val, varName).join('');
-                    $scope.preview.serverNearCache.allDefaults = $common.isEmptyString($scope.preview.serverNearCache.xml);
-
-                    $scope.preview.statistics.xml = $generatorXml.cacheStatistics(val).join('');
-                    $scope.preview.statistics.java = $generatorJava.cacheStatistics(val, varName).join('');
-                    $scope.preview.statistics.allDefaults = $common.isEmptyString($scope.preview.statistics.xml);
-                }
-            }
-
             // When landing on the page, get caches and show them.
             $http.post('caches/list')
                 .success(function (data) {
@@ -350,7 +303,48 @@ controlCenterModule.controller('cachesController', [
                         if (val) {
                             sessionStorage.cacheBackupItem = angular.toJson(val);
 
-                            generatePreview(val);
+                            // Collect cache metadatas.
+                            var cacheMetadatas = _.reduce($scope.metadatas, function(memo, meta){
+                                if (_.contains(val.metadatas, meta.value)) {
+                                    memo.push(meta.meta);
+                                }
+
+                                return memo;
+                            }, []);
+
+                            var varName = 'cache';
+
+                            $scope.preview.general.xml = $generatorXml.cacheMetadatas(cacheMetadatas, $generatorXml.cacheGeneral(val)).join('');
+                            $scope.preview.general.java = $generatorJava.cacheMetadatas(cacheMetadatas, varName, $generatorJava.cacheGeneral(val, varName)).join('');
+                            $scope.preview.general.allDefaults = $common.isEmptyString($scope.preview.general.xml);
+
+                            $scope.preview.memory.xml = $generatorXml.cacheMemory(val).join('');
+                            $scope.preview.memory.java = $generatorJava.cacheMemory(val, varName).join('');
+                            $scope.preview.memory.allDefaults = $common.isEmptyString($scope.preview.memory.xml);
+
+                            $scope.preview.query.xml = $generatorXml.cacheQuery(val).join('');
+                            $scope.preview.query.java = $generatorJava.cacheQuery(val, varName).join('');
+                            $scope.preview.query.allDefaults = $common.isEmptyString($scope.preview.query.xml);
+
+                            $scope.preview.store.xml = $generatorXml.cacheStore(val).join('');
+                            $scope.preview.store.java = $generatorJava.cacheStore(val, varName).join('');
+                            $scope.preview.store.allDefaults = $common.isEmptyString($scope.preview.store.xml);
+
+                            $scope.preview.concurrency.xml = $generatorXml.cacheConcurrency(val).join('');
+                            $scope.preview.concurrency.java = $generatorJava.cacheConcurrency(val, varName).join('');
+                            $scope.preview.concurrency.allDefaults = $common.isEmptyString($scope.preview.concurrency.xml);
+
+                            $scope.preview.rebalance.xml = $generatorXml.cacheRebalance(val).join('');
+                            $scope.preview.rebalance.java = $generatorJava.cacheRebalance(val, varName).join('');
+                            $scope.preview.rebalance.allDefaults = $common.isEmptyString($scope.preview.rebalance.xml);
+
+                            $scope.preview.serverNearCache.xml = $generatorXml.cacheServerNearCache(val).join('');
+                            $scope.preview.serverNearCache.java = $generatorJava.cacheServerNearCache(val, varName).join('');
+                            $scope.preview.serverNearCache.allDefaults = $common.isEmptyString($scope.preview.serverNearCache.xml);
+
+                            $scope.preview.statistics.xml = $generatorXml.cacheStatistics(val).join('');
+                            $scope.preview.statistics.java = $generatorJava.cacheStatistics(val, varName).join('');
+                            $scope.preview.statistics.allDefaults = $common.isEmptyString($scope.preview.statistics.xml);
 
                             $common.markChanged($scope.ui.inputForm, 'cacheBackupItemChanged');
                         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/d856287f/modules/control-center-web/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
index c21e309..a1131fa 100644
--- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
@@ -159,67 +159,6 @@ controlCenterModule.controller('clustersController', ['$scope', '$controller', '
                 $common.showError(errMsg);
             });
 
-        // Fill cluster previews.
-        function generatePreview(val) {
-            if ($common.isDefined(val)) {
-                var clusterCaches = _.reduce($scope.caches, function(caches, cache){
-                    if (_.contains(val.caches, cache.value)) {
-                        caches.push(cache.cache);
-                    }
-
-                    return caches;
-                }, []);
-
-                $scope.preview.general.xml = $generatorXml.clusterCaches(clusterCaches, $generatorXml.clusterGeneral(val)).join('');
-                $scope.preview.general.java = $generatorJava.clusterCaches(clusterCaches, $generatorJava.clusterGeneral(val)).join('');
-                $scope.preview.general.allDefaults = $common.isEmptyString($scope.preview.general.xml);
-
-                $scope.preview.atomics.xml = $generatorXml.clusterAtomics(val).join('');
-                $scope.preview.atomics.java = $generatorJava.clusterAtomics(val).join('');
-                $scope.preview.atomics.allDefaults = $common.isEmptyString($scope.preview.atomics.xml);
-
-                $scope.preview.communication.xml = $generatorXml.clusterCommunication(val).join('');
-                $scope.preview.communication.java = $generatorJava.clusterCommunication(val).join('');
-                $scope.preview.communication.allDefaults = $common.isEmptyString($scope.preview.communication.xml);
-
-                $scope.preview.deployment.xml = $generatorXml.clusterDeployment(val).join('');
-                $scope.preview.deployment.java = $generatorJava.clusterDeployment(val).join('');
-                $scope.preview.deployment.allDefaults = $common.isEmptyString($scope.preview.deployment.xml);
-
-                $scope.preview.events.xml = $generatorXml.clusterEvents(val).join('');
-                $scope.preview.events.java = $generatorJava.clusterEvents(val).join('');
-                $scope.preview.events.allDefaults = $common.isEmptyString($scope.preview.events.xml);
-
-                $scope.preview.marshaller.xml = $generatorXml.clusterMarshaller(val).join('');
-                $scope.preview.marshaller.java = $generatorJava.clusterMarshaller(val).join('');
-                $scope.preview.marshaller.allDefaults = $common.isEmptyString($scope.preview.marshaller.xml);
-
-                $scope.preview.metrics.xml = $generatorXml.clusterMetrics(val).join('');
-                $scope.preview.metrics.java = $generatorJava.clusterMetrics(val).join('');
-                $scope.preview.metrics.allDefaults = $common.isEmptyString($scope.preview.metrics.xml);
-
-                $scope.preview.p2p.xml = $generatorXml.clusterP2p(val).join('');
-                $scope.preview.p2p.java = $generatorJava.clusterP2p(val).join('');
-                $scope.preview.p2p.allDefaults = $common.isEmptyString($scope.preview.p2p.xml);
-
-                $scope.preview.swap.xml = $generatorXml.clusterSwap(val).join('');
-                $scope.preview.swap.java = $generatorJava.clusterSwap(val).join('');
-                $scope.preview.swap.allDefaults = $common.isEmptyString($scope.preview.swap.xml);
-
-                $scope.preview.time.xml = $generatorXml.clusterTime(val).join('');
-                $scope.preview.time.java = $generatorJava.clusterTime(val).join('');
-                $scope.preview.time.allDefaults = $common.isEmptyString($scope.preview.time.xml);
-
-                $scope.preview.pools.xml = $generatorXml.clusterPools(val).join('');
-                $scope.preview.pools.java = $generatorJava.clusterPools(val).join('');
-                $scope.preview.pools.allDefaults = $common.isEmptyString($scope.preview.pools.xml);
-
-                $scope.preview.transactions.xml = $generatorXml.clusterTransactions(val).join('');
-                $scope.preview.transactions.java = $generatorJava.clusterTransactions(val).join('');
-                $scope.preview.transactions.allDefaults = $common.isEmptyString($scope.preview.transactions.xml);
-            }
-        }
-
         // When landing on the page, get clusters and show them.
         $http.post('clusters/list')
             .success(function (data) {
@@ -274,7 +213,61 @@ controlCenterModule.controller('clustersController', ['$scope', '$controller', '
                     if (val) {
                         sessionStorage.clusterBackupItem = angular.toJson(val);
 
-                        generatePreview(val);
+                        var clusterCaches = _.reduce($scope.caches, function(caches, cache){
+                            if (_.contains(val.caches, cache.value)) {
+                                caches.push(cache.cache);
+                            }
+
+                            return caches;
+                        }, []);
+
+                        $scope.preview.general.xml = $generatorXml.clusterCaches(clusterCaches, $generatorXml.clusterGeneral(val)).join('');
+                        $scope.preview.general.java = $generatorJava.clusterCaches(clusterCaches, $generatorJava.clusterGeneral(val)).join('');
+                        $scope.preview.general.allDefaults = $common.isEmptyString($scope.preview.general.xml);
+
+                        $scope.preview.atomics.xml = $generatorXml.clusterAtomics(val).join('');
+                        $scope.preview.atomics.java = $generatorJava.clusterAtomics(val).join('');
+                        $scope.preview.atomics.allDefaults = $common.isEmptyString($scope.preview.atomics.xml);
+
+                        $scope.preview.communication.xml = $generatorXml.clusterCommunication(val).join('');
+                        $scope.preview.communication.java = $generatorJava.clusterCommunication(val).join('');
+                        $scope.preview.communication.allDefaults = $common.isEmptyString($scope.preview.communication.xml);
+
+                        $scope.preview.deployment.xml = $generatorXml.clusterDeployment(val).join('');
+                        $scope.preview.deployment.java = $generatorJava.clusterDeployment(val).join('');
+                        $scope.preview.deployment.allDefaults = $common.isEmptyString($scope.preview.deployment.xml);
+
+                        $scope.preview.events.xml = $generatorXml.clusterEvents(val).join('');
+                        $scope.preview.events.java = $generatorJava.clusterEvents(val).join('');
+                        $scope.preview.events.allDefaults = $common.isEmptyString($scope.preview.events.xml);
+
+                        $scope.preview.marshaller.xml = $generatorXml.clusterMarshaller(val).join('');
+                        $scope.preview.marshaller.java = $generatorJava.clusterMarshaller(val).join('');
+                        $scope.preview.marshaller.allDefaults = $common.isEmptyString($scope.preview.marshaller.xml);
+
+                        $scope.preview.metrics.xml = $generatorXml.clusterMetrics(val).join('');
+                        $scope.preview.metrics.java = $generatorJava.clusterMetrics(val).join('');
+                        $scope.preview.metrics.allDefaults = $common.isEmptyString($scope.preview.metrics.xml);
+
+                        $scope.preview.p2p.xml = $generatorXml.clusterP2p(val).join('');
+                        $scope.preview.p2p.java = $generatorJava.clusterP2p(val).join('');
+                        $scope.preview.p2p.allDefaults = $common.isEmptyString($scope.preview.p2p.xml);
+
+                        $scope.preview.swap.xml = $generatorXml.clusterSwap(val).join('');
+                        $scope.preview.swap.java = $generatorJava.clusterSwap(val).join('');
+                        $scope.preview.swap.allDefaults = $common.isEmptyString($scope.preview.swap.xml);
+
+                        $scope.preview.time.xml = $generatorXml.clusterTime(val).join('');
+                        $scope.preview.time.java = $generatorJava.clusterTime(val).join('');
+                        $scope.preview.time.allDefaults = $common.isEmptyString($scope.preview.time.xml);
+
+                        $scope.preview.pools.xml = $generatorXml.clusterPools(val).join('');
+                        $scope.preview.pools.java = $generatorJava.clusterPools(val).join('');
+                        $scope.preview.pools.allDefaults = $common.isEmptyString($scope.preview.pools.xml);
+
+                        $scope.preview.transactions.xml = $generatorXml.clusterTransactions(val).join('');
+                        $scope.preview.transactions.java = $generatorJava.clusterTransactions(val).join('');
+                        $scope.preview.transactions.allDefaults = $common.isEmptyString($scope.preview.transactions.xml);
 
                         $common.markChanged($scope.ui.inputForm, 'clusterBackupItemChanged');
                     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/d856287f/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 7cc3b1c..e349b09 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
@@ -531,22 +531,6 @@ controlCenterModule.controller('metadataController', [
                 }
             };
 
-            function generatePreview(val) {
-                if ($common.isDefined(val)) {
-                    $scope.preview.general.xml = $generatorXml.metadataGeneral(val).join('');
-                    $scope.preview.general.java = $generatorJava.metadataGeneral(val).join('');
-                    $scope.preview.general.allDefaults = $common.isEmptyString($scope.preview.general.xml);
-
-                    $scope.preview.query.xml = $generatorXml.metadataQuery(val).join('');
-                    $scope.preview.query.java = $generatorJava.metadataQuery(val).join('');
-                    $scope.preview.query.allDefaults = $common.isEmptyString($scope.preview.query.xml);
-
-                    $scope.preview.store.xml = $generatorXml.metadataStore(val).join('');
-                    $scope.preview.store.java = $generatorJava.metadataStore(val).join('');
-                    $scope.preview.store.allDefaults = $common.isEmptyString($scope.preview.store.xml);
-                }
-            }
-
             // When landing on the page, get metadatas and show them.
             $http.post('metadata/list')
                 .success(function (data) {
@@ -606,7 +590,17 @@ controlCenterModule.controller('metadataController', [
                         if (val) {
                             sessionStorage.metadataBackupItem = angular.toJson(val);
 
-                            generatePreview(val);
+                            $scope.preview.general.xml = $generatorXml.metadataGeneral(val).join('');
+                            $scope.preview.general.java = $generatorJava.metadataGeneral(val).join('');
+                            $scope.preview.general.allDefaults = $common.isEmptyString($scope.preview.general.xml);
+
+                            $scope.preview.query.xml = $generatorXml.metadataQuery(val).join('');
+                            $scope.preview.query.java = $generatorJava.metadataQuery(val).join('');
+                            $scope.preview.query.allDefaults = $common.isEmptyString($scope.preview.query.xml);
+
+                            $scope.preview.store.xml = $generatorXml.metadataStore(val).join('');
+                            $scope.preview.store.java = $generatorJava.metadataStore(val).join('');
+                            $scope.preview.store.allDefaults = $common.isEmptyString($scope.preview.store.xml);
 
                             $common.markChanged($scope.ui.inputForm, 'metadataBackupItemChanged');
                         }


[2/2] ignite git commit: IGNITE-843 WIP link caches and metadata.

Posted by ak...@apache.org.
IGNITE-843 WIP link caches and metadata.


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

Branch: refs/heads/ignite-843
Commit: e083c18c2e0424986b33feff228616bd20d1e9e0
Parents: d856287
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Wed Sep 9 13:01:51 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Sep 9 13:01:51 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/caches-controller.js    | 29 ++++++++++++++++++--
 .../src/main/js/controllers/common-module.js    | 15 ++++++++++
 .../main/js/controllers/metadata-controller.js  | 23 +++-------------
 .../src/main/js/controllers/models/caches.json  |  1 +
 .../main/js/routes/generator/generator-java.js  |  2 +-
 5 files changed, 48 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e083c18c/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 ccc126b..15bcb5e 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
@@ -299,10 +299,14 @@ controlCenterModule.controller('cachesController', [
                     else if ($scope.caches.length > 0)
                         $scope.selectItem($scope.caches[0]);
 
+                    function isStoreFactoryDefined(cache) {
+                        return $common.isDefined(cache)
+                            && $common.isDefined(cache.cacheStoreFactory)
+                            && $common.isDefined(cache.cacheStoreFactory.kind);
+                    }
+
                     $scope.$watch('backupItem', function (val) {
                         if (val) {
-                            sessionStorage.cacheBackupItem = angular.toJson(val);
-
                             // Collect cache metadatas.
                             var cacheMetadatas = _.reduce($scope.metadatas, function(memo, meta){
                                 if (_.contains(val.metadatas, meta.value)) {
@@ -312,6 +316,25 @@ controlCenterModule.controller('cachesController', [
                                 return memo;
                             }, []);
 
+                            var prevVal = angular.fromJson(sessionStorage.cacheBackupItem);
+                            var prevCacheStore = isStoreFactoryDefined(prevVal);
+                            var newCacheStore = isStoreFactoryDefined(val);
+
+                            if (!prevCacheStore && !newCacheStore) {
+                                if (_.findIndex(cacheMetadatas, $common.metadataForStoreConfigured) >= 0) {
+                                    val.cacheStoreFactory.kind = 'CacheJdbcPojoStoreFactory';
+
+                                    if (!val.readThrough && !val.writeThrough) {
+                                        val.readThrough = true;
+                                        val.writeThrough = true;
+                                    }
+
+                                    $timeout(function () {
+                                        $common.ensureActivePanel($scope.panels, 'store', 'dataSourceBean');
+                                    });
+                                }
+                            }
+
                             var varName = 'cache';
 
                             $scope.preview.general.xml = $generatorXml.cacheMetadatas(cacheMetadatas, $generatorXml.cacheGeneral(val)).join('');
@@ -346,6 +369,8 @@ controlCenterModule.controller('cachesController', [
                             $scope.preview.statistics.java = $generatorJava.cacheStatistics(val, varName).join('');
                             $scope.preview.statistics.allDefaults = $common.isEmptyString($scope.preview.statistics.xml);
 
+                            sessionStorage.cacheBackupItem = angular.toJson(val);
+
                             $common.markChanged($scope.ui.inputForm, 'cacheBackupItemChanged');
                         }
                     }, true);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e083c18c/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 3363fb2..c5eb0fc 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
@@ -599,6 +599,21 @@ controlCenterModule.service('$common', [
 
                 return true;
             },
+            metadataForQueryConfigured: function (meta) {
+                return meta
+                    && !(isEmptyArray(meta.queryFields)
+                    && isEmptyArray(meta.ascendingFields)
+                    && isEmptyArray(meta.descendingFields)
+                    && isEmptyArray(meta.textFields)
+                    && isEmptyArray(meta.groups))
+            },
+            metadataForStoreConfigured: function (meta) {
+                return meta
+                    && !(isEmptyString(meta.databaseSchema)
+                    && isEmptyString(meta.databaseTable)
+                    && isEmptyArray(meta.keyFields)
+                    && isEmptyArray(meta.valueFields))
+            },
             /**
              * Cut class name by width in pixel or width in symbol count.
              *

http://git-wip-us.apache.org/repos/asf/ignite/blob/e083c18c/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 e349b09..bcdb873 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
@@ -675,21 +675,6 @@ controlCenterModule.controller('metadataController', [
                 $scope.selectItem(undefined, {space: $scope.spaces[0]._id, caches: []});
             };
 
-            function queryConfigured(item) {
-                return !($common.isEmptyArray(item.queryFields)
-                    && $common.isEmptyArray(item.ascendingFields)
-                    && $common.isEmptyArray(item.descendingFields)
-                    && $common.isEmptyArray(item.textFields)
-                    && $common.isEmptyArray(item.groups))
-            }
-
-            function storeConfigured(item) {
-                return !($common.isEmptyString(item.databaseSchema)
-                    && $common.isEmptyString(item.databaseTable)
-                    && $common.isEmptyArray(item.keyFields)
-                    && $common.isEmptyArray(item.valueFields))
-            }
-
             // Check metadata logical consistency.
             function validate(item) {
                 if ($common.isEmptyString(item.name))
@@ -705,7 +690,7 @@ controlCenterModule.controller('metadataController', [
                 else if (!$common.isValidJavaClass('Value type', item.valueType, false, 'valueType'))
                     return false;
 
-                var qry = queryConfigured(item);
+                var qry = $common.metadataForQueryConfigured(item);
 
                 if (qry) {
                     var groups = item.groups;
@@ -725,7 +710,7 @@ controlCenterModule.controller('metadataController', [
                     }
                 }
 
-                var str = storeConfigured(item);
+                var str = $common.metadataForStoreConfigured(item);
 
                 if (str) {
                     if ($common.isEmptyString(item.databaseSchema))
@@ -749,8 +734,8 @@ controlCenterModule.controller('metadataController', [
 
             // Save cache type metadata into database.
             function save(item, quiet) {
-                var qry = queryConfigured(item);
-                var str = storeConfigured(item);
+                var qry = $common.metadataForQueryConfigured(item);
+                var str = $common.metadataForStoreConfigured(item);
 
                 item.kind = 'query';
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/e083c18c/modules/control-center-web/src/main/js/controllers/models/caches.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/models/caches.json b/modules/control-center-web/src/main/js/controllers/models/caches.json
index 6c1037f..e8a8c23 100644
--- a/modules/control-center-web/src/main/js/controllers/models/caches.json
+++ b/modules/control-center-web/src/main/js/controllers/models/caches.json
@@ -434,6 +434,7 @@
               "fields": [
                 {
                   "label": "Data source bean",
+                  "id": "dataSourceBean",
                   "type": "text",
                   "path": "cacheStoreFactory.CacheJdbcPojoStoreFactory",
                   "model": "dataSourceBean",

http://git-wip-us.apache.org/repos/asf/ignite/blob/e083c18c/modules/control-center-web/src/main/js/routes/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-java.js b/modules/control-center-web/src/main/js/routes/generator/generator-java.js
index 4b48805..51cd0f6 100644
--- a/modules/control-center-web/src/main/js/routes/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/routes/generator/generator-java.js
@@ -35,7 +35,7 @@ $generatorJava = {};
  * @returns {string} Valid java name.
  */
 $generatorJava.toJavaName = function (prefix, name) {
-    var javaName = name.replace(/[^A-Za-z_0-9]+/, '_');
+    var javaName = name ? name.replace(/[^A-Za-z_0-9]+/, '_') : 'dflt';
 
     return prefix + javaName.charAt(0).toLocaleUpperCase() + javaName.slice(1);
 };