You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2025/04/17 07:21:35 UTC
(ignite) branch master updated: IGNITE-25171 Move BinaryEnumArray to package-private (#12011)
This is an automated email from the ASF dual-hosted git repository.
nizhikov 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 738cdd2890e IGNITE-25171 Move BinaryEnumArray to package-private (#12011)
738cdd2890e is described below
commit 738cdd2890ebc119d7067f14b5cd43ea2d2ff0dd
Author: Nikolay <ni...@apache.org>
AuthorDate: Thu Apr 17 10:21:26 2025 +0300
IGNITE-25171 Move BinaryEnumArray to package-private (#12011)
---
.../ignite/internal/binary/BinaryContext.java | 29 ++++++++++++++++++++++
.../ignite/internal/binary/BinaryEnumArray.java | 2 +-
.../apache/ignite/internal/binary/BinaryUtils.java | 8 ++++++
.../binary/builder/BinaryBuilderSerializer.java | 3 +--
.../binary/builder/BinaryObjectBuilderImpl.java | 3 +--
.../binary/CacheObjectBinaryProcessorImpl.java | 28 +--------------------
6 files changed, 41 insertions(+), 32 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index 7ee1cda23da..6099c8c730c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -54,6 +54,7 @@ import org.apache.ignite.binary.BinaryField;
import org.apache.ignite.binary.BinaryIdMapper;
import org.apache.ignite.binary.BinaryInvalidTypeException;
import org.apache.ignite.binary.BinaryNameMapper;
+import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryReflectiveSerializer;
import org.apache.ignite.binary.BinarySerializer;
@@ -1491,6 +1492,34 @@ public class BinaryContext {
return Collections.unmodifiableCollection(predefinedTypes.values());
}
+ /** Creates instance of {@link BinaryArray}. */
+ public BinaryObject createBinaryArray(Class<?> compCls, Object[] pArr) {
+ boolean isBinaryArr = BinaryObject.class.isAssignableFrom(compCls);
+
+ String compClsName = isBinaryArr ? Object.class.getName() : compCls.getName();
+
+ // In case of interface or multidimensional array rely on class name.
+ // Interfaces and array not registered as binary types.
+ BinaryClassDescriptor desc = descriptorForClass(compCls);
+
+ if (compCls.isEnum() || compCls == BinaryEnumObjectImpl.class) {
+ return new BinaryEnumArray(
+ this,
+ desc.registered() ? desc.typeId() : GridBinaryMarshaller.UNREGISTERED_TYPE_ID,
+ compClsName,
+ pArr
+ );
+ }
+ else {
+ return new BinaryArray(
+ this,
+ desc.registered() ? desc.typeId() : GridBinaryMarshaller.UNREGISTERED_TYPE_ID,
+ compClsName,
+ pArr
+ );
+ }
+ }
+
/**
* Type descriptors.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
index f942f7904ae..0a796a62b3b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
@@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable;
* Ignite distinguishes between array of objects and array of enums.
* This extension of {@link BinaryArray} intended to keep correct typeId for binary enum arrays.
*/
-public class BinaryEnumArray extends BinaryArray {
+class BinaryEnumArray extends BinaryArray {
/** */
private static final long serialVersionUID = 0L;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 2f65da5f974..bdad148abd3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -2771,6 +2771,14 @@ public class BinaryUtils {
);
}
+ /**
+ * @param val Value to check.
+ * @return {@code True} if {@code val} instance of {@link BinaryEnumArray}.
+ */
+ public static boolean isBinaryEnumArray(Object val) {
+ return val instanceof BinaryEnumArray;
+ }
+
/**
* Enum type.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
index ccd3ac26d65..869b7c211cd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
@@ -22,7 +22,6 @@ import java.util.IdentityHashMap;
import java.util.Map;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.internal.binary.BinaryArray;
-import org.apache.ignite.internal.binary.BinaryEnumArray;
import org.apache.ignite.internal.binary.BinaryEnumObjectImpl;
import org.apache.ignite.internal.binary.BinaryObjectExImpl;
import org.apache.ignite.internal.binary.BinaryUtils;
@@ -181,7 +180,7 @@ class BinaryBuilderSerializer {
return;
}
- if (val instanceof BinaryEnumArray) {
+ if (BinaryUtils.isBinaryEnumArray(val)) {
BinaryArray val0 = (BinaryArray)val;
if (val0.componentTypeId() == GridBinaryMarshaller.UNREGISTERED_TYPE_ID)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
index 58ec1ca0819..07acec83f3a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
@@ -32,7 +32,6 @@ import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.internal.binary.BinaryArray;
import org.apache.ignite.internal.binary.BinaryContext;
-import org.apache.ignite.internal.binary.BinaryEnumArray;
import org.apache.ignite.internal.binary.BinaryEnumObjectImpl;
import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.binary.BinaryMetadata;
@@ -413,7 +412,7 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder {
else if (newVal.getClass().isArray() && BinaryObject.class.isAssignableFrom(newVal.getClass().getComponentType()))
newFldTypeId = GridBinaryMarshaller.OBJ_ARR;
- else if (newVal instanceof BinaryEnumArray)
+ else if (BinaryUtils.isBinaryEnumArray(newVal))
newFldTypeId = GridBinaryMarshaller.ENUM_ARR;
else if (newVal instanceof BinaryArray)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index ab5b6dc49b6..862633ea217 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -61,7 +61,6 @@ import org.apache.ignite.internal.UnregisteredBinaryTypeException;
import org.apache.ignite.internal.binary.BinaryArray;
import org.apache.ignite.internal.binary.BinaryClassDescriptor;
import org.apache.ignite.internal.binary.BinaryContext;
-import org.apache.ignite.internal.binary.BinaryEnumArray;
import org.apache.ignite.internal.binary.BinaryEnumObjectImpl;
import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.binary.BinaryMarshaller;
@@ -464,32 +463,7 @@ public class CacheObjectBinaryProcessorImpl extends GridProcessorAdapter impleme
if (!BinaryArray.useBinaryArrays())
return pArr;
- Class<?> compCls = obj.getClass().getComponentType();
-
- boolean isBinaryArr = BinaryObject.class.isAssignableFrom(compCls);
-
- String compClsName = isBinaryArr ? Object.class.getName() : compCls.getName();
-
- // In case of interface or multidimensional array rely on class name.
- // Interfaces and array not registered as binary types.
- BinaryClassDescriptor desc = binaryCtx.descriptorForClass(compCls);
-
- if (compCls.isEnum() || compCls == BinaryEnumObjectImpl.class) {
- return new BinaryEnumArray(
- binaryCtx,
- desc.registered() ? desc.typeId() : GridBinaryMarshaller.UNREGISTERED_TYPE_ID,
- compClsName,
- pArr
- );
- }
- else {
- return new BinaryArray(
- binaryCtx,
- desc.registered() ? desc.typeId() : GridBinaryMarshaller.UNREGISTERED_TYPE_ID,
- compClsName,
- pArr
- );
- }
+ return binaryCtx.createBinaryArray(obj.getClass().getComponentType(), pArr);
}
if (obj instanceof IgniteBiTuple) {