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 2018/10/05 13:43:28 UTC

tinkerpop git commit: TINKERPOP-1959 Refactored request arg serialization to be more general

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1959 ad624be50 -> 67e56dd60


TINKERPOP-1959 Refactored request arg serialization to be more general


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/67e56dd6
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/67e56dd6
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/67e56dd6

Branch: refs/heads/TINKERPOP-1959
Commit: 67e56dd609d7f5d34362d0b00cb2d5698988c6ad
Parents: ad624be
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Oct 5 09:42:37 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Oct 5 09:42:37 2018 -0400

----------------------------------------------------------------------
 .../lib/driver/driver-remote-connection.js      | 25 ++++++++++----------
 1 file changed, 12 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67e56dd6/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 911d7d6..e792752 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
@@ -125,9 +125,9 @@ class DriverRemoteConnection extends RemoteConnection {
 
   _getRequest(id, bytecode, op, args, processor) {
     if (args) {
-      args = this._adaptArgs(args);
+      args = this._adaptArgs(args, true);
     }
-    
+
     return ({
       'requestId': { '@type': 'g:UUID', '@value': id },
       'op': op || 'bytecode',
@@ -214,24 +214,23 @@ class DriverRemoteConnection extends RemoteConnection {
    * @returns {Object}
    * @private
    */
-  _adaptArgs(args) {
-    if (Array.isArray(args)) {
-      return args.map(val => this._adaptArgs(val));
-    }
-
-    if (args instanceof t.EnumValue) {
-       return this._writer.adaptObject(args);
-    }
-
+  _adaptArgs(args, protocolLevel) {
     if (args instanceof Object) {
       let newObj = {};
       Object.keys(args).forEach((key) => {
-        newObj[key] = this._adaptArgs(args[key]);
+        // bindings key (at the protocol-level needs special handling. without this, it wraps the generated Map
+        // in another map for types like EnumValue. Could be a nicer way to do this but for now it's solving the
+        // problem with script submission of non JSON native types
+        if (protocolLevel && key === 'bindings')
+          newObj[key] = this._adaptArgs(args[key], false);
+        else
+          newObj[key] = this._writer.adaptObject(args[key]);
       });
+
       return newObj;
     }
 
-    return this._writer.adaptObject(args);
+    return args;
   }
 
   /**