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