This is an automated email from the ASF dual-hosted git repository.

jorgebg pushed a commit to branch TINKERPOP-2078
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/TINKERPOP-2078 by this push:
     new 40c7650  TINKERPOP-2078 Introduce AnonymousTraversalSource in JS
40c7650 is described below

commit 40c765081d2572ffa95b39240f9d1585af373980
Author: Jorge Bay Gondra <jorgebaygon...@gmail.com>
AuthorDate: Thu Nov 8 11:22:14 2018 +0100

    TINKERPOP-2078 Introduce AnonymousTraversalSource in JS
---
 .../main/javascript/gremlin-javascript/index.js    |  4 +-
 .../lib/process/anonymous-traversal.js             | 64 ++++++++++++++++++++++
 .../lib/process/graph-traversal.js                 |  1 +
 .../gremlin-javascript/lib/structure/graph.js      | 11 +---
 .../test/cucumber/feature-steps.js                 |  2 +-
 .../gremlin-javascript/test/cucumber/world.js      |  3 +-
 .../test/integration/traversal-test.js             |  2 +-
 .../gremlin-javascript/test/unit/exports-test.js   |  2 +
 8 files changed, 74 insertions(+), 15 deletions(-)

diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
index 3849933..9833cc9 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/index.js
@@ -36,6 +36,7 @@ const Client = require('./lib/driver/client');
 const ResultSet = require('./lib/driver/result-set');
 const Authenticator = require('./lib/driver/auth/authenticator');
 const PlainTextSaslAuthenticator = 
require('./lib/driver/auth/plain-text-sasl-authenticator');
+const AnonymousTraversalSource = require('./lib/process/anonymous-traversal');
 
 module.exports = {
   driver: {
@@ -73,7 +74,8 @@ module.exports = {
     GraphTraversalSource: gt.GraphTraversalSource,
     statics: gt.statics,
     Translator,
-    traversal: gt.traversal
+    traversal: AnonymousTraversalSource.traversal,
+    AnonymousTraversalSource
   },
   structure: {
     io: {
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/anonymous-traversal.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/anonymous-traversal.js
new file mode 100644
index 0000000..ba5532f
--- /dev/null
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/anonymous-traversal.js
@@ -0,0 +1,64 @@
+/*
+ *  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.
+ */
+
+'use strict';
+
+const graphTraversalModule = require('./graph-traversal');
+const TraversalStrategies = 
require('./traversal-strategy').TraversalStrategies;
+const GraphTraversalSource = graphTraversalModule.GraphTraversalSource;
+const Graph = require('../structure/graph').Graph;
+
+/**
+ * Provides a unified way to construct a <code>TraversalSource</code> from the 
perspective of the traversal. In this
+ * syntax the user is creating the source and binding it to a reference which 
is either an existing <code>Graph</code>
+ * instance or a <code>RemoteConnection</code>.
+ */
+class AnonymousTraversalSource {
+
+  /**
+   * Constructs an {@code AnonymousTraversalSource} which will then be 
configured to spawn a
+   * {@link GraphTraversalSource}.
+   * @returns {AnonymousTraversalSource}.
+   */
+  static traversal() {
+    return new AnonymousTraversalSource();
+  }
+
+  /**
+   * Creates the specified {@link GraphTraversalSource{ binding a {@link 
RemoteConnection} as its reference such that
+   * traversals spawned from it will execute over that reference.
+   * @param {GraphTraversalSource} remoteConnection
+   * @return {GraphTraversalSource}
+   */
+  withRemote(remoteConnection) {
+    return this.withGraph(new Graph()).withRemote(remoteConnection);
+  }
+
+  /**
+   * Creates the specified {@link GraphTraversalSource} binding a {@link 
Graph} as its reference such that traversals
+   * spawned from it will execute over that reference.
+   * @param {Graph} graph
+   * @return {GraphTraversalSource}
+   */
+  withGraph(graph) {
+    return new GraphTraversalSource(graph, new TraversalStrategies());
+  }
+}
+
+module.exports = AnonymousTraversalSource;
\ No newline at end of file
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
index edeb2cb..56b9e69 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
@@ -47,6 +47,7 @@ class GraphTraversalSource {
   /**
    * @param remoteConnection
    * @returns {GraphTraversalSource}
+   * @deprecated As of release 3.3.5, replaced by {@link 
AnonymousTraversalSource#withRemote(Configuration)}.
    */
   withRemote(remoteConnection) {
     const traversalStrategy = new 
TraversalStrategies(this.traversalStrategies);
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
index 0c45b78..cd74e25 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
@@ -159,20 +159,11 @@ function areEqual(obj1, obj2) {
   return false;
 }
 
-/**
-* Returns an anonymous traversal source.
-* @returns {GraphTraversalSource}
-*/
-function traversal() {
-  return new gt.GraphTraversalSource(new Graph(), new TraversalStrategies());
-}
-
 module.exports = {
   Edge: Edge,
   Graph: Graph,
   Path: Path,
   Property: Property,
   Vertex: Vertex,
-  VertexProperty: VertexProperty,
-  traversal
+  VertexProperty: VertexProperty
 };
\ No newline at end of file
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
index f02a5cb..6374d8b 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
@@ -30,9 +30,9 @@ const graphModule = require('../../lib/structure/graph');
 const graphTraversalModule = require('../../lib/process/graph-traversal');
 const traversalModule = require('../../lib/process/traversal');
 const utils = require('../../lib/utils');
+const traversal = require('../../lib/process/anonymous-traversal').traversal;
 const Path = graphModule.Path;
 const __ = graphTraversalModule.statics;
-const traversal = graphModule.traversal;
 const t = traversalModule.t;
 
 // Determines whether the feature maps (m[]), are deserialized as objects 
(true) or maps (false).
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js
index abed7b9..bde8a53 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js
@@ -24,10 +24,9 @@
 
 const defineSupportCode = require('cucumber').defineSupportCode;
 const helper = require('../helper');
-const graphModule = require('../../lib/structure/graph');
+const traversal = require('../../lib/process/anonymous-traversal').traversal;
 const graphTraversalModule = require('../../lib/process/graph-traversal');
 const __ = graphTraversalModule.statics;
-const traversal = graphModule.traversal;
 
 defineSupportCode(function (methods) {
   const cache = {};
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
index 1ee0b7e..d454552 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/traversal-test.js
@@ -25,7 +25,7 @@
 const assert = require('assert');
 const graphModule = require('../../lib/structure/graph');
 const Vertex = graphModule.Vertex;
-const traversal = require('../../lib/structure/graph').traversal;
+const traversal = require('../../lib/process/anonymous-traversal').traversal;
 const utils = require('../../lib/utils');
 const helper = require('../helper');
 
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
index b12bfed..be46e93 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/exports-test.js
@@ -51,6 +51,8 @@ describe('API', function () {
     assert.strictEqual(typeof glvModule.process.scope, 'object');
     assert.strictEqual(typeof glvModule.process.t, 'object');
     assert.ok(glvModule.process.statics);
+    validateConstructor(glvModule.process, 'AnonymousTraversalSource');
+    assert.strictEqual(typeof glvModule.process.traversal, 'function');
   });
   it('should expose fields under structure', function () {
     assert.ok(glvModule.structure);

Reply via email to