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(-)
----------------------------------------------------------------------