You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/11/02 13:02:04 UTC

[7/7] ignite git commit: IGNITE-1814: Fixing.

IGNITE-1814: Fixing.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e225cab2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e225cab2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e225cab2

Branch: refs/heads/ignite-1814
Commit: e225cab21049385e23bc3da306426971825e8296
Parents: c374c16
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Mon Nov 2 14:55:42 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Mon Nov 2 14:55:42 2015 +0300

----------------------------------------------------------------------
 .../internal/portable/PortableReaderExImpl.java | 34 +++-----------------
 .../ignite/internal/portable/PortableUtils.java | 21 ++++++++++++
 .../portable/builder/PortableBuilderImpl.java   | 17 +++-------
 3 files changed, 29 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e225cab2/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index e243ed8..eabd251 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -2611,14 +2611,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
                 int id0 = in.readIntPositioned(searchPos);
 
                 if (id0 == id) {
-                    int pos;
-
-                    if (offsetSize == PortableUtils.OFFSET_1)
-                        pos = start + (int)in.readBytePositioned(searchPos + 4) & 0xFF;
-                    else if (offsetSize == PortableUtils.OFFSET_2)
-                        pos = start + (int)in.readShortPositioned(searchPos + 4) & 0xFFFF;
-                    else
-                        pos = start + in.readIntPositioned(searchPos + 4);
+                    int pos = start + PortableUtils.fieldOffsetRelative(in, searchPos + 4, offsetSize);
 
                     in.position(pos);
 
@@ -2646,7 +2639,9 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
             int order = schema.order(id);
 
             if (order != 0) {
-                int pos = start + fieldPosition(order);
+                int offsetPos = footerStart + order * (4 + offsetSize);
+
+                int pos = start + PortableUtils.fieldOffsetRelative(in, offsetPos, offsetSize);;
 
                 in.position(pos);
 
@@ -2658,27 +2653,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
     }
 
     /**
-     * Get relative field position based on it's order.
-     *
-     * @param order Field order.
-     * @return Relative field position.
-     */
-    private int fieldPosition(int order) {
-        int offsetPos = footerStart + order * (4 + offsetSize);
-
-        int offset;
-
-        if (offsetSize == PortableUtils.OFFSET_1)
-            offset = in.readIntPositioned(offsetPos - 3) & 0xFF;
-        else if (offsetSize == PortableUtils.OFFSET_2)
-            offset = in.readIntPositioned(offsetPos - 2) & 0xFFFF;
-        else
-            offset = in.readIntPositioned(offsetPos);
-
-        return offset;
-    }
-
-    /**
      * Check whether object has low amount of fields.
      *
      * @param footerLen Footer length.

http://git-wip-us.apache.org/repos/asf/ignite/blob/e225cab2/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
index 933f518..ced4d6a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
@@ -671,4 +671,25 @@ public class PortableUtils {
         else
             return OFFSET_4;
     }
+
+    /**
+     * Get relative field offset.
+     *
+     * @param stream Stream.
+     * @param pos Position.
+     * @param fieldOffsetSize Field offset size.
+     * @return Relative field offset.
+     */
+    public static int fieldOffsetRelative(PortablePositionReadable stream, int pos, int fieldOffsetSize) {
+        int res;
+
+        if (fieldOffsetSize == PortableUtils.OFFSET_1)
+            res = (int)stream.readBytePositioned(pos) & 0xFF;
+        else if (fieldOffsetSize == PortableUtils.OFFSET_2)
+            res = (int)stream.readShortPositioned(pos) & 0xFFFF;
+        else
+            res = stream.readIntPositioned(pos);
+
+        return res;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/e225cab2/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
index 6c5a4d2..b8d10a2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
@@ -84,9 +84,7 @@ public class PortableBuilderImpl implements PortableBuilder {
     /** Total header length */
     private final int hdrLen;
 
-    /**
-     * Context of PortableObject reading process. Or {@code null} if object is not created from PortableObject.
-     */
+    /** Context of PortableObject reading process. Or {@code null} if object is not created from PortableObject. */
     private final PortableBuilderReader reader;
 
     /** */
@@ -405,15 +403,7 @@ public class PortableBuilderImpl implements PortableBuilder {
     private IgniteBiTuple<Integer, Integer> fieldPositionAndLength(int footerPos, int footerEnd, int rawPos,
         int fieldOffsetSize) {
         // Get field offset first.
-        int fieldOffset;
-
-        if (fieldOffsetSize == PortableUtils.OFFSET_1)
-            fieldOffset = reader.readIntPositioned(footerPos + 1) & 0xFF;
-        else if (fieldOffsetSize == PortableUtils.OFFSET_2)
-            fieldOffset = reader.readIntPositioned(footerPos + 2) & 0xFFFF;
-        else
-            fieldOffset = reader.readIntPositioned(footerPos + 4);
-
+        int fieldOffset = PortableUtils.fieldOffsetRelative(reader, footerPos + 4, fieldOffsetSize);
         int fieldPos = start + fieldOffset;
 
         // Get field length.
@@ -424,7 +414,8 @@ public class PortableBuilderImpl implements PortableBuilder {
             fieldLen = rawPos - fieldPos;
         else {
             // Field is somewhere in the middle, get difference with the next offset.
-            int nextFieldOffset = reader.readIntPositioned(footerPos + fieldOffsetSize + 4 + fieldOffsetSize);
+            int nextFieldOffset = PortableUtils.fieldOffsetRelative(reader, footerPos + 4 + fieldOffsetSize + 4,
+                fieldOffsetSize);
 
             fieldLen = nextFieldOffset - fieldOffset;
         }