From commits-return-30621-archive-asf-public=cust-asf.ponee.io@tinkerpop.apache.org Wed Jul 25 15:46:34 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 96D6E180679 for ; Wed, 25 Jul 2018 15:46:33 +0200 (CEST) Received: (qmail 58396 invoked by uid 500); 25 Jul 2018 13:46:32 -0000 Mailing-List: contact commits-help@tinkerpop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@tinkerpop.apache.org Delivered-To: mailing list commits@tinkerpop.apache.org Received: (qmail 58387 invoked by uid 99); 25 Jul 2018 13:46:32 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Jul 2018 13:46:32 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 1BB77DFC7B; Wed, 25 Jul 2018 13:46:32 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: spmallette@apache.org To: commits@tinkerpop.apache.org Date: Wed, 25 Jul 2018 13:46:33 -0000 Message-Id: In-Reply-To: <122673d7cf6443d29fdd8ecc8172230a@git.apache.org> References: <122673d7cf6443d29fdd8ecc8172230a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/3] 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/master Commit: 1bd35dcc5383373ed07fb72fdba7da274f982497 Parents: 421839d db46c0f Author: Stephen Mallette Authored: Wed Jul 25 09:46:11 2018 -0400 Committer: Stephen Mallette 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,