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/18 12:25:51 UTC

[1/2] ignite git commit: IGNITE-843 Review of POJO generation.

Repository: ignite
Updated Branches:
  refs/heads/ignite-843 738948664 -> ffb26ac40


IGNITE-843 Review of POJO generation.


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

Branch: refs/heads/ignite-843
Commit: ec438d6b6e9034bbf1264bebb40b6a1a26ac9e74
Parents: a28fc4a
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Sep 18 17:25:19 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Sep 18 17:25:19 2015 +0700

----------------------------------------------------------------------
 .../main/js/routes/generator/generator-java.js  | 204 +++++--------------
 1 file changed, 51 insertions(+), 153 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ec438d6b/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 5c0af77..45a79d0 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
@@ -27,32 +27,6 @@ if (typeof window === 'undefined') {
 // Java generation entry point.
 $generatorJava = {};
 
-
-/** Java key words. */
-$generatorJava.javaKeywords = [
-    "abstract",     "assert",        "boolean",      "break",           "byte",
-    "case",         "catch",         "char",         "class",           "const",
-    "continue",     "default",       "do",           "double",          "else",
-    "enum",         "extends",       "false",        "final",           "finally",
-    "float",        "for",           "goto",         "if",              "implements",
-    "import",       "instanceof",    "int",          "interface",       "long",
-    "native",       "new",           "null",         "package",         "private",
-    "protected",    "public",        "return",       "short",           "static",
-    "strictfp",     "super",         "switch",       "synchronized",    "this",
-    "throw",        "throws",        "transient",    "true",            "try",
-    "void",         "volatile",      "while"
-];
-
-$generatorJava.javaBuildInClasses = [
-    'BigDecimal', 'Boolean', 'Byte', 'Date', 'Double', 'Float', 'Integer', 'Long', 'Short', 'String', 'Time', 'Timestamp', 'UUID'
-];
-
-$generatorJava.javaBuildInFullNameClasses = [
-    'java.math.BigDecimal', 'java.lang.Boolean', 'java.lang.Byte', 'java.sql.Date', 'java.lang.Double',
-    'java.lang.Float', 'java.lang.Integer', 'java.lang.Long', 'java.lang.Short', 'java.lang.String',
-    'java.sql.Time', 'java.sql.Timestamp', 'java.util.UUID'
-];
-
 /**
  * Translate some value to valid java code.
  *
@@ -1149,40 +1123,42 @@ $generatorJava.clusterCaches = function (caches, res) {
  * Generate java class code.
  *
  * @param meta Metadata object.
- * @param key {@code true} if key class should be generated.
+ * @param key If 'true' then key class should be generated.
  * @param pkg Package name.
- * @param pkgFolder Folder where to save generated class.
- * @param constructor {@code true} if empty and full constructors should be generated.
- * @param includeKeys {@code true} if key fields should be included into value class.
- * @throws IOException If failed to write generated code into file.
+ * @param constructor If 'true' then empty and full constructors should be generated.
  */
-$generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys) {
-    type = (key ? meta.keyType : meta.valueType);
+$generatorJava.javaClassCode = function (meta, key, pkg, constructor, res) {
+    if (!res)
+        res = $generatorCommon.builder();
+
+    var type = (key ? meta.keyType : meta.valueType);
     type = type.substring(type.lastIndexOf('.') + 1);
 
-    var res = $generatorCommon.builder();
+    // Class comment.
+    res.line('/**');
+    res.line(' * ' + type + ' definition.');
+    res.line(' *');
+    res.line(' * ' + $generatorCommon.mainComment());
+    res.line(' */');
 
-    $generatorJava.header(res, pkg, 'java.io.*', type, type + ' implements Serializable');
+    res.startBlock('public class ' + type + ' implements ' + res.importClass('java.io.Serializable') + ' {');
 
     res.line('/** */');
     res.line('private static final long serialVersionUID = 0L;');
     res.needEmptyLine = true;
 
-    fields = key ? meta.keyFields : meta.valueFields;
-
-    var field;
+    var fields = key ? meta.keyFields : meta.valueFields;
 
     // Generate fields declaration.
-    for (var fldIx = 0; fldIx < fields.length; fldIx ++) {
-        field = fields[fldIx];
-
-        fldName = field.javaName;
+    _.forEach(fields, function (field) {
+        var fldName = field.javaName;
 
         res.line('/** Value for ' + fldName + '. */');
 
-        res.line('private ' + $generatorJava.javaTypeName(field.javaType) + ' ' + fldName + ';');
+        res.line('private ' + res.importClass(field.javaType) + ' ' + fldName + ';');
+
         res.needEmptyLine = true;
-    }
+    });
 
     // Generate constructors.
     if (constructor) {
@@ -1200,43 +1176,38 @@ $generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys
         res.line(' */');
         res.startBlock('public ' + type + '(');
 
-        for (fldIx = 0; fldIx < fields.length; fldIx ++) {
-            field = fields[fldIx];
-
-            res.append($generatorJava.javaTypeName(field.javaType) + ' ' + field.javaName + (fldIx == fields.length - 1 ? '' : ', '));
-        }
+        res.line(_.map(fields, function (field) {
+            return res.importClass(field.javaType) + ' ' + field.javaName;
+        }).join(',\n'));
 
         res.endBlock(') {');
-        res.startBlock();
 
-        for (fldIx = 0; fldIx < fields.length; fldIx ++) {
-            field = fields[fldIx];
+        res.startBlock();
 
+        _.forEach(fields, function (field) {
             res.line('this.' + field.javaName +' = ' + field.javaName + ';');
-        }
+        });
 
         res.endBlock('}');
+
         res.needEmptyLine = true;
     }
 
     // Generate getters and setters methods.
-    for (fldIx = 0; fldIx < fields.length; fldIx ++) {
-        field = fields[fldIx];
-
-        fldName = field.javaName;
+    _.forEach(fields, function (field) {
+        var fldName = field.javaName;
 
-        fldType = $generatorJava.javaTypeName(field.javaType);
-
-        mtdName = $generatorJava.capitalizeFirst(fldName);
+        var fldType = res.importClass(field.javaType);
 
         res.line('/**');
         res.line(' * Gets ' + fldName + '.');
         res.line(' *');
         res.line(' * @return Value for ' + fldName + '.');
         res.line(' */');
-        res.startBlock('public ' + fldType + ' get' + mtdName + '() {');
+        res.startBlock('public ' + fldType + ' ' + $commonUtils.toJavaName('get', fldName) + '() {');
         res.line('return ' + fldName + ';');
         res.endBlock('}');
+
         res.needEmptyLine = true;
 
         res.line('/**');
@@ -1244,11 +1215,12 @@ $generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys
         res.line(' *');
         res.line(' * @param ' + fldName + ' New value for ' + fldName + '.');
         res.line(' */');
-        res.startBlock('public void set' + mtdName + '(' + fldType + ' ' + fldName + ') {');
+        res.startBlock('public void ' + $commonUtils.toJavaName('set', fldName) + '(' + fldType + ' ' + fldName + ') {');
         res.line('this.' + fldName + ' = ' + fldName + ';');
         res.endBlock('}');
+
         res.needEmptyLine = true;
-    }
+    });
 
     // Generate equals() method.
     res.line('/** {@inheritDoc} */');
@@ -1261,40 +1233,37 @@ $generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys
     res.startBlock('if (!(o instanceof ' + type + '))');
     res.line('return false;');
     res.endBlock();
+
     res.needEmptyLine = true;
 
     res.line(type + ' that = (' + type + ')o;');
 
-    for (fldIx = 0; fldIx < fields.length; fldIx ++) {
-        field = fields[fldIx];
-
+    _.forEach(fields, function (field) {
         res.needEmptyLine = true;
 
-        javaName = field.javaName;
+        var javaName = field.javaName;
 
         res.startBlock('if (' + javaName + ' != null ? !' + javaName + '.equals(that.' + javaName + ') : that.' + javaName + ' != null)');
 
         res.line('return false;');
         res.endBlock()
-    }
+    });
 
     res.needEmptyLine = true;
 
     res.line('return true;');
     res.endBlock('}');
+
     res.needEmptyLine = true;
 
     // Generate hashCode() method.
     res.line('/** {@inheritDoc} */');
     res.startBlock('@Override public int hashCode() {');
 
-    first = true;
-    tempVar = false;
-
-    for (fldIx = 0; fldIx < fields.length; fldIx ++) {
-        field = fields[fldIx];
+    var first = true;
 
-        javaName = field.javaName;
+    _.forEach(fields, function (field) {
+        var javaName = field.javaName;
 
         if (!first)
             res.needEmptyLine = true;
@@ -1303,7 +1272,7 @@ $generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys
             : 'res = 31 * res + (' + javaName + ' != null ? ' + javaName + '.hashCode() : 0);');
 
         first = false;
-    }
+    });
 
     res.needEmptyLine = true;
     res.line('return res;');
@@ -1314,18 +1283,16 @@ $generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys
     res.line('/** {@inheritDoc} */');
     res.startBlock('@Override public String toString() {');
 
-    field = fields[0];
-
     if (fields.length > 0) {
-        res.startBlock('return \"' + type + ' [' + field.javaName + '=\" + ' + field.javaName + ' +', type);
+        var field = fields[0];
 
-        for (fldIx = 0; fldIx < fields.length; fldIx++) {
-            field = fields[fldIx];
+        res.startBlock('return \"' + type + ' [' + field.javaName + '=\" + ' + field.javaName + ' +', type);
 
+        _.forEach(fields, function (field) {
             var javaName = field.javaName;
 
             res.line('\", ' + javaName + '=\" + ' + field.javaName + ' +');
-        }
+        });
     }
 
     res.line('\']\';');
@@ -1333,20 +1300,16 @@ $generatorJava.javaClassCode = function(meta, key, pkg, constructor, includeKeys
     res.endBlock('}');
 
     res.endBlock('}');
-    res.needEmptyLine = true;
 
-    return res.asString();
+    return 'package ' + pkg + ';' + '\n\n' + res.generateImports() + '\n\n' + res.asString();
 };
 
 /**
  * Generate source code for type by its metadata.
  *
- * @param meta Metadata object.
- * @param constructor {@code true} if empty and full constructors should be generated.
- * @param includeKeys {@code true} if key fields should be included into value class.
- * @throws IOException If failed to write generated code into file.
+ * @param caches TODO.
  */
-$generatorJava.pojos = function (caches, includeKeys) {
+$generatorJava.pojos = function (caches) {
     var metadataNames = [];
 
     $generatorJava.metadatas = [];
@@ -1384,14 +1347,6 @@ $generatorJava.pojos = function (caches, includeKeys) {
 };
 
 /**
- * @param str Source string.
- * @return String with first letters in upper case.
- */
-$generatorJava.capitalizeFirst = function(str) {
-    return str.charAt(0).toUpperCase() + str.substring(1);
-};
-
-/**
  * @param type Full type name.
  * @return Field java type name.
  */
@@ -1404,63 +1359,6 @@ $generatorJava.javaTypeName = function(type) {
 };
 
 /**
- * Generate class header.
- *
- * @param pkg Package name.
- * @param imports Optional imports.
- * @param desc Class description.
- * @param cls Class declaration.
- */
-$generatorJava.header = function(res, pkg, imports, desc, cls) {
-    // License.
-    res.line('/*');
-    res.line(' * Licensed to the Apache Software Foundation (ASF) under one or more');
-    res.line(' * contributor license agreements.  See the NOTICE file distributed with');
-    res.line(' * this work for additional information regarding copyright ownership.');
-    res.line(' * The ASF licenses this file to You under the Apache License, Version 2.0');
-    res.line(' * (the \'License\'); you may not use this file except in compliance with');
-    res.line(' * the License.  You may obtain a copy of the License at');
-    res.line(' *');
-    res.line(' *      http://www.apache.org/licenses/LICENSE-2.0');
-    res.line(' *');
-    res.line(' * Unless required by applicable law or agreed to in writing, software');
-    res.line(' * distributed under the License is distributed on an \'AS IS\' BASIS,');
-    res.line(' * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.');
-    res.line(' * See the License for the specific language governing permissions and');
-    res.line(' * limitations under the License.');
-    res.line(' */');
-    res.needEmptyLine = true;
-
-    // Package.
-    res.line('package ' + pkg + ';');
-    res.needEmptyLine = true;
-
-    // Imports.
-    if (imports.length > 0) {
-        var impLst = imports.split(';');
-
-        for (var impIx = 0; impIx < impLst.length; impIx ++) {
-            var imp = impLst[impIx];
-
-            if (imp == '')
-                res.needEmptyLine = true;
-            else
-                res.line('import ' + imp + ';');
-        }
-
-        res.needEmptyLine = true;
-    }
-
-    // Class.
-    res.line('/**');
-    res.line(' * ' + desc + ' definition.');
-    res.line(' *');
-    res.line(' * ' + $generatorCommon.mainComment());
-    res.line(' */');
-    res.startBlock('public class ' + cls + ' {');
-};
-
-/**
  * Function to generate java code for cluster configuration.
  *
  * @param cluster Cluster to process.


[2/2] ignite git commit: Merge remote-tracking branch 'origin/ignite-843' into ignite-843

Posted by ak...@apache.org.
Merge remote-tracking branch 'origin/ignite-843' into ignite-843


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

Branch: refs/heads/ignite-843
Commit: ffb26ac4029624efbb19e4fa82095c292b20999a
Parents: ec438d6 7389486
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Sep 18 17:25:48 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Sep 18 17:25:48 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/sql-controller.js               | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------