You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by il...@apache.org on 2021/03/16 12:46:39 UTC
[ignite] branch master updated: IGNITE-8635 Add a Method to Inspect
BinaryObject Size - Fixes #8868.
This is an automated email from the ASF dual-hosted git repository.
ilyak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new ea41746 IGNITE-8635 Add a Method to Inspect BinaryObject Size - Fixes #8868.
ea41746 is described below
commit ea417467df05d98ca69a08de02c358b0f81bb6f5
Author: Atri Sharma <at...@gmail.com>
AuthorDate: Tue Mar 16 15:36:17 2021 +0300
IGNITE-8635 Add a Method to Inspect BinaryObject Size - Fixes #8868.
Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
---
.../main/java/org/apache/ignite/binary/BinaryObject.java | 6 ++++++
.../ignite/internal/binary/BinaryEnumObjectImpl.java | 14 ++++++++++++++
.../apache/ignite/internal/binary/BinaryObjectImpl.java | 5 +++++
.../ignite/internal/binary/BinaryObjectOffheapImpl.java | 5 +++++
.../apache/ignite/internal/binary/BinaryEnumsSelfTest.java | 1 +
.../binary/BinaryFooterOffsetsAbstractSelfTest.java | 2 ++
.../ignite/internal/binary/BinaryMarshallerSelfTest.java | 1 +
7 files changed, 34 insertions(+)
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java
index d6ac766..b525793 100644
--- a/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryObject.java
@@ -181,4 +181,10 @@ public interface BinaryObject extends Serializable, Cloneable {
* @throws BinaryObjectException If object is not enum.
*/
public String enumName() throws BinaryObjectException;
+
+ /**
+ * Get the size of the object
+ * @return Size of the object
+ */
+ public int size();
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index b8a3bc2..c09cda1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -473,4 +473,18 @@ public class BinaryEnumObjectImpl implements BinaryObjectEx, Externalizable, Cac
return reader.afterMessageRead(BinaryEnumObjectImpl.class);
}
+
+ /** {@inheritDoc} */
+ @Override public int size() {
+ if (valBytes == null) {
+ try {
+ valBytes = U.marshal(ctx.marshaller(), this);
+ }
+ catch (IgniteCheckedException e) {
+ throw U.convertException(e);
+ }
+ }
+
+ return BinaryPrimitives.readInt(valBytes, ord + GridBinaryMarshaller.TOTAL_LEN_POS);
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index 6b4eea2..ef654cc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -936,6 +936,11 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
+ @Override public int size() {
+ return length();
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
if (arr == null || ctx == null)
return "BinaryObjectImpl [arr= " + (arr != null) + ", ctx=" + (ctx != null) + ", start=" + start + "]";
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index b9ff9c2..a35683e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -519,6 +519,11 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
// No-op.
}
+ /** {@inheritDoc} */
+ @Override public int size() {
+ return length();
+ }
+
/**
* @return Deserialized value.
*/
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java
index 6140c9c..b4b7207 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryEnumsSelfTest.java
@@ -255,6 +255,7 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
BinaryEnumObjectImpl binEnum = new BinaryEnumObjectImpl(binCtx, bytes);
+ assertEquals(srcBinEnum.size(), binEnum.size());
assertEquals(clsName, binEnum.className());
assertEquals(typeId, binEnum.typeId());
assertEquals(ord, binEnum.enumOrdinal());
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
index f9b894c..53211c5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryFooterOffsetsAbstractSelfTest.java
@@ -136,6 +136,8 @@ public abstract class BinaryFooterOffsetsAbstractSelfTest extends GridCommonAbst
BinaryObjectExImpl portObj = toBinary(marsh, obj);
+ assertEquals(portObj.size(), portObj.length());
+
// 1. Test binary object content.
assert portObj.hasField("field1");
assert portObj.hasField("field2");
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index ab2fa88..f48bf9a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -2644,6 +2644,7 @@ public class BinaryMarshallerSelfTest extends GridCommonAbstractTest {
obj.array().length);
assertTrue(offheapObj.equals(offheapObj));
+ assertEquals(offheapObj.size(), obj.size());
assertFalse(offheapObj.equals(null));
assertFalse(offheapObj.equals("str"));
assertTrue(offheapObj.equals(obj));