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;
 

Reply via email to