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 94d289b7adb [MINOR] Move IMMUTABLE_CLS to BinaryUtils (#12358)
94d289b7adb is described below

commit 94d289b7adb731c9ee81d9801dee08d871f8d3e7
Author: Nikolay <[email protected]>
AuthorDate: Thu Sep 18 15:19:32 2025 +0300

    [MINOR] Move IMMUTABLE_CLS to BinaryUtils (#12358)
---
 .../ignite/internal/binary/BinaryObjectImpl.java   |  2 +-
 .../apache/ignite/internal/binary/BinaryUtils.java | 27 +++++++++++++++++++
 .../processors/cache/CacheObjectAdapter.java       |  3 ++-
 .../binary/CacheObjectBinaryProcessorImpl.java     | 31 ----------------------
 .../cacheobject/IgniteCacheObjectProcessor.java    |  6 -----
 .../cacheobject/UserCacheObjectImpl.java           |  5 ++--
 .../cacheobject/UserKeyCacheObjectImpl.java        |  3 ++-
 7 files changed, 34 insertions(+), 43 deletions(-)

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 aa92e05b1e6..a238b58f0f3 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
@@ -819,7 +819,7 @@ final class BinaryObjectImpl extends BinaryObjectExImpl 
implements Externalizabl
      * @return {@code True} need to copy value returned to user.
      */
     private boolean needCopy(CacheObjectValueContext ctx) {
-        return ctx.copyOnGet() && obj != null && 
!ctx.kernalContext().cacheObjects().immutable(obj);
+        return ctx.copyOnGet() && obj != null && !BinaryUtils.immutable(obj);
     }
 
     /**
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 643442d6aa8..7f84277ac53 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
@@ -79,6 +79,7 @@ import org.apache.ignite.internal.util.MutableSingletonList;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.lang.IgniteBiTuple;
+import org.apache.ignite.lang.IgniteUuid;
 import org.apache.ignite.marshaller.Marshallers;
 import org.apache.ignite.platform.PlatformType;
 import org.jetbrains.annotations.Nullable;
@@ -104,6 +105,9 @@ public class BinaryUtils {
     /** */
     public static final Map<Byte, Class<?>> FLAG_TO_CLASS;
 
+    /** Immutable classes. */
+    private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
+
     /** */
     public static final boolean USE_STR_SERIALIZATION_VER_2 = 
IgniteSystemProperties.getBoolean(
         IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2, false);
@@ -181,6 +185,19 @@ public class BinaryUtils {
      * Static class initializer.
      */
     static {
+        IMMUTABLE_CLS.add(String.class);
+        IMMUTABLE_CLS.add(Boolean.class);
+        IMMUTABLE_CLS.add(Byte.class);
+        IMMUTABLE_CLS.add(Short.class);
+        IMMUTABLE_CLS.add(Character.class);
+        IMMUTABLE_CLS.add(Integer.class);
+        IMMUTABLE_CLS.add(Long.class);
+        IMMUTABLE_CLS.add(Float.class);
+        IMMUTABLE_CLS.add(Double.class);
+        IMMUTABLE_CLS.add(UUID.class);
+        IMMUTABLE_CLS.add(IgniteUuid.class);
+        IMMUTABLE_CLS.add(BigDecimal.class);
+
         Map<Class<?>, Byte> clsToFlag = new HashMap<>();
 
         clsToFlag.put(Byte.class, GridBinaryMarshaller.BYTE);
@@ -3076,6 +3093,16 @@ public class BinaryUtils {
         return ((BinaryReaderExImpl)reader).getOrCreateSchema().fieldId(order);
     }
 
+    /**
+     * @param obj Value.
+     * @return {@code True} if object is of known immutable type.
+     */
+    public static boolean immutable(Object obj) {
+        assert obj != null;
+
+        return IMMUTABLE_CLS.contains(obj.getClass());
+    }
+
     /**
      * @param typeId Type ID.
      * @param typeName Type name.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index 4289588c073..f33004373a3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -23,6 +23,7 @@ import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.pagemem.PageUtils;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -50,7 +51,7 @@ public abstract class CacheObjectAdapter implements 
CacheObject, Externalizable
      * @return {@code True} need to copy value returned to user.
      */
     protected boolean needCopy(CacheObjectValueContext ctx) {
-        return ctx.copyOnGet() && val != null && 
!ctx.kernalContext().cacheObjects().immutable(val);
+        return ctx.copyOnGet() && val != null && !BinaryUtils.immutable(val);
     }
 
     /**
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 651f9b8a38f..be621b75e73 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
@@ -19,12 +19,10 @@ package org.apache.ignite.internal.processors.cache.binary;
 
 import java.io.File;
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
@@ -104,7 +102,6 @@ import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.lang.IgniteUuid;
 import org.apache.ignite.spi.IgniteNodeValidationResult;
 import org.apache.ignite.spi.discovery.DiscoveryDataBag;
 import org.apache.ignite.spi.discovery.DiscoveryDataBag.GridDiscoveryData;
@@ -127,9 +124,6 @@ import static 
org.apache.ignite.internal.util.typedef.internal.CU.affinityFieldN
  * Binary processor implementation.
  */
 public class CacheObjectBinaryProcessorImpl extends GridProcessorAdapter 
implements IgniteCacheObjectProcessor {
-    /** Immutable classes. */
-    private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
-
     /** @see IgniteSystemProperties#IGNITE_WAIT_SCHEMA_UPDATE */
     public static final int DFLT_WAIT_SCHEMA_UPDATE = 30_000;
 
@@ -183,24 +177,6 @@ public class CacheObjectBinaryProcessorImpl extends 
GridProcessorAdapter impleme
     /** Dummy {@code CacheObjectValueContext} used for mocking. */
     private CacheObjectValueContext fakeCacheObjCtx;
 
-    /*
-     * Static initializer
-     */
-    static {
-        IMMUTABLE_CLS.add(String.class);
-        IMMUTABLE_CLS.add(Boolean.class);
-        IMMUTABLE_CLS.add(Byte.class);
-        IMMUTABLE_CLS.add(Short.class);
-        IMMUTABLE_CLS.add(Character.class);
-        IMMUTABLE_CLS.add(Integer.class);
-        IMMUTABLE_CLS.add(Long.class);
-        IMMUTABLE_CLS.add(Float.class);
-        IMMUTABLE_CLS.add(Double.class);
-        IMMUTABLE_CLS.add(UUID.class);
-        IMMUTABLE_CLS.add(IgniteUuid.class);
-        IMMUTABLE_CLS.add(BigDecimal.class);
-    }
-
     /**
      * @param ctx Kernal context.
      */
@@ -391,13 +367,6 @@ public class CacheObjectBinaryProcessorImpl extends 
GridProcessorAdapter impleme
         return binaryCtx.typeId(typeName);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean immutable(Object obj) {
-        assert obj != null;
-
-        return IMMUTABLE_CLS.contains(obj.getClass());
-    }
-
     /** {@inheritDoc} */
     @Override public void onContinuousProcessorStarted(GridKernalContext ctx) {
         // No-op.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
index eb8311bff43..a1eae8f0848 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
@@ -208,12 +208,6 @@ public interface IgniteCacheObjectProcessor extends 
GridProcessor {
     public IncompleteCacheObject toKeyCacheObject(CacheObjectContext ctx, 
ByteBuffer buf,
         @Nullable IncompleteCacheObject incompleteObj) throws 
IgniteCheckedException;
 
-    /**
-     * @param obj Value.
-     * @return {@code True} if object is of known immutable type.
-     */
-    public boolean immutable(Object obj);
-
     /**
      * @return Ignite binary interface.
      * @throws IgniteException If failed.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
index fb5a61f40e2..2a117a88f3f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserCacheObjectImpl.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cacheobject;
 
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
 import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
@@ -55,8 +56,6 @@ public class UserCacheObjectImpl extends CacheObjectImpl {
     /** {@inheritDoc} */
     @Override public CacheObject prepareForCache(CacheObjectValueContext ctx) {
         try {
-            IgniteCacheObjectProcessor proc = 
ctx.kernalContext().cacheObjects();
-
             if (valBytes == null)
                 valBytes = valueBytesFromValue(ctx);
 
@@ -66,7 +65,7 @@ public class UserCacheObjectImpl extends CacheObjectImpl {
                 ClassLoader ldr = p2pEnabled ?
                     IgniteUtils.detectClass(val).getClassLoader() : 
val.getClass().getClassLoader();
 
-                Object val = this.val != null && proc.immutable(this.val) ? 
this.val : valueFromValueBytes(ctx, ldr);
+                Object val = this.val != null && 
BinaryUtils.immutable(this.val) ? this.val : valueFromValueBytes(ctx, ldr);
 
                 return new CacheObjectImpl(val, valBytes);
             }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
index 223c18e31ed..0cdff88523b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/UserKeyCacheObjectImpl.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cacheobject;
 
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
@@ -70,7 +71,7 @@ public class UserKeyCacheObjectImpl extends 
KeyCacheObjectImpl {
         try {
             IgniteCacheObjectProcessor proc = 
ctx.kernalContext().cacheObjects();
 
-            if (!proc.immutable(val)) {
+            if (!BinaryUtils.immutable(val)) {
                 if (valBytes == null)
                     valBytes = proc.marshal(ctx, val);
 

Reply via email to