Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DCA8C18B8B for ; Thu, 12 Nov 2015 13:40:37 +0000 (UTC) Received: (qmail 91848 invoked by uid 500); 12 Nov 2015 13:40:37 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 91741 invoked by uid 500); 12 Nov 2015 13:40:37 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 91604 invoked by uid 99); 12 Nov 2015 13:40:37 -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; Thu, 12 Nov 2015 13:40:37 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 73E60E5E22; Thu, 12 Nov 2015 13:40:37 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vozerov@apache.org To: commits@ignite.apache.org Date: Thu, 12 Nov 2015 13:40:41 -0000 Message-Id: In-Reply-To: <78b4cd5027394799acd457a651cc6bc4@git.apache.org> References: <78b4cd5027394799acd457a651cc6bc4@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [5/6] ignite git commit: IGNITE-1816: All tests pass. IGNITE-1816: All tests pass. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8065338d Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8065338d Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8065338d Branch: refs/heads/ignite-1816 Commit: 8065338db941cb12a05329627b829c64a114354e Parents: ac9af65 Author: vozerov-gridgain Authored: Thu Nov 12 16:28:40 2015 +0300 Committer: vozerov-gridgain Committed: Thu Nov 12 16:28:40 2015 +0300 ---------------------------------------------------------------------- .../portable/builder/BinaryObjectBuilderImpl.java | 9 +++++---- .../portable/builder/PortableBuilderReader.java | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/8065338d/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java index 2e42cbb..509725f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java @@ -205,7 +205,7 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder { Set remainsFlds = null; if (reader != null) { - PortableSchema schema = reader.schema(); + PortableSchema schema = reader.schema(start); Map assignedFldsById; @@ -213,9 +213,9 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder { assignedFldsById = U.newHashMap(assignedVals.size()); for (Map.Entry entry : assignedVals.entrySet()) { - int fldId = ctx.fieldId(typeId, entry.getKey()); + int fieldId = ctx.fieldId(typeId, entry.getKey()); - assignedFldsById.put(fldId, entry.getValue()); + assignedFldsById.put(fieldId, entry.getValue()); } remainsFlds = assignedFldsById.keySet(); @@ -240,6 +240,7 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder { int idx = 0; + // TODO: + fieldIdLen looks incorrect here. while (reader.position() + fieldIdLen < rawPos) { int fieldId = schema.fieldId(idx++); int fieldLen = @@ -433,7 +434,7 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder { int fieldIdLen = PortableUtils.fieldIdLength(flags); int fieldOffsetLen = PortableUtils.fieldOffsetLength(flags); - PortableSchema schema = reader.schema(); + PortableSchema schema = reader.schema(start); Map readCache = new HashMap<>(); http://git-wip-us.apache.org/repos/asf/ignite/blob/8065338d/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java index 550b8ea..b6a6b54 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java @@ -64,7 +64,7 @@ public class PortableBuilderReader implements PortablePositionReadable { pos = objImpl.start(); // TODO: IGNITE-1272 - Is class loader needed here? - reader = new BinaryReaderExImpl(portableContext(), arr, pos, null); + reader = new BinaryReaderExImpl(ctx, arr, pos, null); } /** @@ -82,10 +82,21 @@ public class PortableBuilderReader implements PortablePositionReadable { } /** + * Get schema of the object, starting at the given position. + * + * @param start Start position. * @return Object's schema. */ - public PortableSchema schema() { - return reader.getOrCreateSchema(); + public PortableSchema schema(int start) { + // We can use current reader in case start is equal to initially recorded position. + BinaryReaderExImpl targetReader; + + if (start == pos) + targetReader = reader; + else + targetReader = new BinaryReaderExImpl(ctx, arr, start, null); + + return targetReader.getOrCreateSchema(); } /**