You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by jo...@apache.org on 2017/11/30 13:48:26 UTC
[47/47] tinkerpop git commit: Use ES6 syntax
Use ES6 syntax
- Use class definitions
- Use const and let
- Computed property names in object literals
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f4a27b03
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f4a27b03
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f4a27b03
Branch: refs/heads/TINKERPOP-1489
Commit: f4a27b03336abcade1ee57edb9f0a5ca5eec4603
Parents: 1411e15
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Thu Nov 30 14:45:22 2017 +0100
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Thu Nov 30 14:45:22 2017 +0100
----------------------------------------------------------------------
.../glv/GraphTraversalSource.template | 155 +-
gremlin-javascript/glv/TraversalSource.template | 247 +-
.../lib/driver/driver-remote-connection.js | 279 +-
.../lib/driver/remote-connection.js | 86 +-
.../gremlin-javascript/lib/process/bytecode.js | 125 +-
.../lib/process/graph-traversal.js | 2439 +++++++++---------
.../lib/process/traversal-strategy.js | 99 +-
.../gremlin-javascript/lib/process/traversal.js | 363 +--
.../gremlin-javascript/lib/structure/graph.js | 180 +-
.../lib/structure/io/graph-serializer.js | 535 +---
.../lib/structure/io/type-serializers.js | 288 +++
.../javascript/gremlin-javascript/lib/utils.js | 7 +-
.../test/integration/remote-connection-tests.js | 2 +-
.../test/integration/traversal-test.js | 2 +-
.../test/unit/exports-test.js | 4 +-
.../test/unit/graphson-test.js | 38 +-
.../test/unit/traversal-test.js | 26 +-
17 files changed, 2451 insertions(+), 2424 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/glv/GraphTraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-javascript/glv/GraphTraversalSource.template b/gremlin-javascript/glv/GraphTraversalSource.template
index e0fb453..812cfcf 100644
--- a/gremlin-javascript/glv/GraphTraversalSource.template
+++ b/gremlin-javascript/glv/GraphTraversalSource.template
@@ -22,93 +22,96 @@
*/
'use strict';
-var t = require('./traversal.js');
-var remote = require('../driver/remote-connection');
-var utils = require('../utils');
-var Bytecode = require('./bytecode');
-var TraversalStrategies = require('./traversal-strategy').TraversalStrategies;
-var inherits = utils.inherits;
-var parseArgs = utils.parseArgs;
+const Traversal = require('./traversal').Traversal;
+const remote = require('../driver/remote-connection');
+const utils = require('../utils');
+const Bytecode = require('./bytecode');
+const TraversalStrategies = require('./traversal-strategy').TraversalStrategies;
+const parseArgs = utils.parseArgs;
-/**
- *
- * @param {Graph} graph
- * @param {TraversalStrategies} traversalStrategies
- * @param {Bytecode} [bytecode]
- * @constructor
- */
-function GraphTraversalSource(graph, traversalStrategies, bytecode) {
- this.graph = graph;
- this.traversalStrategies = traversalStrategies;
- this.bytecode = bytecode || new Bytecode();
-}
/**
- * @param remoteConnection
- * @returns {GraphTraversalSource}
+ * Represents the primary DSL of the Gremlin traversal machine.
*/
-GraphTraversalSource.prototype.withRemote = function (remoteConnection) {
- var traversalStrategy = new TraversalStrategies(this.traversalStrategies);
- traversalStrategy.addStrategy(new remote.RemoteStrategy(remoteConnection));
- return new GraphTraversalSource(this.graph, traversalStrategy, new Bytecode(this.bytecode));
-};
+class GraphTraversalSource {
+ /**
+ * @param {Graph} graph
+ * @param {TraversalStrategies} traversalStrategies
+ * @param {Bytecode} [bytecode]
+ */
+ constructor(graph, traversalStrategies, bytecode) {
+ this.graph = graph;
+ this.traversalStrategies = traversalStrategies;
+ this.bytecode = bytecode || new Bytecode();
+ }
-/**
- * Returns the string representation of the GraphTraversalSource.
- * @returns {string}
- */
-GraphTraversalSource.prototype.toString = function () {
- return 'graphtraversalsource[' + this.graph.toString() + ']';
-};
-<% sourceStepMethods.each{ method -> %>
-/**
- * Graph Traversal Source <%= method %> method.
- * @param {...Object} args
- * @returns {GraphTraversalSource}
- */
-GraphTraversalSource.prototype.<%= toJs.call(method) %> = function (args) {
- var b = new Bytecode(this.bytecode).addSource('<%= method %>', parseArgs.apply(null, arguments));
- return new GraphTraversalSource(this.graph, new TraversalStrategies(this.traversalStrategies), b);
-};
-<%
+ /**
+ * @param remoteConnection
+ * @returns {GraphTraversalSource}
+ */
+ withRemote(remoteConnection) {
+ const traversalStrategy = new TraversalStrategies(this.traversalStrategies);
+ traversalStrategy.addStrategy(new remote.RemoteStrategy(remoteConnection));
+ return new GraphTraversalSource(this.graph, traversalStrategy, new Bytecode(this.bytecode));
+ }
+
+ /**
+ * Returns the string representation of the GraphTraversalSource.
+ * @returns {string}
+ */
+ toString() {
+ return 'graphtraversalsource[' + this.graph.toString() + ']';
+ }
+ <% sourceStepMethods.each{ method -> %>
+ /**
+ * Graph Traversal Source <%= method %> method.
+ * @param {...Object} args
+ * @returns {GraphTraversalSource}
+ */
+ <%= toJs.call(method) %>(args) {
+ const b = new Bytecode(this.bytecode).addSource('<%= method %>', parseArgs.apply(null, arguments));
+ return new GraphTraversalSource(this.graph, new TraversalStrategies(this.traversalStrategies), b);
+ }
+ <%
+ }
+ sourceSpawnMethods.each{ method -> %>
+ /**
+ * <%= method %> GraphTraversalSource step method.
+ * @param {...Object} args
+ * @returns {GraphTraversal}
+ */
+ <%= toJs.call(method) %>(args) {
+ const b = new Bytecode(this.bytecode).addStep('<%= method %>', parseArgs.apply(null, arguments));
+ return new GraphTraversal(this.graph, new TraversalStrategies(this.traversalStrategies), b);
+ }
+ <% } %>
}
-sourceSpawnMethods.each{ method -> %>
-/**
- * <%= method %> GraphTraversalSource step method.
- * @param {...Object} args
- * @returns {GraphTraversal}
- */
-GraphTraversalSource.prototype.<%= toJs.call(method) %> = function (args) {
- var b = new Bytecode(this.bytecode).addStep('<%= method %>', parseArgs.apply(null, arguments));
- return new GraphTraversal(this.graph, new TraversalStrategies(this.traversalStrategies), b);
-};
-<% } %>
+
/**
* Represents a graph traversal.
- * @extends Traversal
- * @constructor
*/
-function GraphTraversal(graph, traversalStrategies, bytecode) {
- t.Traversal.call(this, graph, traversalStrategies, bytecode);
+class GraphTraversal extends Traversal {
+ constructor(graph, traversalStrategies, bytecode) {
+ super(graph, traversalStrategies, bytecode);
+ }
+ <% graphStepMethods.each{ method -> %>
+ /**
+ * Graph traversal <%= method %> method.
+ * @param {...Object} args
+ * @returns {GraphTraversal}
+ */
+ <%= toJs.call(method) %>(args) {
+ this.bytecode.addStep('<%= method %>', parseArgs.apply(null, arguments));
+ return this;
+ }
+ <% } %>
}
-inherits(GraphTraversal, t.Traversal);
-<% graphStepMethods.each{ method -> %>
-/**
- * Graph traversal <%= method %> method.
- * @param {...Object} args
- * @returns {GraphTraversal}
- */
-GraphTraversal.prototype.<%= toJs.call(method) %> = function (args) {
- this.bytecode.addStep('<%= method %>', parseArgs.apply(null, arguments));
- return this;
-};
-<% } %>
/**
* Contains the static method definitions
* @type {Object}
*/
-var statics = {};
+const statics = {};
<% anonStepMethods.each{ method -> %>
/**
* <%= method %>() static method
@@ -116,12 +119,12 @@ var statics = {};
* @returns {GraphTraversal}
*/
statics.<%= toJs.call(method) %> = function (args) {
- var g = new GraphTraversal(null, null, new Bytecode());
+ const g = new GraphTraversal(null, null, new Bytecode());
return g.<%= toJs.call(method) %>.apply(g, arguments);
};
<% } %>
module.exports = {
- GraphTraversal: GraphTraversal,
- GraphTraversalSource: GraphTraversalSource,
- statics: statics
+ GraphTraversal,
+ GraphTraversalSource,
+ statics
};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/glv/TraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-javascript/glv/TraversalSource.template b/gremlin-javascript/glv/TraversalSource.template
index 0d45e90..d707a42 100644
--- a/gremlin-javascript/glv/TraversalSource.template
+++ b/gremlin-javascript/glv/TraversalSource.template
@@ -26,142 +26,149 @@ const utils = require('../utils');
const parseArgs = utils.parseArgs;
const itemDone = Object.freeze({ value: null, done: true });
-function Traversal(graph, traversalStrategies, bytecode) {
- this.graph = graph;
- this.traversalStrategies = traversalStrategies;
- this.bytecode = bytecode;
- /** @type {Array<Traverser>} */
- this.traversers = null;
- this.sideEffects = null;
- this._traversalStrategiesPromise = null;
- this._traversersIteratorIndex = 0;
-}
+class Traversal {
+ constructor(graph, traversalStrategies, bytecode) {
+ this.graph = graph;
+ this.traversalStrategies = traversalStrategies;
+ this.bytecode = bytecode;
+ /** @type {Array<Traverser>} */
+ this.traversers = null;
+ this.sideEffects = null;
+ this._traversalStrategiesPromise = null;
+ this._traversersIteratorIndex = 0;
+ }
-/** @returns {Bytecode} */
-Traversal.prototype.getBytecode = function () {
- return this.bytecode;
-};
+ /** @returns {Bytecode} */
+ getBytecode() {
+ return this.bytecode;
+ }
-/**
- * Returns an Array containing the traverser objects.
- * @returns {Promise.<Array>}
- */
-Traversal.prototype.toList = function () {
- return this._applyStrategies().then(() => {
- const result = [];
- let it;
- while ((it = this._getNext()) && !it.done) {
- result.push(it.value);
- }
- return result;
- });
-};
+ /**
+ * Returns an Array containing the traverser objects.
+ * @returns {Promise.<Array>}
+ */
+ toList() {
+ return this._applyStrategies().then(() => {
+ const result = [];
+ let it;
+ while ((it = this._getNext()) && !it.done) {
+ result.push(it.value);
+ }
+ return result;
+ });
+ };
+
+ /**
+ * Iterates all Traverser instances in the traversal.
+ * @returns {Promise}
+ */
+ iterate() {
+ return this._applyStrategies().then(() => {
+ let it;
+ while ((it = this._getNext()) && !it.done) {
+ }
+ });
+ }
-/**
- * Iterates all Traverser instances in the traversal.
- * @returns {Promise}
- */
-Traversal.prototype.iterate = function () {
- return this._applyStrategies().then(() => {
- let it;
- while ((it = this._getNext()) && !it.done) {
- }
- });
-};
+ /**
+ * Async iterator method implementation.
+ * Returns a promise containing an iterator item.
+ * @returns {Promise.<{value, done}>}
+ */
+ next() {
+ return this._applyStrategies().then(() => this._getNext());
+ }
-/**
- * Async iterator method implementation.
- * Returns a promise containing an iterator item.
- * @returns {Promise.<{value, done}>}
- */
-Traversal.prototype.next = function () {
- return this._applyStrategies().then(() => this._getNext());
-};
+ /**
+ * Synchronous iterator of traversers including
+ * @private
+ */
+ _getNext() {
+ while (this.traversers && this._traversersIteratorIndex < this.traversers.length) {
+ let traverser = this.traversers[this._traversersIteratorIndex];
+ if (traverser.bulk > 0) {
+ traverser.bulk--;
+ return { value: traverser.object, done: false };
+ }
+ this._traversersIteratorIndex++;
+ }
+ return itemDone;
+ }
-/**
- * Synchronous iterator of traversers including
- * @private
- */
-Traversal.prototype._getNext = function () {
- while (this.traversers && this._traversersIteratorIndex < this.traversers.length) {
- let traverser = this.traversers[this._traversersIteratorIndex];
- if (traverser.bulk > 0) {
- traverser.bulk--;
- return { value: traverser.object, done: false };
+ _applyStrategies() {
+ if (this._traversalStrategiesPromise) {
+ // Apply strategies only once
+ return this._traversalStrategiesPromise;
}
- this._traversersIteratorIndex++;
+ return this._traversalStrategiesPromise = this.traversalStrategies.applyStrategies(this);
}
- return itemDone;
-};
-Traversal.prototype._applyStrategies = function () {
- if (this._traversalStrategiesPromise) {
- // Apply strategies only once
- return this._traversalStrategiesPromise;
+ /**
+ * Returns the Bytecode JSON representation of the traversal
+ * @returns {String}
+ */
+ toString() {
+ return this.bytecode.toString();
+ };
+}
+
+class P {
+ /**
+ * Represents an operation.
+ * @constructor
+ */
+ constructor(operator, value, other) {
+ this.operator = operator;
+ this.value = value;
+ this.other = other;
}
- return this._traversalStrategiesPromise = this.traversalStrategies.applyStrategies(this);
-};
-/**
- * Returns the Bytecode JSON representation of the traversal
- * @returns {String}
- */
-Traversal.prototype.toString = function () {
- return this.bytecode.toString();
-};
+ /**
+ * Returns the string representation of the instance.
+ * @returns {string}
+ */
+ toString() {
+ if (this.other === undefined) {
+ return this.operator + '(' + this.value + ')';
+ }
+ return this.operator + '(' + this.value + ', ' + this.other + ')';
+ }
-/**
- * Represents an operation.
- * @constructor
- */
-function P(operator, value, other) {
- this.operator = operator;
- this.value = value;
- this.other = other;
-}
+ and(arg) {
+ return new P('and', this, arg);
+ }
-/**
- * Returns the string representation of the instance.
- * @returns {string}
- */
-P.prototype.toString = function () {
- if (this.other === undefined) {
- return this.operator + '(' + this.value + ')';
+ or(arg) {
+ return new P('or', this, arg);
+ }
+<% pmethods.each{ method -> %>
+ /** @param {...Object} args */
+ static <%= toJs.call(method) %>(args) {
+ return createP('<%= method %>', parseArgs.apply(null, arguments));
}
- return this.operator + '(' + this.value + ', ' + this.other + ')';
-};
+<% } %>
+}
function createP(operator, args) {
args.unshift(null, operator);
return new (Function.prototype.bind.apply(P, args));
}
-<% pmethods.each{ method -> %>
-/** @param {...Object} args */
-P.<%= toJs.call(method) %> = function (args) {
- return createP('<%= method %>', parseArgs.apply(null, arguments));
-};
-<% } %>
-P.prototype.and = function (arg) {
- return new P('and', this, arg);
-};
-
-P.prototype.or = function (arg) {
- return new P('or', this, arg);
-};
-function Traverser(object, bulk) {
- this.object = object;
- this.bulk = bulk || 1;
+class Traverser {
+ constructor(object, bulk) {
+ this.object = object;
+ this.bulk = bulk || 1;
+ }
}
-function TraversalSideEffects() {
+class TraversalSideEffects {
}
function toEnum(typeName, keys) {
- var result = {};
- keys.split(' ').forEach(function (k) {
- var jsKey = k;
+ const result = {};
+ keys.split(' ').forEach(k => {
+ let jsKey = k;
if (jsKey === jsKey.toUpperCase()) {
jsKey = jsKey.toLowerCase();
}
@@ -170,17 +177,19 @@ function toEnum(typeName, keys) {
return result;
}
-function EnumValue(typeName, elementName) {
- this.typeName = typeName;
- this.elementName = elementName;
+class EnumValue {
+ constructor(typeName, elementName) {
+ this.typeName = typeName;
+ this.elementName = elementName;
+ }
}
module.exports = {
- EnumValue: EnumValue,
- P: P,
- Traversal: Traversal,
- TraversalSideEffects: TraversalSideEffects,
- Traverser: Traverser<%
+ EnumValue,
+ P,
+ Traversal,
+ TraversalSideEffects,
+ Traverser<%
enums.each{ enumClass ->
out.print ",\n " + decapitalize.call(enumClass.simpleName) + ": toEnum('" + enumClass.simpleName + "', '" +
enumClass.getEnumConstants().sort { a, b -> a.name() <=> b.name() }.collect { toJs.call(it.name()) }.join(' ') + "')"
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
index 51661c3..ac3fb0f 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
@@ -22,165 +22,164 @@
*/
'use strict';
-var crypto = require('crypto');
-var WebSocket = require('ws');
-var util = require('util');
-var RemoteConnection = require('./remote-connection').RemoteConnection;
-var utils = require('../utils');
-var serializer = require('../structure/io/graph-serializer');
-var inherits = utils.inherits;
-var defaultMimeType = 'application/vnd.gremlin-v2.0+json';
-var responseStatusCode = {
+const crypto = require('crypto');
+const WebSocket = require('ws');
+const util = require('util');
+const RemoteConnection = require('./remote-connection').RemoteConnection;
+const utils = require('../utils');
+const serializer = require('../structure/io/graph-serializer');
+const responseStatusCode = {
success: 200,
noContent: 204,
partialContent: 206
};
+const defaultMimeType = 'application/vnd.gremlin-v2.0+json';
-/**
- * Creates a new instance of DriverRemoteConnection.
- * @param {String} url The resource uri.
- * @param {Object} [options] The connection options.
- * @param {Array} [options.ca] Trusted certificates.
- * @param {String|Array|Buffer} [options.cert] The certificate key.
- * @param {String} [options.mimeType] The mime type to use.
- * @param {String|Buffer} [options.pfx] The private key, certificate, and CA certs.
- * @param {GraphSONReader} [options.reader] The reader to use.
- * @param {Boolean} [options.rejectUnauthorized] Determines whether to verify or not the server certificate.
- * @param {String} [options.traversalSource] The traversal source. Defaults to: 'g'.
- * @param {GraphSONWriter} [options.writer] The writer to use.
- * @constructor
- */
-function DriverRemoteConnection(url, options) {
- RemoteConnection.call(this, url);
- options = options || {};
- this._ws = new WebSocket(url, {
- ca: options.ca,
- cert: options.cert,
- pfx: options.pfx,
- rejectUnauthorized: options.rejectUnauthorized
- });
- var self = this;
- this._ws.on('open', function opened () {
- self.isOpen = true;
- if (self._openCallback) {
- self._openCallback();
- }
- });
- this._ws.on('message', function incoming (data) {
- self._handleMessage(data);
- });
- // A map containing the request id and the handler
- this._responseHandlers = {};
- this._reader = options.reader || new serializer.GraphSONReader();
- this._writer = options.writer || new serializer.GraphSONWriter();
- this._openPromise = null;
- this._openCallback = null;
- this._closePromise = null;
- var mimeType = options.mimeType || defaultMimeType;
- this._header = String.fromCharCode(mimeType.length) + mimeType;
- this.isOpen = false;
- this.traversalSource = options.traversalSource || 'g';
-}
-
-inherits(DriverRemoteConnection, RemoteConnection);
+class DriverRemoteConnection extends RemoteConnection {
+ /**
+ * Creates a new instance of DriverRemoteConnection.
+ * @param {String} url The resource uri.
+ * @param {Object} [options] The connection options.
+ * @param {Array} [options.ca] Trusted certificates.
+ * @param {String|Array|Buffer} [options.cert] The certificate key.
+ * @param {String} [options.mimeType] The mime type to use.
+ * @param {String|Buffer} [options.pfx] The private key, certificate, and CA certs.
+ * @param {GraphSONReader} [options.reader] The reader to use.
+ * @param {Boolean} [options.rejectUnauthorized] Determines whether to verify or not the server certificate.
+ * @param {String} [options.traversalSource] The traversal source. Defaults to: 'g'.
+ * @param {GraphSONWriter} [options.writer] The writer to use.
+ * @constructor
+ */
+ constructor(url, options) {
+ super(url);
+ options = options || {};
+ this._ws = new WebSocket(url, {
+ ca: options.ca,
+ cert: options.cert,
+ pfx: options.pfx,
+ rejectUnauthorized: options.rejectUnauthorized
+ });
+ var self = this;
+ this._ws.on('open', function opened () {
+ self.isOpen = true;
+ if (self._openCallback) {
+ self._openCallback();
+ }
+ });
+ this._ws.on('message', function incoming (data) {
+ self._handleMessage(data);
+ });
+ // A map containing the request id and the handler
+ this._responseHandlers = {};
+ this._reader = options.reader || new serializer.GraphSONReader();
+ this._writer = options.writer || new serializer.GraphSONWriter();
+ this._openPromise = null;
+ this._openCallback = null;
+ this._closePromise = null;
+ const mimeType = options.mimeType || defaultMimeType;
+ this._header = String.fromCharCode(mimeType.length) + mimeType;
+ this.isOpen = false;
+ this.traversalSource = options.traversalSource || 'g';
+ }
-/**
- * Opens the connection, if its not already opened.
- * @returns {Promise}
- */
-DriverRemoteConnection.prototype.open = function (promiseFactory) {
- if (this._closePromise) {
+ /**
+ * Opens the connection, if its not already opened.
+ * @returns {Promise}
+ */
+ open(promiseFactory) {
+ if (this._closePromise) {
+ return this._openPromise = utils.toPromise(promiseFactory, function promiseHandler(callback) {
+ callback(new Error('Connection has been closed'));
+ });
+ }
+ if (this._openPromise) {
+ return this._openPromise;
+ }
+ const self = this;
return this._openPromise = utils.toPromise(promiseFactory, function promiseHandler(callback) {
- callback(new Error('Connection has been closed'));
+ if (self.isOpen) {
+ return callback();
+ }
+ // It will be invoked when opened
+ self._openCallback = callback;
});
}
- if (this._openPromise) {
- return this._openPromise;
+
+ /** @override */
+ submit(bytecode, promiseFactory) {
+ const self = this;
+ return this.open().then(function () {
+ return utils.toPromise(promiseFactory, function promiseHandler(callback) {
+ const requestId = getUuid();
+ self._responseHandlers[requestId] = {
+ callback: callback,
+ result: null
+ };
+ const message = bufferFromString(self._header + JSON.stringify(self._getRequest(requestId, bytecode)));
+ self._ws.send(message);
+ });
+ });
}
- var self = this;
- return this._openPromise = utils.toPromise(promiseFactory, function promiseHandler(callback) {
- if (self.isOpen) {
- return callback();
- }
- // It will be invoked when opened
- self._openCallback = callback;
- });
-};
-/** @override */
-DriverRemoteConnection.prototype.submit = function (bytecode, promiseFactory) {
- var self = this;
- return this.open().then(function () {
- return utils.toPromise(promiseFactory, function promiseHandler(callback) {
- var requestId = getUuid();
- self._responseHandlers[requestId] = {
- callback: callback,
- result: null
- };
- var message = bufferFromString(self._header + JSON.stringify(self._getRequest(requestId, bytecode)));
- self._ws.send(message);
+ _getRequest(id, bytecode) {
+ return ({
+ 'requestId': { '@type': 'g:UUID', '@value': id },
+ 'op': 'bytecode',
+ 'processor': 'traversal',
+ 'args': {
+ 'gremlin': this._writer.adaptObject(bytecode),
+ 'aliases': { 'g': this.traversalSource }
+ }
});
- });
-};
+ }
-DriverRemoteConnection.prototype._getRequest = function (id, bytecode) {
- return ({
- 'requestId': { '@type': 'g:UUID', '@value': id },
- 'op': 'bytecode',
- 'processor': 'traversal',
- 'args': {
- 'gremlin': this._writer.adaptObject(bytecode),
- 'aliases': { 'g': this.traversalSource }
+ _handleMessage(data) {
+ const response = this._reader.read(JSON.parse(data.toString()));
+ const handler = this._responseHandlers[response.requestId];
+ if (response.status.code >= 400) {
+ // callback in error
+ return handler.callback(
+ new Error(util.format('Server error: %s (%d)', response.status.message, response.status.code)));
}
- });
-};
-
-DriverRemoteConnection.prototype._handleMessage = function (data) {
- var response = this._reader.read(JSON.parse(data.toString()));
- var handler = this._responseHandlers[response.requestId];
- if (response.status.code >= 400) {
- // callback in error
- return handler.callback(
- new Error(util.format('Server error: %s (%d)', response.status.message, response.status.code)));
- }
- switch (response.status.code) {
- case responseStatusCode.noContent:
- return handler.callback(null, { traversers: []});
- case responseStatusCode.partialContent:
- handler.result = handler.result || [];
- handler.result.push.apply(handler.result, response.result.data);
- break;
- default:
- if (handler.result) {
+ switch (response.status.code) {
+ case responseStatusCode.noContent:
+ return handler.callback(null, { traversers: []});
+ case responseStatusCode.partialContent:
+ handler.result = handler.result || [];
handler.result.push.apply(handler.result, response.result.data);
- }
- else {
- handler.result = response.result.data;
- }
- return handler.callback(null, { traversers: handler.result });
+ break;
+ default:
+ if (handler.result) {
+ handler.result.push.apply(handler.result, response.result.data);
+ }
+ else {
+ handler.result = response.result.data;
+ }
+ return handler.callback(null, { traversers: handler.result });
+ }
}
-};
-/**
- * Closes the Connection.
- * @return {Promise}
- */
-DriverRemoteConnection.prototype.close = function (promiseFactory) {
- if (this._closePromise) {
- return this._closePromise;
- }
- var self = this;
- return this._closePromise = utils.toPromise(promiseFactory, function promiseHandler(callback) {
- self._ws.on('close', function () {
- self.isOpen = false;
- callback();
+ /**
+ * Closes the Connection.
+ * @return {Promise}
+ */
+ close(promiseFactory) {
+ if (this._closePromise) {
+ return this._closePromise;
+ }
+ const self = this;
+ return this._closePromise = utils.toPromise(promiseFactory, function promiseHandler(callback) {
+ self._ws.on('close', function () {
+ self.isOpen = false;
+ callback();
+ });
+ self._ws.close();
});
- self._ws.close();
- });
-};
+ }
+}
function getUuid() {
- var buffer = crypto.randomBytes(16);
+ const buffer = crypto.randomBytes(16);
//clear the version
buffer[6] &= 0x0f;
//set the version 4
@@ -189,7 +188,7 @@ function getUuid() {
buffer[8] &= 0x3f;
//set the IETF variant
buffer[8] |= 0x80;
- var hex = buffer.toString('hex');
+ const hex = buffer.toString('hex');
return (
hex.substr(0, 8) + '-' +
hex.substr(8, 4) + '-' +
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/remote-connection.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/remote-connection.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/remote-connection.js
index 235375a..37f3d0e 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/remote-connection.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/remote-connection.js
@@ -22,60 +22,54 @@
*/
'use strict';
-var t = require('../process/traversal');
-var TraversalStrategy = require('../process/traversal-strategy').TraversalStrategy;
-var utils = require('../utils');
-var inherits = utils.inherits;
+const t = require('../process/traversal');
+const TraversalStrategy = require('../process/traversal-strategy').TraversalStrategy;
-function RemoteConnection(url) {
- this.url = url;
-}
-
-/**
- * @abstract
- * @param {Bytecode} bytecode
- * @param {Function|undefined} promiseFactory
- * @returns {Promise}
- */
-RemoteConnection.prototype.submit = function (bytecode, promiseFactory) {
- throw new Error('submit() was not implemented');
-};
+class RemoteConnection {
+ constructor(url) {
+ this.url = url;
+ }
-/**
- * @extends {Traversal}
- * @constructor
- */
-function RemoteTraversal(traversers, sideEffects) {
- t.Traversal.call(this, null, null, null);
- this.traversers = traversers;
- this.sideEffects = sideEffects;
+ /**
+ * @abstract
+ * @param {Bytecode} bytecode
+ * @param {Function|undefined} promiseFactory
+ * @returns {Promise}
+ */
+ submit(bytecode, promiseFactory) {
+ throw new Error('submit() was not implemented');
+ };
}
-inherits(RemoteTraversal, t.Traversal);
-
-/**
- *
- * @param {RemoteConnection} connection
- * @extends {TraversalStrategy}
- * @constructor
- */
-function RemoteStrategy(connection) {
- TraversalStrategy.call(this);
- this.connection = connection;
+class RemoteTraversal extends t.Traversal {
+ constructor(traversers, sideEffects) {
+ super(null, null, null);
+ this.traversers = traversers;
+ this.sideEffects = sideEffects;
+ }
}
-inherits(RemoteStrategy, TraversalStrategy);
+class RemoteStrategy extends TraversalStrategy {
+ /**
+ * Creates a new instance of RemoteStrategy.
+ * @param {RemoteConnection} connection
+ */
+ constructor(connection) {
+ super();
+ this.connection = connection;
+ }
-/** @override */
-RemoteStrategy.prototype.apply = function (traversal, promiseFactory) {
- if (traversal.traversers) {
- return utils.resolvedPromise(promiseFactory);
+ /** @override */
+ apply(traversal, promiseFactory) {
+ if (traversal.traversers) {
+ return utils.resolvedPromise(promiseFactory);
+ }
+ return this.connection.submit(traversal.getBytecode(), promiseFactory).then(function (remoteTraversal) {
+ traversal.sideEffects = remoteTraversal.sideEffects;
+ traversal.traversers = remoteTraversal.traversers;
+ });
}
- return this.connection.submit(traversal.getBytecode(), promiseFactory).then(function (remoteTraversal) {
- traversal.sideEffects = remoteTraversal.sideEffects;
- traversal.traversers = remoteTraversal.traversers;
- });
-};
+}
module.exports = {
RemoteConnection: RemoteConnection,
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a27b03/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/bytecode.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/bytecode.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/bytecode.js
index 2909718..85a4fc2 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/bytecode.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/bytecode.js
@@ -22,78 +22,77 @@
*/
'use strict';
-/**
- * Creates a new instance of Bytecode
- * @param {Bytecode} [toClone]
- * @constructor
- */
-function Bytecode(toClone) {
- if (!toClone) {
- this.sourceInstructions = [];
- this.stepInstructions = [];
- }
- else {
- this.sourceInstructions = toClone.sourceInstructions.slice(0);
- this.stepInstructions = toClone.stepInstructions.slice(0);
+class Bytecode {
+ /**
+ * Creates a new instance of Bytecode
+ * @param {Bytecode} [toClone]
+ */
+ constructor(toClone) {
+ if (!toClone) {
+ this.sourceInstructions = [];
+ this.stepInstructions = [];
+ }
+ else {
+ this.sourceInstructions = toClone.sourceInstructions.slice(0);
+ this.stepInstructions = toClone.stepInstructions.slice(0);
+ }
}
-}
-/**
- * Adds a new source instructions
- * @param {String} name
- * @param {Array} values
- * @returns {Bytecode}
- */
-Bytecode.prototype.addSource = function (name, values) {
- if (name === undefined) {
- throw new Error('Name is not defined');
+ /**
+ * Adds a new source instructions
+ * @param {String} name
+ * @param {Array} values
+ * @returns {Bytecode}
+ */
+ addSource(name, values) {
+ if (name === undefined) {
+ throw new Error('Name is not defined');
+ }
+ const instruction = new Array(values.length + 1);
+ instruction[0] = name;
+ for (let i = 0; i < values.length; ++i) {
+ instruction[i + 1] = values[i];
+ }
+ this.sourceInstructions.push(Bytecode._generateInstruction(name, values));
+ return this;
}
- var instruction = new Array(values.length + 1);
- instruction[0] = name;
- for (var i = 0; i < values.length; ++i) {
- instruction[i + 1] = this._convertToArgument(values[i]);
+
+ /**
+ * Adds a new step instructions
+ * @param {String} name
+ * @param {Array} values
+ * @returns {Bytecode}
+ */
+ addStep(name, values) {
+ if (name === undefined) {
+ throw new Error('Name is not defined');
+ }
+ this.stepInstructions.push(Bytecode._generateInstruction(name, values));
+ return this;
}
- this.sourceInstructions.push(this._generateInstruction(name, values));
- return this;
-};
-/**
- * Adds a new step instructions
- * @param {String} name
- * @param {Array} values
- * @returns {Bytecode}
- */
-Bytecode.prototype.addStep = function (name, values) {
- if (name === undefined) {
- throw new Error('Name is not defined');
+ static _generateInstruction(name, values) {
+ const length = (values ? values.length : 0) + 1;
+ const instruction = new Array(length);
+ instruction[0] = name;
+ for (let i = 1; i < length; i++) {
+ instruction[i] = values[i - 1];
+ }
+ return instruction;
}
- this.stepInstructions.push(this._generateInstruction(name, values));
- return this;
-};
-Bytecode.prototype._generateInstruction = function (name, values) {
- var length = (values ? values.length : 0) + 1;
- var instruction = new Array(length);
- instruction[0] = name;
- for (var i = 1; i < length; i++) {
- instruction[i] = this._convertToArgument(values[i - 1]);
+ /**
+ * Returns the JSON representation of the source and step instructions
+ * @returns {String}
+ */
+ toString() {
+ return (
+ (this.sourceInstructions.length > 0 ? JSON.stringify(this.sourceInstructions) : '') +
+ (this.stepInstructions.length > 0 ? JSON.stringify(this.stepInstructions) : '')
+ );
}
- return instruction;
-};
+}
-/**
- * Returns the JSON representation of the source and step instructions
- * @returns {String}
- */
-Bytecode.prototype.toString = function () {
- return (
- (this.sourceInstructions.length > 0 ? JSON.stringify(this.sourceInstructions) : '') +
- (this.stepInstructions.length > 0 ? JSON.stringify(this.stepInstructions) : '')
- );
-};
-Bytecode.prototype._convertToArgument = function (value) {
- return value;
-};
module.exports = Bytecode;
\ No newline at end of file