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;
}