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) {