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 813bbbf190a [MINOR] Move affinityFieldName to GridCacheUtils (#12241)
813bbbf190a is described below
commit 813bbbf190a711699238f715b88bc8ae815ecc42
Author: Nikolay <[email protected]>
AuthorDate: Fri Aug 1 15:19:14 2025 +0300
[MINOR] Move affinityFieldName to GridCacheUtils (#12241)
---
.../ignite/configuration/CacheConfiguration.java | 4 +--
.../ignite/internal/binary/BinaryContext.java | 31 +++++++---------------
.../internal/processors/cache/GridCacheUtils.java | 17 ++++++++++++
.../binary/CacheObjectBinaryProcessorImpl.java | 2 +-
.../apache/ignite/internal/util/IgniteUtils.java | 19 ++++++++++++-
.../ignite/testframework/junits/IgniteMock.java | 1 +
6 files changed, 49 insertions(+), 25 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index c033a533b8f..a35b230741d 100644
---
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -52,10 +52,10 @@ import
org.apache.ignite.cache.query.annotations.QuerySqlFunction;
import org.apache.ignite.cache.store.CacheStore;
import org.apache.ignite.cache.store.CacheStoreSessionListener;
import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteExperimental;
@@ -2032,7 +2032,7 @@ public class CacheConfiguration<K, V> extends
MutableConfiguration<K, V> {
qryEntities.add(newEntity);
// Set key configuration if needed.
- String affFieldName = BinaryContext.affinityFieldName(keyCls);
+ String affFieldName = CU.affinityFieldName(keyCls);
if (affFieldName != null) {
CacheKeyConfiguration newKeyCfg = new
CacheKeyConfiguration(newEntity.getKeyType(), affFieldName);
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 32bc5a1d0b6..4670e73f515 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
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.binary;
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.net.URL;
@@ -61,7 +60,6 @@ import org.apache.ignite.binary.BinaryReflectiveSerializer;
import org.apache.ignite.binary.BinarySerializer;
import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.binary.BinaryTypeConfiguration;
-import org.apache.ignite.cache.affinity.AffinityKeyMapped;
import org.apache.ignite.internal.DuplicateTypeIdException;
import org.apache.ignite.internal.UnregisteredBinaryTypeException;
import org.apache.ignite.internal.UnregisteredClassException;
@@ -141,6 +139,9 @@ public class BinaryContext {
/** */
private final Function<String, BinaryInternalMapper> mapperProvider;
+ /** */
+ private final Function<Class<?>, String> affFldNameProvider;
+
/** Logger. */
private final IgniteLogger log;
@@ -163,6 +164,7 @@ public class BinaryContext {
* @param nameMapper Binary name mapper.
* @param affFlds Affinity fields.
* @param compactFooter Compact footer flag.
+ * @param affFldNameProvider Affinity field name provider function.
* @param log Logger.
*/
public BinaryContext(
@@ -176,6 +178,7 @@ public class BinaryContext {
@Nullable Collection<BinaryTypeConfiguration> typeCfgs,
Map<String, String> affFlds,
boolean compactFooter,
+ Function<Class<?>, String> affFldNameProvider,
IgniteLogger log
) {
assert metaHnd != null;
@@ -193,6 +196,7 @@ public class BinaryContext {
mapperProvider = clsName -> DFLT_MAPPER;
this.compactFooter = compactFooter;
+ this.affFldNameProvider = affFldNameProvider;
this.log = log;
@@ -371,7 +375,7 @@ public class BinaryContext {
Class<?> cls = U.classForName(clsName0, null);
if (cls != null)
- affField = affinityFieldName(cls);
+ affField = affFldNameProvider.apply(cls);
}
descs.add(clsName0, mapper, serializer, identity,
affField,
@@ -385,7 +389,7 @@ public class BinaryContext {
Class<?> cls = U.classForName(clsName, null);
if (cls != null)
- affField = affinityFieldName(cls);
+ affField = affFldNameProvider.apply(cls);
}
descs.add(clsName, mapper, serializer, identity, affField,
@@ -658,7 +662,7 @@ public class BinaryContext {
BinarySerializer serializer = serializerForClass(cls);
// Firstly check annotations, then check in cache key
configurations.
- String affFieldName = affinityFieldName(cls);
+ String affFieldName = affFldNameProvider.apply(cls);
if (affFieldName == null)
affFieldName = affKeyFieldNames.get(typeId);
@@ -785,7 +789,7 @@ public class BinaryContext {
BinarySerializer serializer = serializerForClass(cls);
- String affFieldName = affinityFieldName(cls);
+ String affFieldName = affFldNameProvider.apply(cls);
return new BinaryClassDescriptor(this,
cls,
@@ -1047,21 +1051,6 @@ public class BinaryContext {
return mapper.typeName(clsName);
}
- /**
- * @param cls Class to get affinity field for.
- * @return Affinity field name or {@code null} if field name was not found.
- */
- public static String affinityFieldName(Class cls) {
- for (; cls != Object.class && cls != null; cls = cls.getSuperclass()) {
- for (Field f : cls.getDeclaredFields()) {
- if (f.getAnnotation(AffinityKeyMapped.class) != null)
- return f.getName();
- }
- }
-
- return null;
- }
-
/**
* @param cls Class.
* @param id Type ID.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index 58dba32905a..7280b2a5287 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.cache;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -51,6 +52,7 @@ import org.apache.ignite.cache.CacheKeyConfiguration;
import org.apache.ignite.cache.CachePartialUpdateException;
import org.apache.ignite.cache.CacheServerNotFoundException;
import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.affinity.AffinityKeyMapped;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.cache.store.CacheStoreSessionListener;
import org.apache.ignite.cluster.ClusterNode;
@@ -2191,6 +2193,21 @@ public class GridCacheUtils {
return affFields;
}
+ /**
+ * @param cls Class to get affinity field for.
+ * @return Affinity field name or {@code null} if field name was not found.
+ */
+ public static String affinityFieldName(Class cls) {
+ for (; cls != Object.class && cls != null; cls = cls.getSuperclass()) {
+ for (Field f : cls.getDeclaredFields()) {
+ if (f.getAnnotation(AffinityKeyMapped.class) != null)
+ return f.getName();
+ }
+ }
+
+ return null;
+ }
+
/**
*
*/
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 c6c121b3cdc..c7115af742d 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
@@ -119,9 +119,9 @@ import static
org.apache.ignite.IgniteSystemProperties.IGNITE_SKIP_CONFIGURATION
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_WAIT_SCHEMA_UPDATE;
import static org.apache.ignite.IgniteSystemProperties.getBoolean;
import static
org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType.BINARY_PROC;
-import static
org.apache.ignite.internal.binary.BinaryContext.affinityFieldName;
import static org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata;
import static
org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
+import static
org.apache.ignite.internal.util.typedef.internal.CU.affinityFieldName;
/**
* Binary processor implementation.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 359e59416d7..2b81740c28e 100755
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -125,6 +125,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.function.Consumer;
+import java.util.function.Function;
import java.util.jar.JarFile;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
@@ -9873,6 +9874,7 @@ public abstract class IgniteUtils extends CommonUtils {
bcfg.getTypeConfigurations(),
CU.affinityFields(cfg),
bcfg.isCompactFooter(),
+ CU::affinityFieldName,
log
)
: new BinaryContext(
@@ -9886,6 +9888,7 @@ public abstract class IgniteUtils extends CommonUtils {
bcfg.getTypeConfigurations(),
CU.affinityFields(cfg),
bcfg.isCompactFooter(),
+ CU::affinityFieldName,
log
);
}
@@ -9956,9 +9959,23 @@ public abstract class IgniteUtils extends CommonUtils {
@Nullable Collection<BinaryTypeConfiguration> typeCfgs,
Map<String, String> affFlds,
boolean compactFooter,
+ Function<Class<?>, String> affFldNameProvider,
IgniteLogger log
) {
- super(metaHnd, marsh, igniteInstanceName, clsLdr, dfltSerializer,
idMapper, nameMapper, typeCfgs, affFlds, compactFooter, log);
+ super(
+ metaHnd,
+ marsh,
+ igniteInstanceName,
+ clsLdr,
+ dfltSerializer,
+ idMapper,
+ nameMapper,
+ typeCfgs,
+ affFlds,
+ compactFooter,
+ affFldNameProvider,
+ log
+ );
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
index c26d84b1710..d7bdf1e2b21 100644
---
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
+++
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
@@ -459,6 +459,7 @@ public class IgniteMock implements IgniteEx {
bcfg.getTypeConfigurations(),
CU.affinityFields(configuration()),
bcfg.isCompactFooter(),
+ CU::affinityFieldName,
NullLogger.INSTANCE
) {
@Override public int typeId(String typeName) {