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/28 20:57:36 UTC

[4/4] incubator-ignite git commit: # IGNITE-843 Allow to generate full java class.

# IGNITE-843 Allow to generate full java class.


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

Branch: refs/heads/ignite-843
Commit: 3feaae214a4b64743bfd6968136923ddd7a65baf
Parents: 9692272
Author: sevdokimov <se...@jetbrains.com>
Authored: Sun Jun 28 21:57:12 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Sun Jun 28 21:57:12 2015 +0300

----------------------------------------------------------------------
 .../public/javascripts/controllers/summary.js   | 36 ++++++-------
 .../webconfig/nodejs/routes/configGenerator.js  |  2 +-
 modules/webconfig/nodejs/utils/generatorJava.js | 54 +++++++++++++++-----
 .../webconfig/nodejs/utils/generatorUtils.js    | 36 ++++++++++++-
 modules/webconfig/nodejs/views/summary.jade     | 14 +++--
 5 files changed, 103 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3feaae21/modules/webconfig/nodejs/public/javascripts/controllers/summary.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/summary.js b/modules/webconfig/nodejs/public/javascripts/controllers/summary.js
index bbb78b8..c47a999 100644
--- a/modules/webconfig/nodejs/public/javascripts/controllers/summary.js
+++ b/modules/webconfig/nodejs/public/javascripts/controllers/summary.js
@@ -22,17 +22,22 @@ configuratorModule.controller('clustersList', ['$scope', '$http', function ($sco
         $scope.clusters = data.clusters;
     });
 
-    $scope.cfgLang = 'xml';
-
-    $scope.generateConfig = function(cluster) {
+    $scope.generateConfig = function() {
         var lang = $scope.cfgLang;
 
         if (lang == 'docker')
-            lang = 'xml';
+            return;
+
+        var cluster = $scope.currCluster;
+        
+        if (!cluster)
+            return;
         
         $scope.loading = true;
 
-        $http.get('/rest/configGenerator', {params: {name: cluster.name, lang: lang}}).success(
+        $http.get('/rest/configGenerator', {params: 
+        {name: cluster.name, lang: lang, generateJavaClass: $scope.generateJavaClass}})
+            .success(
             function (data) {
                 if (lang == 'java') {
                     $scope.resultJava = data;
@@ -49,6 +54,11 @@ configuratorModule.controller('clustersList', ['$scope', '$http', function ($sco
             });
     };
 
+    $scope.cfgLang = 'xml';
+
+    $scope.$watch('cfgLang', $scope.generateConfig);
+    $scope.$watch('generateJavaClass', $scope.generateConfig);
+
     $scope.dockerArg = {
         os: 'debian:8'
     };
@@ -113,21 +123,11 @@ configuratorModule.controller('clustersList', ['$scope', '$http', function ($sco
             "\n"+
             "RUN mv /tmp/*.xml /home/$(ls)/config";
     };
-    
-    $scope.setSelectedCluster = function(cluster) {
+
+    $scope.setSelectedCluster = function (cluster) {
         $scope.currCluster = cluster;
 
-        $scope.generateConfig(cluster)
+        $scope.generateConfig()
     };
-    
-    $scope.setCfgLang = function(lang) {
-        $scope.resultJava = '';
-        $scope.resultXml = '';
-        $scope.resultDocker = '';
-        
-        $scope.cfgLang = lang;
 
-        if ($scope.currCluster)
-            $scope.generateConfig($scope.currCluster, lang)
-    }
 }]);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3feaae21/modules/webconfig/nodejs/routes/configGenerator.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/routes/configGenerator.js b/modules/webconfig/nodejs/routes/configGenerator.js
index 0313e9c..f570962 100644
--- a/modules/webconfig/nodejs/routes/configGenerator.js
+++ b/modules/webconfig/nodejs/routes/configGenerator.js
@@ -55,7 +55,7 @@ router.get('/', function(req, res) {
                     break;
 
                 case 'java':
-                    res.send(generatorJava.generateClusterConfiguration(cluster));
+                    res.send(generatorJava.generateClusterConfiguration(cluster, req.query.generateJavaClass));
                     break;
 
                 default:

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3feaae21/modules/webconfig/nodejs/utils/generatorJava.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorJava.js b/modules/webconfig/nodejs/utils/generatorJava.js
index a1bc00a..0bbdd73 100644
--- a/modules/webconfig/nodejs/utils/generatorJava.js
+++ b/modules/webconfig/nodejs/utils/generatorJava.js
@@ -17,20 +17,29 @@
 
 var generatorUtils = require("./generatorUtils");
 
-exports.generateClusterConfiguration = function(cluster) {
+exports.generateClusterConfiguration = function(cluster, generateJavaClass) {
     var res = generatorUtils.builder();
 
+    if (generateJavaClass) {
+        res.startBlock('public class ConfigurationFactory {');
+        res.line();
+        res.startBlock('public IgniteConfiguration createConfiguration() {');
+    }
+    
+    res.importClass('org.apache.ignite.configuration.IgniteConfiguration');
+    
     res.line('IgniteConfiguration cfg = new IgniteConfiguration();');
     res.line();
 
     if (cluster.discovery) {
         var d = cluster.discovery;
 
+        res.importClass('org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi');
         res.line('TcpDiscoverySpi discovery = new TcpDiscoverySpi();');
         switch (d.kind) {
             case 'Multicast':
                 addBeanWithProperties(res, d.Multicast, 'discovery', 'ipFinder', 'ipFinder',
-                    'TcpDiscoveryMulticastIpFinder', {
+                    'org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder', {
                         multicastGroup: null,
                         multicastPort: null,
                         responseWaitTime: null,
@@ -42,7 +51,7 @@ exports.generateClusterConfiguration = function(cluster) {
 
             case 'Vm':
                 addBeanWithProperties(res, d.Vm, 'discovery', 'ipFinder', 'ipFinder',
-                    'TcpDiscoveryVmIpFinder', {
+                    'org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder', {
                         addresses: {type: 'list'}
                     }, true);
 
@@ -51,9 +60,12 @@ exports.generateClusterConfiguration = function(cluster) {
             case 'S3':
                 if (d.S3) {
                     addBeanWithProperties(res, d.S3, 'discovery', 'ipFinder', 'ipFinder',
-                        'TcpDiscoveryS3IpFinder', {bucketName: null}, true);
+                        'org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder', {bucketName: null}, 
+                        true);
                 }
                 else {
+                    res.importClass('org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder');
+                    
                     res.line('discovery.setIpFinder(new TcpDiscoveryS3IpFinder());');
                 }
 
@@ -61,7 +73,7 @@ exports.generateClusterConfiguration = function(cluster) {
 
             case 'Cloud':
                 addBeanWithProperties(res, d.Cloud, 'discovery', 'ipFinder', 'ipFinder',
-                    'TcpDiscoveryCloudIpFinder', {
+                    'org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder', {
                         credential: null,
                         credentialPath: null,
                         identity: null,
@@ -72,7 +84,7 @@ exports.generateClusterConfiguration = function(cluster) {
 
             case 'GoogleStorage':
                 addBeanWithProperties(res, d.GoogleStorage, 'discovery', 'ipFinder', 'ipFinder',
-                    'TcpDiscoveryGoogleStorageIpFinder', {
+                    'org.apache.ignite.spi.discovery.tcp.ipfinder.gce.TcpDiscoveryGoogleStorageIpFinder', {
                         projectName: null,
                         bucketName: null,
                         serviceAccountP12FilePath: null
@@ -84,6 +96,8 @@ exports.generateClusterConfiguration = function(cluster) {
                 break;
 
             case 'Jdbc':
+                res.importClass('org.apache.ignite.spi.discovery.tcp.ipfinder.jdbc.TcpDiscoveryJdbcIpFinder');
+                
                 res.line();
                 res.line('TcpDiscoveryJdbcIpFinder ipFinder = new TcpDiscoveryJdbcIpFinder();');
                 res.line('ipFinder.setInitSchema(' + (d.Jdbc.initSchema != null || d.Jdbc.initSchema) + ');');
@@ -94,7 +108,8 @@ exports.generateClusterConfiguration = function(cluster) {
 
             case 'SharedFs':
                 addBeanWithProperties(res, d.SharedFs, 'discovery', 'ipFinder', 'ipFinder',
-                    'TcpDiscoverySharedFsIpFinder', {path: null}, true);
+                    'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder', {path: null}, 
+                    true);
 
                 break;
 
@@ -146,7 +161,7 @@ exports.generateClusterConfiguration = function(cluster) {
     }
 
     addBeanWithProperties(res, cluster.atomicConfiguration, 'cfg', 'atomicConfiguration', 'atomicCfg',
-        generatorUtils.atomicConfiguration.shortClassName, generatorUtils.atomicConfiguration.fields);
+        generatorUtils.atomicConfiguration.className, generatorUtils.atomicConfiguration.fields);
 
     res.needEmptyLine = true;
 
@@ -167,6 +182,8 @@ exports.generateClusterConfiguration = function(cluster) {
         res.emptyLineIfNeeded();
         
         if (cluster.includeEventTypes.length == 1) {
+            res.importClass('org.apache.ignite.events.EventType');
+            
             res.line('cfg.setIncludeEventTypes(EventType.' + cluster.includeEventTypes[0] + ');');
         }
         else {
@@ -220,7 +237,7 @@ exports.generateClusterConfiguration = function(cluster) {
 
     if (cluster.swapSpaceSpi && cluster.swapSpaceSpi.kind == 'FileSwapSpaceSpi') {
         addBeanWithProperties(res, cluster.swapSpaceSpi.FileSwapSpaceSpi, 'cfg', 'swapSpaceSpi', 'swapSpi',
-            generatorUtils.swapSpaceSpi.shortClassName, generatorUtils.swapSpaceSpi.fields, true);
+            generatorUtils.swapSpaceSpi.className, generatorUtils.swapSpaceSpi.fields, true);
 
         res.needEmptyLine = true;
     }
@@ -240,7 +257,7 @@ exports.generateClusterConfiguration = function(cluster) {
     res.needEmptyLine = true;
 
     addBeanWithProperties(res, cluster.transactionConfiguration, 'cfg', 'transactionConfiguration',
-        'transactionConfiguration', generatorUtils.transactionConfiguration.shortClassName,
+        'transactionConfiguration', generatorUtils.transactionConfiguration.className,
         generatorUtils.transactionConfiguration.fields);
 
     res.needEmptyLine = true;
@@ -259,6 +276,14 @@ exports.generateClusterConfiguration = function(cluster) {
     addProperty(res, cluster, 'cfg', 'utilityCacheKeepAliveTime');
     addProperty(res, cluster, 'cfg', 'utilityCachePoolSize');
 
+    if (generateJavaClass) {
+        res.line('return cfg;');
+        res.endBlock('}');
+        res.endBlock('}');
+        
+        return res.generateImports() + '\n\n' + res.join('')
+    }
+    
     return res.join('');
 };
 
@@ -268,7 +293,7 @@ function createEvictionPolicy(res, evictionPolicy, varName, propertyName) {
 
         var obj = evictionPolicy[evictionPolicy.kind.toUpperCase()];
 
-        addBeanWithProperties(res, obj, varName, propertyName, propertyName, e.shortClassName, e.fields, true);
+        addBeanWithProperties(res, obj, varName, propertyName, propertyName, e.className, e.fields, true);
     }
 }
 
@@ -280,6 +305,8 @@ function generateCacheConfiguration(cacheCfg, varName, res) {
 
     res.emptyLineIfNeeded();
 
+    res.importClass('org.apache.ignite.configuration.CacheConfiguration');
+    
     res.line('CacheConfiguration ' + varName + ' = new CacheConfiguration();');
 
     res.needEmptyLine = true;
@@ -304,7 +331,8 @@ function generateCacheConfiguration(cacheCfg, varName, res) {
     res.needEmptyLine = true;
     
     addBeanWithProperties(res, cacheCfg.nearConfiguration, varName, 'nearConfiguration', 'nearConfiguration',
-        'NearCacheConfiguration', {nearStartSize: null, atomicSequenceReserveSize: null}, true);
+        'org.apache.ignite.configuration.NearCacheConfiguration', 
+        {nearStartSize: null, atomicSequenceReserveSize: null}, true);
     
     if (cacheCfg.nearConfiguration && cacheCfg.nearConfiguration.nearEvictionPolicy && cacheCfg.nearConfiguration.nearEvictionPolicy.kind) {
         createEvictionPolicy(res, cacheCfg.nearConfiguration.nearEvictionPolicy, 'nearConfiguration', 'nearEvictionPolicy');
@@ -351,7 +379,7 @@ function generateCacheConfiguration(cacheCfg, varName, res) {
         var obj = cacheCfg.cacheStoreFactory[cacheCfg.cacheStoreFactory.kind];
         var data = generatorUtils.storeFactories[cacheCfg.cacheStoreFactory.kind];
 
-        addBeanWithProperties(res, obj, varName, 'cacheStoreFactory', 'cacheStoreFactory', data.shortClassName,
+        addBeanWithProperties(res, obj, varName, 'cacheStoreFactory', 'cacheStoreFactory', data.className,
             data.fields, true);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3feaae21/modules/webconfig/nodejs/utils/generatorUtils.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/utils/generatorUtils.js b/modules/webconfig/nodejs/utils/generatorUtils.js
index b987917..80f612a 100644
--- a/modules/webconfig/nodejs/utils/generatorUtils.js
+++ b/modules/webconfig/nodejs/utils/generatorUtils.js
@@ -101,14 +101,46 @@ exports.builder = function () {
         return false;
     };
 
+    res.imports = {};
+    
+    res.importClass = function(fullClassName) {
+        var dotIdx = fullClassName.lastIndexOf('.');
+        
+        var shortName;
+        
+        if (dotIdx > 0)
+            shortName = fullClassName.substr(dotIdx + 1);
+        else 
+            shortName = fullClassName;
+        
+        if (this.imports[shortName]) {
+            if (this.imports[shortName] != fullClassName)
+                throw "Class name conflict: " + this.imports[shortName] + ' and ' + fullClassName;
+        }
+        else {
+            this.imports[shortName] = fullClassName;
+        }
+        
+        return shortName;
+    };
+    
+    res.generateImports = function() {
+        var res = [];
+        
+        for (var clsName in this.imports) {
+            if (this.imports.hasOwnProperty(clsName))
+                res.push('import ' + this.imports[clsName] + ';');
+        }
+        
+        return res.join('\n')
+    };
+    
     return res;
 };
 
 function ClassDescriptor(className, fields) {
     this.className = className;
 
-    this.shortClassName = className.substr(className.lastIndexOf('.') + 1);
-
     this.fields = fields;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3feaae21/modules/webconfig/nodejs/views/summary.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/summary.jade b/modules/webconfig/nodejs/views/summary.jade
index 369d539..5388191 100644
--- a/modules/webconfig/nodejs/views/summary.jade
+++ b/modules/webconfig/nodejs/views/summary.jade
@@ -40,12 +40,12 @@ block content
 
             #cfgResult.configBox(ng-show='currCluster && !generateError && !loading', style='margin-top: 20px')
                 ul.nav.nav-tabs
-                    li(ng-class="{active: cfgLang=='xml'}")
-                        a(href, ng-click='setCfgLang("xml")') XML
-                    li(ng-class="{active: cfgLang=='java'}")
-                        a(href, ng-click='setCfgLang("java")') Java
+                    li(ng-class='{active: cfgLang=="xml"}')
+                        a(href, ng-click='cfgLang = "xml"') XML
+                    li(ng-class='{active: cfgLang=="java"}')
+                        a(href, ng-click='cfgLang = "java"') Java
                     li(ng-class="{active: cfgLang=='docker'}")
-                        a(href, ng-click='setCfgLang("docker")') Dockerfile
+                        a(href, ng-click='cfgLang = "docker"') Dockerfile
 
                 div(style='padding-top: 10px')        
                     #xmlResult(ng-show="cfgLang == 'xml'")
@@ -53,6 +53,10 @@ block content
                             | {{resultXml}}
                 
                     #javaResult(ng-show="cfgLang == 'java'")
+                        label
+                            input(type='checkbox', ng-model="generateJavaClass")
+                            | generate java class.
+                        
                         textarea.form-control(rows=30, readonly=true)
                             | {{resultJava}}