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 2018/05/01 18:25:11 UTC
[1/3] tinkerpop git commit: TINKERPOP-1943 Support GraphSON3 in
Gremlin-JavaScript
Repository: tinkerpop
Updated Branches:
refs/heads/master a03a4da2a -> 59ad63ae1
TINKERPOP-1943 Support GraphSON3 in Gremlin-JavaScript
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9357c9e5
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9357c9e5
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9357c9e5
Branch: refs/heads/master
Commit: 9357c9e567cea65522db2ca109f427c27a999c06
Parents: 8005cb3
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Wed Apr 25 14:22:25 2018 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Wed Apr 25 14:22:25 2018 +0200
----------------------------------------------------------------------
.../lib/driver/driver-remote-connection.js | 2 +-
.../lib/structure/io/graph-serializer.js | 11 ++-
.../lib/structure/io/type-serializers.js | 81 ++++++++++++++++++++
.../test/cucumber/feature-steps.js | 4 +-
.../gremlin-javascript/test/cucumber/world.js | 10 +--
5 files changed, 96 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9357c9e5/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 d9e6000..ac148a3 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
@@ -33,7 +33,7 @@ const responseStatusCode = {
noContent: 204,
partialContent: 206
};
-const defaultMimeType = 'application/vnd.gremlin-v2.0+json';
+const defaultMimeType = 'application/vnd.gremlin-v3.0+json';
class DriverRemoteConnection extends RemoteConnection {
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9357c9e5/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js
index df05659..df64e41 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js
@@ -159,8 +159,11 @@ const deserializers = {
'g:Edge': typeSerializers.EdgeSerializer,
'g:VertexProperty': typeSerializers.VertexPropertySerializer,
'g:Property': typeSerializers.PropertySerializer,
- 'g:Path': typeSerializers.PathSerializer,
- 'g:T': typeSerializers.TSerializer
+ 'g:Path': typeSerializers.Path3Serializer,
+ 'g:T': typeSerializers.TSerializer,
+ 'g:List': typeSerializers.ListSerializer,
+ 'g:Set': typeSerializers.SetSerializer,
+ 'g:Map': typeSerializers.MapSerializer
};
const serializers = [
@@ -172,7 +175,9 @@ const serializers = [
typeSerializers.EnumSerializer,
typeSerializers.VertexSerializer,
typeSerializers.EdgeSerializer,
- typeSerializers.LongSerializer
+ typeSerializers.LongSerializer,
+ typeSerializers.ListSerializer,
+ typeSerializers.MapSerializer
];
module.exports = {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9357c9e5/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
index 304888f..3b2b9e6 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
@@ -270,22 +270,103 @@ class PathSerializer extends TypeSerializer {
}
}
+class Path3Serializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ return new g.Path(this.reader.read(value['labels']), this.reader.read(value['objects']));
+ }
+}
+
class TSerializer extends TypeSerializer {
deserialize(obj) {
return t.t[obj[valueKey]];
}
}
+class ArraySerializer extends TypeSerializer {
+ constructor(typeKey) {
+ super();
+ this.typeKey = typeKey;
+ }
+
+ deserialize(obj) {
+ const value = obj[valueKey];
+ if (!Array.isArray(value)) {
+ throw new Error('Expected Array, obtained: ' + value);
+ }
+ return value.map(x => this.reader.read(x));
+ }
+
+ /** @param {Array} item */
+ serialize(item) {
+ return {
+ [typeKey]: this.typeKey,
+ [valueKey]: item.map(x => this.writer.adaptObject(x))
+ };
+ }
+
+ canBeUsedFor(value) {
+ return Array.isArray(value);
+ }
+}
+
+class MapSerializer extends TypeSerializer {
+ deserialize(obj) {
+ const value = obj[valueKey];
+ if (!Array.isArray(value)) {
+ throw new Error('Expected Array, obtained: ' + value);
+ }
+ const result = new Map();
+ for (let i = 0; i < value.length; i += 2) {
+ result.set(this.reader.read(value[i]), this.reader.read(value[i + 1]));
+ }
+ return result;
+ }
+
+ /** @param {Map} map */
+ serialize(map) {
+ const arr = [];
+ map.forEach((v, k) => {
+ arr.push(this.writer.adaptObject(k));
+ arr.push(this.writer.adaptObject(v));
+ });
+ return {
+ [typeKey]: 'g:Map',
+ [valueKey]: arr
+ };
+ }
+
+ canBeUsedFor(value) {
+ return value instanceof Map;
+ }
+}
+
+class ListSerializer extends ArraySerializer {
+ constructor() {
+ super('g:List');
+ }
+}
+
+class SetSerializer extends ArraySerializer {
+ constructor() {
+ super('g:Set');
+ }
+}
+
module.exports = {
BytecodeSerializer,
EdgeSerializer,
EnumSerializer,
LambdaSerializer,
+ ListSerializer,
LongSerializer,
+ MapSerializer,
NumberSerializer,
+ Path3Serializer,
PathSerializer,
PropertySerializer,
PSerializer,
+ SetSerializer,
TSerializer,
TraverserSerializer,
typeKey,
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9357c9e5/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
----------------------------------------------------------------------
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 d774754..047856f 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
@@ -37,7 +37,7 @@ const t = traversalModule.t;
// Determines whether the feature maps (m[]), are deserialized as objects (true) or maps (false).
// Use false for GraphSON3.
-const mapAsObject = true;
+const mapAsObject = false;
const parsers = [
[ 'd\\[([\\d.]+)\\]\\.[ilfdm]', toNumeric ],
@@ -233,7 +233,7 @@ function toNumeric(stringValue) {
}
function toVertex(name) {
- return this.getData().vertices[name];
+ return this.getData().vertices.get(name);
}
function toVertexId(name) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9357c9e5/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js
----------------------------------------------------------------------
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 f531720..269e20a 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
@@ -111,16 +111,14 @@ function getEdges(connection) {
.next()
.then(it => {
const edges = {};
- Object.keys(it.value).map(key => {
- edges[getEdgeKey(key)] = it.value[key];
+ it.value.forEach((v, k) => {
+ edges[getEdgeKey(k)] = v;
});
return edges;
});
}
function getEdgeKey(key) {
- const o = /o=(.+?)[,}]/.exec(key)[1];
- const l = /l=(.+?)[,}]/.exec(key)[1];
- const i = /i=(.+?)[,}]/.exec(key)[1];
- return o + "-" + l + "->" + i;
+ // key is a map
+ return key.get('o') + "-" + key.get('l') + "->" + key.get('i');
}
\ No newline at end of file
[3/3] tinkerpop git commit: Merge branch 'tp33'
Posted by jo...@apache.org.
Merge branch 'tp33'
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/59ad63ae
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/59ad63ae
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/59ad63ae
Branch: refs/heads/master
Commit: 59ad63ae1474af0d75d3cccb403a77671b95be37
Parents: a03a4da 99845d4
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Tue May 1 20:24:59 2018 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Tue May 1 20:24:59 2018 +0200
----------------------------------------------------------------------
.../lib/driver/driver-remote-connection.js | 2 +-
.../lib/structure/io/graph-serializer.js | 11 ++-
.../lib/structure/io/type-serializers.js | 81 ++++++++++++++++++++
.../test/cucumber/feature-steps.js | 4 +-
.../gremlin-javascript/test/cucumber/world.js | 10 +--
5 files changed, 96 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
[2/3] tinkerpop git commit: Merge branch 'TINKERPOP-1943' into tp33
Posted by jo...@apache.org.
Merge branch 'TINKERPOP-1943' into tp33
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/99845d4f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/99845d4f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/99845d4f
Branch: refs/heads/master
Commit: 99845d4f152083940a6ed70fe8a5559476149e51
Parents: 7d8cb06 9357c9e
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Tue May 1 20:24:38 2018 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Tue May 1 20:24:38 2018 +0200
----------------------------------------------------------------------
.../lib/driver/driver-remote-connection.js | 2 +-
.../lib/structure/io/graph-serializer.js | 11 ++-
.../lib/structure/io/type-serializers.js | 81 ++++++++++++++++++++
.../test/cucumber/feature-steps.js | 4 +-
.../gremlin-javascript/test/cucumber/world.js | 10 +--
5 files changed, 96 insertions(+), 12 deletions(-)
----------------------------------------------------------------------