IGNITE-1917: Reader constructors simplification (3).
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cbfd19a4 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cbfd19a4 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cbfd19a4 Branch: refs/heads/ignite-1917 Commit: cbfd19a4d2b43b2a9b7bc4ac5ca3c7d7b74e35f5 Parents: d4071a2 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Tue Nov 17 15:18:34 2015 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Tue Nov 17 15:18:34 2015 +0300 ---------------------------------------------------------------------- .../ignite/internal/portable/BinaryObjectImpl.java | 4 ++-- .../internal/portable/BinaryObjectOffheapImpl.java | 14 ++++++++++---- .../internal/portable/BinaryReaderExImpl.java | 15 +++++++-------- .../internal/portable/GridPortableMarshaller.java | 6 +++--- .../portable/builder/PortableBuilderReader.java | 6 +++--- .../portable/streams/PortableHeapInputStream.java | 17 +++++++++++++++++ 6 files changed, 42 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/cbfd19a4/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java index fabbdca..4b86e5a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java @@ -408,7 +408,7 @@ public final class BinaryObjectImpl extends BinaryObjectEx implements Externaliz /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Nullable @Override protected <F> F field(BinaryReaderHandles rCtx, String fieldName) { - BinaryReaderExImpl reader = new BinaryReaderExImpl(ctx, new PortableHeapInputStream(arr), start, null, rCtx); + BinaryReaderExImpl reader = new BinaryReaderExImpl(ctx, PortableHeapInputStream.create(arr, start), null, rCtx); return (F)reader.unmarshalField(fieldName); } @@ -583,6 +583,6 @@ public final class BinaryObjectImpl extends BinaryObjectEx implements Externaliz * @return Reader. */ private BinaryReaderExImpl newReader() { - return new BinaryReaderExImpl(ctx, new PortableHeapInputStream(arr), start, null, new BinaryReaderHandles()); + return new BinaryReaderExImpl(ctx, PortableHeapInputStream.create(arr, start), null, new BinaryReaderHandles()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/cbfd19a4/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java index 91c68cd..d859897 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java @@ -324,8 +324,11 @@ public class BinaryObjectOffheapImpl extends BinaryObjectEx implements Externali /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Nullable @Override protected <F> F field(BinaryReaderHandles rCtx, String fieldName) { - BinaryReaderExImpl reader = - new BinaryReaderExImpl(ctx, new PortableOffheapInputStream(ptr, size, false), start, null, rCtx); + PortableOffheapInputStream stream = new PortableOffheapInputStream(ptr, size, false); + + stream.position(start); + + BinaryReaderExImpl reader = new BinaryReaderExImpl(ctx, stream, null, rCtx); return (F)reader.unmarshalField(fieldName); } @@ -427,7 +430,10 @@ public class BinaryObjectOffheapImpl extends BinaryObjectEx implements Externali * @return Reader. */ private BinaryReaderExImpl newReader() { - return new BinaryReaderExImpl(ctx, new PortableOffheapInputStream(ptr, size, false), start, null, - new BinaryReaderHandles()); + PortableOffheapInputStream stream = new PortableOffheapInputStream(ptr, size, false); + + stream.position(start); + + return new BinaryReaderExImpl(ctx, stream, null, new BinaryReaderHandles()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/cbfd19a4/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java index 60ec1ca..a4d126a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryReaderExImpl.java @@ -125,14 +125,14 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Obje /** Class loaded. */ private final ClassLoader ldr; - /** */ - private BinaryReaderHandles rCtx; + /** Reader context which is constantly passed between objects. */ + private final BinaryReaderHandles rCtx; /** */ private PortableClassDescriptor desc; /** */ - private int start; + private final int start; /** Flag indicating that object header was parsed. */ private boolean hdrParsed; @@ -173,18 +173,17 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Obje /** * @param ctx Context. * @param in Input stream. - * @param start Start. + * @param ldr Class loader. * @param rCtx Context. */ - public BinaryReaderExImpl(PortableContext ctx, PortableInputStream in, int start, ClassLoader ldr, + public BinaryReaderExImpl(PortableContext ctx, PortableInputStream in, ClassLoader ldr, BinaryReaderHandles rCtx) { this.ctx = ctx; this.in = in; - this.start = start; this.ldr = ldr; this.rCtx = rCtx; - in.position(start); + start = in.position(); } /** @@ -1764,7 +1763,7 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Obje * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ @Nullable private Object doReadObject() throws BinaryObjectException { - BinaryReaderExImpl reader = new BinaryReaderExImpl(ctx, in, in.position(), ldr, rCtx); + BinaryReaderExImpl reader = new BinaryReaderExImpl(ctx, in, ldr, rCtx); return reader.deserialize(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/cbfd19a4/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java index dbf4a8b..9c61ef2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableMarshaller.java @@ -256,7 +256,7 @@ public class GridPortableMarshaller { assert bytes != null; BinaryReaderExImpl reader = - new BinaryReaderExImpl(ctx, new PortableHeapInputStream(bytes), 0, clsLdr, new BinaryReaderHandles()); + new BinaryReaderExImpl(ctx, PortableHeapInputStream.create(bytes, 0), clsLdr, new BinaryReaderHandles()); return (T)reader.unmarshal(); } @@ -286,7 +286,7 @@ public class GridPortableMarshaller { return null; BinaryReaderExImpl reader = - new BinaryReaderExImpl(ctx, new PortableHeapInputStream(arr), 0, ldr, new BinaryReaderHandles()); + new BinaryReaderExImpl(ctx, PortableHeapInputStream.create(arr, 0), ldr, new BinaryReaderHandles()); return (T)reader.deserialize(); } @@ -309,7 +309,7 @@ public class GridPortableMarshaller { */ public BinaryReaderExImpl reader(PortableInputStream in) { // TODO: IGNITE-1272 - Is class loader needed here? - return new BinaryReaderExImpl(ctx, in, in.position(), null, new BinaryReaderHandles()); + return new BinaryReaderExImpl(ctx, in, null, new BinaryReaderHandles()); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/cbfd19a4/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 a9ec65a..907c360 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 @@ -67,7 +67,7 @@ public class PortableBuilderReader implements PortablePositionReadable { pos = objImpl.start(); // TODO: IGNITE-1272 - Is class loader needed here? - reader = new BinaryReaderExImpl(ctx, new PortableHeapInputStream(arr), pos, null, new BinaryReaderHandles()); + reader = new BinaryReaderExImpl(ctx, PortableHeapInputStream.create(arr, pos), null, new BinaryReaderHandles()); } /** @@ -97,8 +97,8 @@ public class PortableBuilderReader implements PortablePositionReadable { if (start == pos) targetReader = reader; else - targetReader = - new BinaryReaderExImpl(ctx, new PortableHeapInputStream(arr), start, null, new BinaryReaderHandles()); + targetReader = new BinaryReaderExImpl(ctx, PortableHeapInputStream.create(arr, start), null, + new BinaryReaderHandles()); return targetReader.getOrCreateSchema(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/cbfd19a4/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java index e027d70..1b39950 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java @@ -23,6 +23,23 @@ import java.util.Arrays; * Portable off-heap input stream. */ public final class PortableHeapInputStream extends PortableAbstractInputStream { + /** + * Create stream with pointer set at the given position. + * + * @param data Data. + * @param pos Position. + * @return Stream. + */ + public static PortableHeapInputStream create(byte[] data, int pos) { + assert pos < data.length; + + PortableHeapInputStream stream = new PortableHeapInputStream(data); + + stream.pos = pos; + + return stream; + } + /** Data. */ private byte[] data;