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/07/26 17:23:44 UTC
[37/50] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1bd35dcc
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1bd35dcc
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1bd35dcc
Branch: refs/heads/TINKERPOP-1913
Commit: 1bd35dcc5383373ed07fb72fdba7da274f982497
Parents: 421839d db46c0f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 25 09:46:11 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 25 09:46:11 2018 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../lib/structure/io/graph-serializer.js | 2 ++
.../lib/structure/io/type-serializers.js | 18 ++++++++++++++++++
.../gremlin-javascript/test/unit/graphson-test.js | 8 ++++++++
4 files changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1bd35dcc/CHANGELOG.asciidoc
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1bd35dcc/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1bd35dcc/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
----------------------------------------------------------------------
diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js
index 3b2b9e6,4bc2935..5044ee7
--- 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
@@@ -283,78 -293,9 +300,79 @@@ class TSerializer extends TypeSerialize
}
}
+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,
+ DateSerializer,
EdgeSerializer,
EnumSerializer,
LambdaSerializer,