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/10/19 14:09:38 UTC

[4/4] ignite git commit: IGNITE-1714 Fixed java and xml code generation. Fixed load metadata from DB. Reorganized summary ZIP content. Added pom.xml and README.txt generation.

IGNITE-1714 Fixed java and xml code generation. Fixed load metadata from DB. Reorganized summary ZIP content. Added pom.xml and README.txt generation.


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

Branch: refs/heads/ignite-843-rc1
Commit: 939473f9975d3063b944ecd71e0a829033c9d6af
Parents: bc7a4de
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Mon Oct 19 19:09:30 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Mon Oct 19 19:09:30 2015 +0700

----------------------------------------------------------------------
 .../main/js/controllers/metadata-controller.js  |   2 +-
 .../main/js/routes/generator/generator-java.js  |  24 +++-
 .../main/js/routes/generator/generator-pom.js   | 118 +++++++++++++++++++
 .../js/routes/generator/generator-properties.js |   1 +
 .../js/routes/generator/generator-readme.js     |  55 +++++++++
 .../main/js/routes/generator/generator-xml.js   |   2 +-
 .../src/main/js/routes/summary.js               |  18 ++-
 7 files changed, 209 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/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 2c0cdfa..86eac18 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
@@ -539,7 +539,7 @@ consoleModule.controller('metadataController', [
                                     groups.push(
                                         {name: indexName, fields: _.map(fields, function (fieldName) {
                                             return {
-                                                name: fieldName,
+                                                name: toJavaName(fieldName),
                                                 className: colType(fieldName),
                                                 direction: index[fieldName]
                                             };

http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/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 6bb5b63..90ec69a 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
@@ -998,7 +998,7 @@ $generatorJava.metadataQueryFields = function (res, meta, fieldProperty) {
         $generatorJava.declareVariable(res, $generatorJava.needNewVariable(res, fieldProperty), fieldProperty, 'java.util.Map', 'java.util.LinkedHashMap', 'java.lang.String', 'java.lang.Class<?>');
 
         _.forEach(fields, function (field) {
-            res.line(fieldProperty + '.put("' + field.name.toUpperCase() + '", ' + res.importClass(field.className) + '.class);');
+            res.line(fieldProperty + '.put("' + field.name + '", ' + res.importClass(field.className) + '.class);');
         });
 
         res.needEmptyLine = true;
@@ -1532,11 +1532,11 @@ $generatorJava.cluster = function (cluster, javaClass, clientNearCfg) {
             res.line('/**');
             res.line(' * ' + $generatorCommon.mainComment());
             res.line(' */');
-            res.startBlock('public class IgniteConfigurationFactory {');
+            res.startBlock('public class ConfigurationFactory {');
             res.line('/**');
             res.line(' * Configure grid.');
             res.line(' */');
-            res.startBlock('public IgniteConfiguration createConfiguration() {');
+            res.startBlock('public static IgniteConfiguration createConfiguration() {');
         }
 
         $generatorJava.clusterGeneral(cluster, clientNearCfg, res);
@@ -1566,8 +1566,26 @@ $generatorJava.cluster = function (cluster, javaClass, clientNearCfg) {
         $generatorJava.clusterSsl(cluster, res);
 
         if (javaClass) {
+            res.importClass('org.apache.ignite.Ignite');
+            res.importClass('org.apache.ignite.IgniteException');
+            res.importClass('org.apache.ignite.Ignition');
+
             res.line('return cfg;');
             res.endBlock('}');
+
+            res.line('/**');
+            res.line('* Sample usage of ConfigurationFactory.');
+            res.line('*');
+            res.line('* @param args Command line arguments, none required.');
+            res.line('* @throws IgniteException If example execution failed.');
+            res.line('*/');
+
+            res.startBlock('public static void main(String[] args) throws IgniteException {');
+            res.startBlock('try (Ignite ignite = Ignition.start(ConfigurationFactory.createConfiguration())) {');
+            res.line('System.out.println(" Write some code here...");');
+            res.endBlock('}');
+            res.endBlock('}');
+
             res.endBlock('}');
 
             return res.generateImports() + '\n\n' + res.asString();

http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/modules/control-center-web/src/main/js/routes/generator/generator-pom.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-pom.js b/modules/control-center-web/src/main/js/routes/generator/generator-pom.js
new file mode 100644
index 0000000..fec7288
--- /dev/null
+++ b/modules/control-center-web/src/main/js/routes/generator/generator-pom.js
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// For server side we should load required libraries.
+if (typeof window === 'undefined') {
+    $generatorCommon = require('./generator-common');
+}
+
+// pom.xml generation entry point.
+$generatorPom = {};
+
+/**
+ * Generate pom.xml.
+ *
+ * @param res Resulting output with generated pom.
+ * @param igniteVersion Ignite version for Ignite dependencies.
+ * @returns {string} Generated content.
+ */
+$generatorPom.pom = function (igniteVersion, res) {
+    if (!res)
+        res = $generatorCommon.builder();
+
+    function addProperty(tag, val) {
+        res.line('<' + tag + '>' + val + '</' + tag + '>');
+    }
+
+    function addDependency(groupId, artifactId, version) {
+        res.startBlock('<dependency>');
+        addProperty('groupId', groupId);
+        addProperty('artifactId', artifactId);
+        addProperty('version', version);
+        res.endBlock('</dependency>');
+    }
+
+    function addResource(dir, exclude) {
+        res.startBlock('<resource>');
+        if (dir)
+            addProperty('directory', dir);
+
+        if (exclude) {
+            res.startBlock('<excludes>');
+            addProperty('exclude', exclude);
+            res.endBlock('</excludes>');
+        }
+
+        res.endBlock('</resource>');
+    }
+
+    res.line('<?xml version="1.0" encoding="UTF-8"?>');
+
+    res.needEmptyLine = true;
+
+    res.line('<!-- ' + $generatorCommon.mainComment() + ' -->');
+
+    res.needEmptyLine = true;
+
+    res.startBlock('<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">');
+
+    res.line('<modelVersion>4.0.0</modelVersion>');
+
+    res.needEmptyLine = true;
+
+    addProperty('groupId', 'org.apache.ignite');
+    addProperty('artifactId', 'ignite-generated-model');
+    addProperty('version', igniteVersion);
+
+    res.needEmptyLine = true;
+
+    res.startBlock('<dependencies>');
+    addDependency('org.apache.ignite', 'ignite-core', igniteVersion);
+    addDependency('org.apache.ignite', 'ignite-spring', igniteVersion);
+    addDependency('org.apache.ignite', 'ignite-indexing', igniteVersion);
+    addDependency('org.apache.ignite', 'ignite-rest-http', igniteVersion);
+    res.endBlock('</dependencies>');
+
+    res.needEmptyLine = true;
+
+    res.startBlock('<build>');
+    res.startBlock('<resources>');
+    addResource('src/main/java', '**/*.java');
+    addResource('src/main/resources');
+    res.endBlock('</resources>');
+
+    res.startBlock('<plugins>');
+    res.startBlock('<plugin>');
+    addProperty('artifactId', 'maven-compiler-plugin');
+    addProperty('version', '3.1');
+    res.startBlock('<configuration>');
+    addProperty('source', '1.7');
+    addProperty('target', '1.7');
+    res.endBlock('</configuration>');
+    res.endBlock('</plugin>');
+    res.endBlock('</plugins>');
+    res.endBlock('</build>');
+
+    res.endBlock('</project>');
+
+    return res;
+};
+
+// For server side we should export properties generation entry point.
+if (typeof window === 'undefined') {
+    module.exports = $generatorPom;
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/modules/control-center-web/src/main/js/routes/generator/generator-properties.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-properties.js b/modules/control-center-web/src/main/js/routes/generator/generator-properties.js
index fff1447..5a1dafe 100644
--- a/modules/control-center-web/src/main/js/routes/generator/generator-properties.js
+++ b/modules/control-center-web/src/main/js/routes/generator/generator-properties.js
@@ -29,6 +29,7 @@ $generatorProperties = {};
  * Generate properties file with properties stubs for stores data sources.
  *
  * @param cluster Configuration to process.
+ * @param res Resulting output with generated properties.
  * @returns {string} Generated content.
  */
 $generatorProperties.dataSourcesProperties = function (cluster, res) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/modules/control-center-web/src/main/js/routes/generator/generator-readme.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-readme.js b/modules/control-center-web/src/main/js/routes/generator/generator-readme.js
new file mode 100644
index 0000000..d39cf64
--- /dev/null
+++ b/modules/control-center-web/src/main/js/routes/generator/generator-readme.js
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// For server side we should load required libraries.
+if (typeof window === 'undefined') {
+    $generatorCommon = require('./generator-common');
+}
+
+// README.txt generation entry point.
+$generatorReadme = {};
+
+/**
+ * Generate README.txt.
+ *
+ * @param res Resulting output with generated pom.
+ * @returns {string} Generated content.
+ */
+$generatorReadme.readme = function (res) {
+    if (!res)
+        res = $generatorCommon.builder();
+
+    res.line('Content of this folder was generated by Apache Ignite Web Console');
+    res.line('=================================================================');
+
+    res.needEmptyLine = true;
+
+    res.line('Ignite ships with CacheJdbcPojoStore, which is out-of-the-box JDBC');
+    res.line('implementation of the IgniteCacheStore interface, and automatically');
+    res.line('handles all the write-through and read-through logic.');
+
+    res.needEmptyLine = true;
+
+    res.line('You can use generated configuration and POJO classes as part of your application.');
+
+    return res;
+};
+
+// For server side we should export properties generation entry point.
+if (typeof window === 'undefined') {
+    module.exports = $generatorReadme;
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/modules/control-center-web/src/main/js/routes/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js
index ba578aa..f806ba5 100644
--- a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js
@@ -880,7 +880,7 @@ $generatorXml.metadataGroups = function (res, meta) {
                 res.startBlock('<map>');
 
                 _.forEach(fields, function (field) {
-                    res.startBlock('<entry key="' + field.name + '">');
+                    res.startBlock('<entry key="' + field.name.toUpperCase() + '">');
 
                     res.startBlock('<bean class="org.apache.ignite.lang.IgniteBiTuple">');
                     res.line('<constructor-arg value="' + $dataStructures.fullClassName(field.className) + '"/>');

http://git-wip-us.apache.org/repos/asf/ignite/blob/939473f9/modules/control-center-web/src/main/js/routes/summary.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/summary.js b/modules/control-center-web/src/main/js/routes/summary.js
index bf728bf..ca2e141 100644
--- a/modules/control-center-web/src/main/js/routes/summary.js
+++ b/modules/control-center-web/src/main/js/routes/summary.js
@@ -23,6 +23,8 @@ var $generatorXml = require('./generator/generator-xml');
 var $generatorJava = require('./generator/generator-java');
 var $generatorDocker = require('./generator/generator-docker');
 var $generatorProperties = require('./generator/generator-properties');
+var $generatorPom = require('./generator/generator-pom');
+var $generatorReadme = require('./generator/generator-readme');
 
 // GET template for summary tabs.
 router.get('/summary-tabs', function (req, res) {
@@ -61,11 +63,15 @@ router.post('/download', function (req, res) {
         }
 
         if (builder)
-            zip.file('secret.properties', builder.asString());
+            zip.file('src/main/resources/secret.properties', builder.asString());
 
-        zip.file(cluster.name + '.xml', $generatorXml.cluster(cluster, clientNearConfiguration));
-        zip.file(cluster.name + '.snippet.java', $generatorJava.cluster(cluster, false, clientNearConfiguration));
-        zip.file('ConfigurationFactory.java', $generatorJava.cluster(cluster, true, clientNearConfiguration));
+        var srcPath = 'src/main/java/';
+
+        zip.file('config/' + cluster.name + '.xml', $generatorXml.cluster(cluster, clientNearConfiguration));
+        zip.file(srcPath + 'ConfigurationFactory.java', $generatorJava.cluster(cluster, true, clientNearConfiguration));
+        zip.file('pom.xml', $generatorPom.pom('1.5.0').asString());
+
+        zip.file('README.txt', $generatorReadme.readme().asString());
 
         $generatorJava.pojos(cluster.caches, req.body.useConstructor, req.body.includeKeyFields);
 
@@ -75,9 +81,9 @@ router.post('/download', function (req, res) {
             var meta = metadatas[metaIx];
 
             if (meta.keyClass)
-                zip.file(meta.keyType.replace(/\./g, '/') + '.java', meta.keyClass);
+                zip.file(srcPath + meta.keyType.replace(/\./g, '/') + '.java', meta.keyClass);
 
-            zip.file(meta.valueType.replace(/\./g, '/') + '.java', meta.valueClass);
+            zip.file(srcPath + meta.valueType.replace(/\./g, '/') + '.java', meta.valueClass);
         }
 
         var buffer = zip.generate({type:"nodebuffer"});