You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/07/18 21:04:14 UTC
[41/50] [abbrv] tinkerpop git commit: Export enums and fix
TraversalStrategies#applyStrategies()
Export enums and fix TraversalStrategies#applyStrategies()
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/38c24094
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/38c24094
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/38c24094
Branch: refs/heads/TINKERPOP-1489
Commit: 38c2409418e481c084dc8858c854acd7fdc6ae12
Parents: 66bd5fa
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Oct 7 12:01:30 2016 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 17:01:43 2017 -0400
----------------------------------------------------------------------
.../GraphTraversalSourceGenerator.groovy | 4 +-
.../javascript/TraversalSourceGenerator.groovy | 52 +++++++++-----------
.../driver/remote-connection.js | 2 +-
.../main/javascript/gremlin-javascript/index.js | 11 ++++-
.../process/graph-traversal.js | 4 +-
.../gremlin-javascript/process/traversal.js | 44 ++++++++---------
.../gremlin-javascript/test-exports.js | 15 ++++--
.../gremlin-javascript/test-graphson.js | 2 +-
.../gremlin-javascript/test-traversal.js | 17 ++++++-
9 files changed, 87 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/GraphTraversalSourceGenerator.groovy b/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/GraphTraversalSourceGenerator.groovy
index 81c38dc..b569292 100644
--- a/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/GraphTraversalSourceGenerator.groovy
+++ b/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/GraphTraversalSourceGenerator.groovy
@@ -87,12 +87,12 @@ class GraphTraversalSourceGenerator {
/**
* @param remoteConnection
- * @returns {GraphTraversal}
+ * @returns {GraphTraversalSource}
*/
GraphTraversalSource.prototype.withRemote = function (remoteConnection) {
var traversalStrategy = new t.TraversalStrategies(this._traversalStrategies);
traversalStrategy.addStrategy(new remote.RemoteStrategy(remoteConnection));
- return new GraphTraversal(this._graph, traversalStrategy, new Bytecode(this._bytecode));
+ return new GraphTraversalSource(this._graph, traversalStrategy, new Bytecode(this._bytecode));
};
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/TraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/TraversalSourceGenerator.groovy b/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/TraversalSourceGenerator.groovy
index efcb826..5b07a32 100644
--- a/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/TraversalSourceGenerator.groovy
+++ b/gremlin-javascript/src/main/groovy/org/apache/tinkerpop/gremlin/javascript/TraversalSourceGenerator.groovy
@@ -177,11 +177,14 @@ class TraversalSourceGenerator {
this.strategies.push(strategy);
};
- /** @param {Traversal} traversal */
- TraversalStrategies.prototype.applyStrategies = function (traversal) {
- this.strategies.forEach(function eachStrategy(s) {
- s.apply(traversal);
- });
+ /**
+ * @param {Traversal} traversal
+ * @param {Function} callback
+ */
+ TraversalStrategies.prototype.applyStrategies = function (traversal, callback) {
+ eachSeries(this.strategies, function eachStrategy(s, next) {
+ s.apply(traversal, next);
+ }, callback);
};
/**
@@ -195,8 +198,9 @@ class TraversalSourceGenerator {
/**
* @abstract
* @param {Traversal} traversal
+ * @param {Function} callback
*/
- TraversalStrategy.prototype.apply = function (traversal) {
+ TraversalStrategy.prototype.apply = function (traversal, callback) {
};
@@ -290,24 +294,6 @@ class TraversalSourceGenerator {
this.elementName = elementName;
}
- /**
- * @type {{barrier, cardinality, column, direction, operator, order, pop, scope, t}}
- */
- var enums = {};\n""")
-
- for (final Class<? extends Enum> enumClass : CoreImports.getClassImports()
- .findAll { Enum.class.isAssignableFrom(it) }
- .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }
- .collect()) {
- moduleOutput.append(" enums.${SymbolHelper.decapitalize(enumClass.getSimpleName())} = " +
- "toEnum('${SymbolHelper.toJs(enumClass.getSimpleName())}', '");
- enumClass.getEnumConstants()
- .sort { a, b -> a.name() <=> b.name() }
- .each { value -> moduleOutput.append("${SymbolHelper.toJs(value.name())} "); }
- moduleOutput.deleteCharAt(moduleOutput.length() - 1).append("');\n")
- }
-
- moduleOutput.append("""
// Utility functions
/** @returns {Array} */
function parseArgs() {
@@ -376,11 +362,21 @@ class TraversalSourceGenerator {
TraversalSideEffects: TraversalSideEffects,
TraversalStrategies: TraversalStrategies,
TraversalStrategy: TraversalStrategy,
- Traverser: Traverser
+ Traverser: Traverser""")
+ for (final Class<? extends Enum> enumClass : CoreImports.getClassImports()
+ .findAll { Enum.class.isAssignableFrom(it) }
+ .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }
+ .collect()) {
+ moduleOutput.append(",\n ${SymbolHelper.decapitalize(enumClass.getSimpleName())}: " +
+ "toEnum('${SymbolHelper.toJs(enumClass.getSimpleName())}', '");
+ enumClass.getEnumConstants()
+ .sort { a, b -> a.name() <=> b.name() }
+ .each { value -> moduleOutput.append("${SymbolHelper.toJs(value.name())} "); }
+ moduleOutput.deleteCharAt(moduleOutput.length() - 1).append("')")
+ }
+
+ moduleOutput.append("""
};
- Object.keys(enums).forEach(function (k) {
- toExport[k] = enums[k];
- });
if (typeof module !== 'undefined') {
// CommonJS
module.exports = toExport;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/main/javascript/gremlin-javascript/driver/remote-connection.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/driver/remote-connection.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/driver/remote-connection.js
index 99b177f..e19b537 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/driver/remote-connection.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/driver/remote-connection.js
@@ -68,7 +68,7 @@
/** @override */
RemoteStrategy.prototype.apply = function (traversal, callback) {
if (traversal.traversers) {
- return;
+ return callback();
}
this.connection.submit(traversal.getBytecode(), function (err, remoteTraversal) {
if (err) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
index cda8200..ddcdac2 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
@@ -49,14 +49,21 @@
process: {
Bytecode: t.Bytecode,
EnumValue: t.EnumValue,
- inherits: t.inherits,
P: t.P,
- parseArgs: t.parseArgs,
Traversal: t.Traversal,
TraversalSideEffects: t.TraversalSideEffects,
TraversalStrategies: t.TraversalStrategies,
TraversalStrategy: t.TraversalStrategy,
Traverser: t.Traverser,
+ barrier: t.barrier,
+ cardinality: t.cardinality,
+ column: t.column,
+ direction: t.direction,
+ operator: t.operator,
+ order: t.order,
+ pop: t.pop,
+ scope: t.scope,
+ t: t.t,
GraphTraversal: gt.GraphTraversal,
GraphTraversalSource: gt.GraphTraversalSource,
statics: gt.statics
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/main/javascript/gremlin-javascript/process/graph-traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/process/graph-traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/process/graph-traversal.js
index d9803ba..1a6356b 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/process/graph-traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/process/graph-traversal.js
@@ -44,12 +44,12 @@
/**
* @param remoteConnection
- * @returns {GraphTraversal}
+ * @returns {GraphTraversalSource}
*/
GraphTraversalSource.prototype.withRemote = function (remoteConnection) {
var traversalStrategy = new t.TraversalStrategies(this._traversalStrategies);
traversalStrategy.addStrategy(new remote.RemoteStrategy(remoteConnection));
- return new GraphTraversal(this._graph, traversalStrategy, new Bytecode(this._bytecode));
+ return new GraphTraversalSource(this._graph, traversalStrategy, new Bytecode(this._bytecode));
};
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/main/javascript/gremlin-javascript/process/traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/process/traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/process/traversal.js
index 5c9bf6c..ff2927e 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/process/traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/process/traversal.js
@@ -185,11 +185,14 @@
this.strategies.push(strategy);
};
- /** @param {Traversal} traversal */
- TraversalStrategies.prototype.applyStrategies = function (traversal) {
- this.strategies.forEach(function eachStrategy(s) {
- s.apply(traversal);
- });
+ /**
+ * @param {Traversal} traversal
+ * @param {Function} callback
+ */
+ TraversalStrategies.prototype.applyStrategies = function (traversal, callback) {
+ eachSeries(this.strategies, function eachStrategy(s, next) {
+ s.apply(traversal, next);
+ }, callback);
};
/**
@@ -203,8 +206,9 @@
/**
* @abstract
* @param {Traversal} traversal
+ * @param {Function} callback
*/
- TraversalStrategy.prototype.apply = function (traversal) {
+ TraversalStrategy.prototype.apply = function (traversal, callback) {
};
@@ -298,20 +302,6 @@
this.elementName = elementName;
}
- /**
- * @type {{barrier, cardinality, column, direction, operator, order, pop, scope, t}}
- */
- var enums = {};
- enums.barrier = toEnum('Barrier', 'normSack');
- enums.cardinality = toEnum('Cardinality', 'list set single');
- enums.column = toEnum('Column', 'keys values');
- enums.direction = toEnum('Direction', 'BOTH IN OUT');
- enums.operator = toEnum('Operator', 'addAll and assign div max min minus mult or sum sumLong');
- enums.order = toEnum('Order', 'decr incr keyDecr keyIncr shuffle valueDecr valueIncr');
- enums.pop = toEnum('Pop', 'all first last');
- enums.scope = toEnum('Scope', 'global local');
- enums.t = toEnum('T', 'id key label value');
-
// Utility functions
/** @returns {Array} */
function parseArgs() {
@@ -380,11 +370,17 @@
TraversalSideEffects: TraversalSideEffects,
TraversalStrategies: TraversalStrategies,
TraversalStrategy: TraversalStrategy,
- Traverser: Traverser
+ Traverser: Traverser,
+ barrier: toEnum('Barrier', 'normSack'),
+ cardinality: toEnum('Cardinality', 'list set single'),
+ column: toEnum('Column', 'keys values'),
+ direction: toEnum('Direction', 'BOTH IN OUT'),
+ operator: toEnum('Operator', 'addAll and assign div max min minus mult or sum sumLong'),
+ order: toEnum('Order', 'decr incr keyDecr keyIncr shuffle valueDecr valueIncr'),
+ pop: toEnum('Pop', 'all first last'),
+ scope: toEnum('Scope', 'global local'),
+ t: toEnum('T', 'id key label value')
};
- Object.keys(enums).forEach(function (k) {
- toExport[k] = enums[k];
- });
if (typeof module !== 'undefined') {
// CommonJS
module.exports = toExport;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/test/javascript/gremlin-javascript/test-exports.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/test/javascript/gremlin-javascript/test-exports.js b/gremlin-javascript/src/test/javascript/gremlin-javascript/test-exports.js
index 6edb323..b9265c7 100644
--- a/gremlin-javascript/src/test/javascript/gremlin-javascript/test-exports.js
+++ b/gremlin-javascript/src/test/javascript/gremlin-javascript/test-exports.js
@@ -34,9 +34,7 @@
assert.ok(glvModule.process);
assert.strictEqual(typeof glvModule.process.Bytecode, 'function');
assert.strictEqual(typeof glvModule.process.EnumValue, 'function');
- assert.strictEqual(typeof glvModule.process.inherits, 'function');
assert.strictEqual(typeof glvModule.process.P, 'function');
- assert.strictEqual(typeof glvModule.process.parseArgs, 'function');
assert.strictEqual(typeof glvModule.process.Traversal, 'function');
assert.strictEqual(typeof glvModule.process.TraversalSideEffects, 'function');
assert.strictEqual(typeof glvModule.process.TraversalStrategies, 'function');
@@ -44,6 +42,17 @@
assert.strictEqual(typeof glvModule.process.Traverser, 'function');
assert.strictEqual(typeof glvModule.process.GraphTraversal, 'function');
assert.strictEqual(typeof glvModule.process.GraphTraversalSource, 'function');
+ assert.strictEqual(typeof glvModule.process.barrier, 'object');
+ assert.strictEqual(typeof glvModule.process.cardinality, 'object');
+ assert.strictEqual(typeof glvModule.process.column, 'object');
+ assert.strictEqual(typeof glvModule.process.direction, 'object');
+ assert.strictEqual(typeof glvModule.process.operator, 'object');
+ assert.strictEqual(typeof glvModule.process.order, 'object');
+ assert.strictEqual(typeof glvModule.process.pop, 'object');
+ assert.strictEqual(typeof glvModule.process.scope, 'object');
+ assert.strictEqual(typeof glvModule.process.t, 'object');
+
+
assert.ok(glvModule.process.statics);
assert.ok(glvModule.structure);
@@ -75,4 +84,4 @@
}
throw new Error('No module loader was found');
}
-}).call(this)
\ No newline at end of file
+}).call(this);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/test/javascript/gremlin-javascript/test-graphson.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/test/javascript/gremlin-javascript/test-graphson.js b/gremlin-javascript/src/test/javascript/gremlin-javascript/test-graphson.js
index e44ef90..418a9dd 100644
--- a/gremlin-javascript/src/test/javascript/gremlin-javascript/test-graphson.js
+++ b/gremlin-javascript/src/test/javascript/gremlin-javascript/test-graphson.js
@@ -87,7 +87,7 @@
assert.strictEqual(writer.write(true), 'true');
assert.strictEqual(writer.write(false), 'false');
},
- function testWriteNumber() {
+ function testWriteP() {
var writer = new GraphSONWriter();
var expected = JSON.stringify({"@type":"g:P","@value":{"predicate":"and","value":[{"@type":"g:P","@value":{"predicate":"or","value":[{"@type":"g:P","@value":{"predicate":"lt","value":"b"}},{"@type":"g:P","@value":{"predicate":"gt","value":"c"}}]}},{"@type":"g:P","@value":{"predicate":"neq","value":"d"}}]}});
assert.strictEqual(writer.write(P.lt("b").or(P.gt("c")).and(P.neq("d"))), expected);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38c24094/gremlin-javascript/src/test/javascript/gremlin-javascript/test-traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/test/javascript/gremlin-javascript/test-traversal.js b/gremlin-javascript/src/test/javascript/gremlin-javascript/test-traversal.js
index 477df91..1ec4253 100644
--- a/gremlin-javascript/src/test/javascript/gremlin-javascript/test-traversal.js
+++ b/gremlin-javascript/src/test/javascript/gremlin-javascript/test-traversal.js
@@ -26,9 +26,10 @@
var helper = loadModule.call(this, './helper.js');
var assert = helper.assert;
var graph = helper.loadLibModule.call(this, 'structure/graph.js');
+ var t = helper.loadLibModule.call(this, 'process/traversal.js');
[
- function testBytecode() {
+ function testBytecode1() {
var g = new graph.Graph().traversal();
var bytecode = g.V().out('created').getBytecode();
assert.ok(bytecode);
@@ -37,6 +38,20 @@
assert.strictEqual(bytecode.stepInstructions[0][0], 'V');
assert.strictEqual(bytecode.stepInstructions[1][0], 'out');
assert.strictEqual(bytecode.stepInstructions[1][1], 'created');
+ },
+ function testBytecode2() {
+ var g = new graph.Graph().traversal();
+ var bytecode = g.V().order().by('age', t.order.decr).getBytecode();
+ assert.ok(bytecode);
+ assert.strictEqual(bytecode.sourceInstructions.length, 0);
+ assert.strictEqual(bytecode.stepInstructions.length, 3);
+ assert.strictEqual(bytecode.stepInstructions[0][0], 'V');
+ assert.strictEqual(bytecode.stepInstructions[1][0], 'order');
+ assert.strictEqual(bytecode.stepInstructions[2][0], 'by');
+ assert.strictEqual(bytecode.stepInstructions[2][1], 'age');
+ assert.strictEqual(typeof bytecode.stepInstructions[2][2], 'object');
+ assert.strictEqual(bytecode.stepInstructions[2][2].typeName, 'Order');
+ assert.strictEqual(bytecode.stepInstructions[2][2].elementName, 'decr');
}
].forEach(function (testCase) {
testCase.call(null);