This is an automated email from the ASF dual-hosted git repository.

nizhikov pushed a commit to branch IGNITE-27565-2
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit 8de1cd15165d1156b4c2235c00de4b261123ebdb
Author: Nikolay Izhikov <[email protected]>
AuthorDate: Thu Jan 15 00:01:19 2026 +0300

    IGNITE-27558 Move BinaryObjectImpl to binary-impl
---
 .../ignite/internal/binary/BinariesFactory.java    |  5 ++
 .../apache/ignite/internal/binary/BinaryUtils.java | 71 ---------------------
 .../internal/binary/BinariesFactoryImpl.java       |  5 ++
 .../ignite/internal/binary/BinaryEnumCache.java    |  0
 .../ignite/internal/binary/BinaryReaderExImpl.java | 73 ++++++++++++++++++++--
 .../org/apache/ignite/internal/IgniteKernal.java   |  2 +-
 .../testframework/junits/GridAbstractTest.java     |  2 +-
 7 files changed, 81 insertions(+), 77 deletions(-)

diff --git 
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
 
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
index 3538c2b452f..f341de8029e 100644
--- 
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
+++ 
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
@@ -171,4 +171,9 @@ public interface BinariesFactory {
 
     /** */
     public BinaryIdentityResolver arrayIdentityResolver();
+
+    /**
+     * Clears binary caches.
+     */
+    public void clearCache();
 }
diff --git 
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
 
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 92740e79662..dd1187dfdaf 100644
--- 
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++ 
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -1701,70 +1701,6 @@ public class BinaryUtils {
         return arr;
     }
 
-    /**
-     * Having target class in place we simply read ordinal and create final 
representation.
-     *
-     * @param cls Enum class.
-     * @param useCache True if class loader cache will be used, false 
otherwise.
-     * @return Value.
-     */
-    static Enum<?> doReadEnum(BinaryInputStream in, Class<?> cls, boolean 
useCache) throws BinaryObjectException {
-        assert cls != null;
-
-        if (!cls.isEnum())
-            throw new BinaryObjectException("Class does not represent enum 
type: " + cls.getName());
-
-        int ord = in.readInt();
-
-        if (useCache)
-            return BinaryEnumCache.get(cls, ord);
-        else
-            return uncachedEnumValue(cls, ord);
-    }
-
-    /**
-     * Get value for the given class without any caching.
-     *
-     * @param cls Class.
-     */
-    private static <T> T uncachedEnumValue(Class<?> cls, int ord) throws 
BinaryObjectException {
-        assert cls != null;
-
-        if (ord >= 0) {
-            Object[] vals = cls.getEnumConstants();
-
-            if (ord < vals.length)
-                return (T)vals[ord];
-            else
-                throw new BinaryObjectException("Failed to get enum value for 
ordinal (do you have correct class " +
-                    "version?) [cls=" + cls.getName() + ", ordinal=" + ord + 
", totalValues=" + vals.length + ']');
-        }
-        else
-            return null;
-    }
-
-    /**
-     * @param cls Enum class.
-     * @return Value.
-     */
-    static Object[] doReadEnumArray(BinaryInputStream in, BinaryContext ctx, 
ClassLoader ldr, Class<?> cls)
-        throws BinaryObjectException {
-        int len = in.readInt();
-
-        Object[] arr = (Object[])Array.newInstance(cls, len);
-
-        for (int i = 0; i < len; i++) {
-            byte flag = in.readByte();
-
-            if (flag == GridBinaryMarshaller.NULL)
-                arr[i] = null;
-            else
-                arr[i] = doReadEnum(in, doReadClass(in, ctx, ldr), 
Marshallers.USE_CACHE.get());
-        }
-
-        return arr;
-    }
-
     /**
      * Read object serialized using optimized marshaller.
      *
@@ -2712,13 +2648,6 @@ public class BinaryUtils {
             : obj == null ? null : obj.getClass().getSimpleName();
     }
 
-    /**
-     * Clears binary caches.
-     */
-    public static void clearCache() {
-        BinaryEnumCache.clear();
-    }
-
     /**
      * Gets the schema.
      *
diff --git 
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
 
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
index 0064ab7cb6e..44b111942b8 100644
--- 
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
+++ 
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
@@ -224,6 +224,11 @@ public class BinariesFactoryImpl implements 
BinariesFactory {
         return BinaryArrayIdentityResolver.instance();
     }
 
+    /** {@inheritDoc} */
+    @Override public void clearCache() {
+        BinaryEnumCache.clear();
+    }
+
     /**
      * @param cls Class to check.
      * @return {@code True} if {@code val} is assignable to binary Enum object.
diff --git 
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
 
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
similarity index 100%
rename from 
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
rename to 
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
diff --git 
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
 
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
index fca203666fe..c6ac86385b6 100644
--- 
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
+++ 
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.binary;
 
 import java.io.EOFException;
 import java.io.IOException;
+import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
@@ -1404,7 +1405,7 @@ class BinaryReaderExImpl implements BinaryReaderEx {
             if (cls == null)
                 cls = cls0;
 
-            return BinaryUtils.doReadEnum(in, cls, 
Marshallers.USE_CACHE.get());
+            return doReadEnum(in, cls, Marshallers.USE_CACHE.get());
         }
         else
             return null;
@@ -1462,7 +1463,7 @@ class BinaryReaderExImpl implements BinaryReaderEx {
                 if (cls == null)
                     cls = cls0;
 
-                return BinaryUtils.doReadEnumArray(in, ctx, ldr, cls);
+                return doReadEnumArray(in, ctx, ldr, cls);
 
             case HANDLE:
                 Object arr = readHandleField();
@@ -1927,13 +1928,13 @@ class BinaryReaderExImpl implements BinaryReaderEx {
                 break;
 
             case ENUM:
-                obj = BinaryUtils.doReadEnum(in, BinaryUtils.doReadClass(in, 
ctx, ldr),
+                obj = doReadEnum(in, BinaryUtils.doReadClass(in, ctx, ldr),
                     Marshallers.USE_CACHE.get());
 
                 break;
 
             case ENUM_ARR:
-                obj = BinaryUtils.doReadEnumArray(in, ctx, ldr, 
BinaryUtils.doReadClass(in, ctx, ldr));
+                obj = doReadEnumArray(in, ctx, ldr, 
BinaryUtils.doReadClass(in, ctx, ldr));
 
                 break;
 
@@ -2751,6 +2752,70 @@ class BinaryReaderExImpl implements BinaryReaderEx {
         return BinaryUtils.doReadBinaryEnum(in, ctx, 
BinaryUtils.doReadEnumType(in));
     }
 
+    /**
+     * @param cls Enum class.
+     * @return Value.
+     */
+    private static Object[] doReadEnumArray(BinaryInputStream in, 
BinaryContext ctx, ClassLoader ldr, Class<?> cls)
+        throws BinaryObjectException {
+        int len = in.readInt();
+
+        Object[] arr = (Object[])Array.newInstance(cls, len);
+
+        for (int i = 0; i < len; i++) {
+            byte flag = in.readByte();
+
+            if (flag == GridBinaryMarshaller.NULL)
+                arr[i] = null;
+            else
+                arr[i] = doReadEnum(in, BinaryUtils.doReadClass(in, ctx, ldr), 
Marshallers.USE_CACHE.get());
+        }
+
+        return arr;
+    }
+
+    /**
+     * Having target class in place we simply read ordinal and create final 
representation.
+     *
+     * @param cls Enum class.
+     * @param useCache True if class loader cache will be used, false 
otherwise.
+     * @return Value.
+     */
+    private static Enum<?> doReadEnum(BinaryInputStream in, Class<?> cls, 
boolean useCache) throws BinaryObjectException {
+        assert cls != null;
+
+        if (!cls.isEnum())
+            throw new BinaryObjectException("Class does not represent enum 
type: " + cls.getName());
+
+        int ord = in.readInt();
+
+        if (useCache)
+            return BinaryEnumCache.get(cls, ord);
+        else
+            return uncachedEnumValue(cls, ord);
+    }
+
+    /**
+     * Get value for the given class without any caching.
+     *
+     * @param cls Class.
+     */
+    private static <T> T uncachedEnumValue(Class<?> cls, int ord) throws 
BinaryObjectException {
+        assert cls != null;
+
+        if (ord >= 0) {
+            Object[] vals = cls.getEnumConstants();
+
+            if (ord < vals.length)
+                return (T)vals[ord];
+            else
+                throw new BinaryObjectException("Failed to get enum value for 
ordinal (do you have correct class " +
+                    "version?) [cls=" + cls.getName() + ", ordinal=" + ord + 
", totalValues=" + vals.length + ']');
+        }
+        else
+            return null;
+    }
+
     /**
      * @param ctor Constructor.
      * @param cls Class.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 56191e68d9e..dcb474954a3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -1859,7 +1859,7 @@ public class IgniteKernal implements IgniteEx, 
Externalizable {
             // Clean internal class/classloader caches to avoid stopped 
contexts held in memory.
             U.clearClassCache();
             MarshallerExclusions.clearCache();
-            BinaryUtils.clearCache();
+            BinaryUtils.binariesFactory.clearCache();
 
             gw.writeLock();
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 0a4bce9e44a..8bd35ee1471 100755
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -2234,7 +2234,7 @@ public abstract class GridAbstractTest extends 
JUnitAssertAware {
         GridClassLoaderCache.clear();
         U.clearClassCache();
         MarshallerExclusions.clearCache();
-        BinaryUtils.clearCache();
+        BinaryUtils.binariesFactory.clearCache();
         serializedObj.clear();
 
         if (err != null)

Reply via email to