From 46c1a71bfd73c966d94e174030acb94cd3a26100 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Wed, 13 May 2026 21:08:46 +0300 Subject: [PATCH 01/17] WIP --- assembly/dependencies-apache-ignite-lgpl.xml | 1 + assembly/dependencies-apache-ignite-slim.xml | 1 + assembly/dependencies-apache-ignite.xml | 1 + modules/bom/pom.xml | 5 ++ modules/core/pom.xml | 7 ++ modules/thin-client/api/README.txt | 9 +++ modules/thin-client/api/pom.xml | 69 +++++++++++++++++++ .../client/ClientAffinityConfiguration.java | 0 .../client/ClientAuthenticationException.java | 0 .../client/ClientAuthorizationException.java | 0 .../client/ClientAutoCloseableIterator.java | 0 .../client/ClientConnectionException.java | 0 .../apache/ignite/client/ClientException.java | 0 .../client/ClientReconnectedException.java | 0 .../client/ClientServiceDescriptor.java | 1 - .../ignite/client/ClientTransaction.java | 0 .../ignite/client/IgniteClientFuture.java | 0 .../org/apache/ignite/client/SslMode.java | 0 .../org/apache/ignite/client/SslProtocol.java | 0 .../client/events/ClientLifecycleEvent.java | 0 .../client/events/ConnectionClosedEvent.java | 0 .../client/events/ConnectionDescription.java | 0 .../ignite/client/events/ConnectionEvent.java | 0 .../events/ConnectionEventListener.java | 0 .../client/events/HandshakeFailEvent.java | 0 .../client/events/HandshakeStartEvent.java | 0 .../client/events/HandshakeSuccessEvent.java | 0 .../ignite/client/events/RequestEvent.java | 0 .../client/events/RequestEventListener.java | 0 .../client/events/RequestFailEvent.java | 0 .../client/events/RequestStartEvent.java | 0 .../client/events/RequestSuccessEvent.java | 0 .../internal/client/thin/ClientError.java | 0 .../client/thin/ClientServerError.java | 0 pom.xml | 1 + 35 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 modules/thin-client/api/README.txt create mode 100644 modules/thin-client/api/pom.xml rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAffinityConfiguration.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAuthenticationException.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAuthorizationException.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAutoCloseableIterator.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientConnectionException.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientException.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientReconnectedException.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java (98%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientTransaction.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/IgniteClientFuture.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/SslMode.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/SslProtocol.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ClientLifecycleEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ConnectionClosedEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ConnectionDescription.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ConnectionEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ConnectionEventListener.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/HandshakeFailEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/HandshakeStartEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/HandshakeSuccessEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/RequestEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/RequestEventListener.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/RequestFailEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/RequestStartEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/RequestSuccessEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/internal/client/thin/ClientError.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/internal/client/thin/ClientServerError.java (100%) diff --git a/assembly/dependencies-apache-ignite-lgpl.xml b/assembly/dependencies-apache-ignite-lgpl.xml index 7d7e016459bb1..ac3d35c972a66 100644 --- a/assembly/dependencies-apache-ignite-lgpl.xml +++ b/assembly/dependencies-apache-ignite-lgpl.xml @@ -118,6 +118,7 @@ ${project.groupId}:ignite-commons ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl + ${project.groupId}:ignite-thin-client-api ${project.groupId}:ignite-clients ${project.groupId}:ignite-spring ${project.groupId}:ignite-tools diff --git a/assembly/dependencies-apache-ignite-slim.xml b/assembly/dependencies-apache-ignite-slim.xml index 53676f307378b..f113444139b1a 100644 --- a/assembly/dependencies-apache-ignite-slim.xml +++ b/assembly/dependencies-apache-ignite-slim.xml @@ -118,6 +118,7 @@ ${project.groupId}:ignite-commons ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl + ${project.groupId}:ignite-thin-client-api ${project.groupId}:ignite-clients ${project.groupId}:ignite-spring ${project.groupId}:ignite-tools diff --git a/assembly/dependencies-apache-ignite.xml b/assembly/dependencies-apache-ignite.xml index 2ed7861597401..5952320cba9b2 100644 --- a/assembly/dependencies-apache-ignite.xml +++ b/assembly/dependencies-apache-ignite.xml @@ -119,6 +119,7 @@ ${project.groupId}:ignite-commons ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl + ${project.groupId}:ignite-thin-client-api ${project.groupId}:ignite-clients ${project.groupId}:ignite-spring ${project.groupId}:ignite-tools diff --git a/modules/bom/pom.xml b/modules/bom/pom.xml index 25f8124d03fc0..e14c89f779b55 100644 --- a/modules/bom/pom.xml +++ b/modules/bom/pom.xml @@ -181,6 +181,11 @@ ignite-commons ${revision} + + ${project.groupId} + ignite-thin-client-api + ${revision} + ${project.groupId} ignite-codegen diff --git a/modules/core/pom.xml b/modules/core/pom.xml index ccb994b73a74b..eac0fa9940024 100644 --- a/modules/core/pom.xml +++ b/modules/core/pom.xml @@ -75,6 +75,12 @@ compile + + ${project.groupId} + ignite-thin-client-api + compile + + ${project.groupId} ignite-codegen @@ -353,6 +359,7 @@ ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl ${project.groupId}:ignite-grid-unsafe + ${project.groupId}:ignite-thin-client-api diff --git a/modules/thin-client/api/README.txt b/modules/thin-client/api/README.txt new file mode 100644 index 0000000000000..a3562700500f6 --- /dev/null +++ b/modules/thin-client/api/README.txt @@ -0,0 +1,9 @@ +Apache Ignite Binary API Module +------------------------ + +ignite-thin-client-api module is internal module to separate thin-client API and implementation. +Other modules like ignite-core must depend on ignite-thin-client-api, only. +Implementation of API in ignite-thin-client-impl, it added in runtime. + +Note, class files of this module are copied in ignite-core.jar during project assembly +to ensure compatibility with previous Ignite releases. diff --git a/modules/thin-client/api/pom.xml b/modules/thin-client/api/pom.xml new file mode 100644 index 0000000000000..d329d6d7522be --- /dev/null +++ b/modules/thin-client/api/pom.xml @@ -0,0 +1,69 @@ + + + + + + + 4.0.0 + + + org.apache.ignite + ignite-parent-internal + ${revision} + ../../../parent-internal/pom.xml + + + ignite-thin-client-api + + http://ignite.apache.org + + + + ${project.groupId} + ignite-commons + provided + + + + ${project.groupId} + ignite-binary-api + provided + + + + org.jetbrains + annotations + ${jetbrains.annotations.version} + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + false + + + + + diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAffinityConfiguration.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAffinityConfiguration.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAffinityConfiguration.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAffinityConfiguration.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAuthenticationException.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAuthenticationException.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAuthenticationException.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAuthenticationException.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAuthorizationException.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAuthorizationException.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAuthorizationException.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAuthorizationException.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAutoCloseableIterator.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAutoCloseableIterator.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAutoCloseableIterator.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAutoCloseableIterator.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientConnectionException.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientConnectionException.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientConnectionException.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientConnectionException.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientException.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientException.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientException.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientException.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientReconnectedException.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientReconnectedException.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientReconnectedException.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientReconnectedException.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java index 1feba70a92ee8..75fe4621a8f3b 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientServiceDescriptor.java @@ -19,7 +19,6 @@ import java.util.UUID; import org.apache.ignite.platform.PlatformType; -import org.apache.ignite.services.Service; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientTransaction.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientTransaction.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientTransaction.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientTransaction.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/IgniteClientFuture.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/IgniteClientFuture.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/IgniteClientFuture.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/IgniteClientFuture.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/SslMode.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/SslMode.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/SslMode.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/SslMode.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/SslProtocol.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/SslProtocol.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/SslProtocol.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/SslProtocol.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ClientLifecycleEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientLifecycleEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ClientLifecycleEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientLifecycleEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ConnectionClosedEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionClosedEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ConnectionClosedEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionClosedEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ConnectionDescription.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionDescription.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ConnectionDescription.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionDescription.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ConnectionEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ConnectionEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ConnectionEventListener.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionEventListener.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ConnectionEventListener.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ConnectionEventListener.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/HandshakeFailEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/HandshakeFailEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/HandshakeFailEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/HandshakeFailEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/HandshakeStartEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/HandshakeStartEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/HandshakeStartEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/HandshakeStartEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/HandshakeSuccessEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/HandshakeSuccessEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/HandshakeSuccessEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/HandshakeSuccessEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/RequestEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/RequestEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/RequestEventListener.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestEventListener.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/RequestEventListener.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestEventListener.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/RequestFailEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestFailEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/RequestFailEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestFailEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/RequestStartEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestStartEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/RequestStartEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestStartEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/RequestSuccessEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestSuccessEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/RequestSuccessEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/RequestSuccessEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientError.java b/modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ClientError.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientError.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ClientError.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServerError.java b/modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ClientServerError.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServerError.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ClientServerError.java diff --git a/pom.xml b/pom.xml index 02103bcccd055..df249427c22fe 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,7 @@ modules/commons modules/binary/api modules/binary/impl + modules/thin-client/api modules/unsafe modules/core modules/compress From ea5cc9d5e6ab1cac1e89dd1ac63af267ac9ec757 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Thu, 14 May 2026 10:12:44 +0300 Subject: [PATCH 02/17] WIP --- .../java/org/apache/ignite/cache/CacheAtomicityMode.java | 2 -- .../src/main/java/org/apache/ignite/cache/CacheMode.java | 2 -- .../ignite/transactions/TransactionConcurrency.java | 0 .../apache/ignite/transactions/TransactionIsolation.java | 0 .../org/apache/ignite/client/ClientAddressFinder.java | 0 .../apache/ignite/client/ClientAtomicConfiguration.java | 1 - .../apache/ignite/client/ClientDisconnectListener.java | 8 ++++---- .../ClientFeatureNotSupportedByServerException.java | 0 .../java/org/apache/ignite/client/ClientIgniteSet.java | 0 .../org/apache/ignite/client/ClientOperationType.java | 4 ---- .../ignite/client/ClientPartitionAwarenessMapper.java | 4 ---- .../client/ClientPartitionAwarenessMapperFactory.java | 3 --- .../java/org/apache/ignite/client/ClientTransactions.java | 2 -- .../internal/client/thin/ProtocolBitmaskFeature.java | 6 ------ 14 files changed, 4 insertions(+), 28 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java (98%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CacheMode.java (96%) rename modules/{core => commons}/src/main/java/org/apache/ignite/transactions/TransactionConcurrency.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/transactions/TransactionIsolation.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAddressFinder.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java (98%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java (80%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientFeatureNotSupportedByServerException.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientIgniteSet.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientOperationType.java (97%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java (90%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java (95%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientTransactions.java (96%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java (93%) diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java index f83dcdd6d9525..37d4a8379736b 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/CacheAtomicityMode.java @@ -18,8 +18,6 @@ package org.apache.ignite.cache; import javax.cache.processor.EntryProcessor; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.transactions.Transaction; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheMode.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheMode.java similarity index 96% rename from modules/core/src/main/java/org/apache/ignite/cache/CacheMode.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheMode.java index 392bb615dfe81..69d6be9a5c9c0 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/CacheMode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/CacheMode.java @@ -18,8 +18,6 @@ package org.apache.ignite.cache; import java.util.stream.Stream; -import org.apache.ignite.cache.affinity.AffinityFunction; -import org.apache.ignite.configuration.NearCacheConfiguration; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/transactions/TransactionConcurrency.java b/modules/commons/src/main/java/org/apache/ignite/transactions/TransactionConcurrency.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/transactions/TransactionConcurrency.java rename to modules/commons/src/main/java/org/apache/ignite/transactions/TransactionConcurrency.java diff --git a/modules/core/src/main/java/org/apache/ignite/transactions/TransactionIsolation.java b/modules/commons/src/main/java/org/apache/ignite/transactions/TransactionIsolation.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/transactions/TransactionIsolation.java rename to modules/commons/src/main/java/org/apache/ignite/transactions/TransactionIsolation.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAddressFinder.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAddressFinder.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAddressFinder.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAddressFinder.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java index 248265fdd7240..8d0ab76905ca2 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAtomicConfiguration.java @@ -17,7 +17,6 @@ package org.apache.ignite.client; -import org.apache.ignite.IgniteAtomicSequence; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.internal.util.typedef.internal.S; import static org.apache.ignite.cache.CacheMode.PARTITIONED; diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java similarity index 80% rename from modules/core/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java index e2c76b86be49a..ccacdf97fd422 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientDisconnectListener.java @@ -18,12 +18,12 @@ package org.apache.ignite.client; import javax.cache.configuration.CacheEntryListenerConfiguration; -import org.apache.ignite.cache.query.ContinuousQuery; /** - * Client disconnected event listener. Such listeners can be used in {@link ClientCache#query(ContinuousQuery, - * ClientDisconnectListener)} or {@link ClientCache#registerCacheEntryListener(CacheEntryListenerConfiguration, - * ClientDisconnectListener)} methods to handle client channel failure. + * Client disconnected event listener. Such listeners can be used in + * {@link ClientCache#query(org.apache.ignite.cache.query.ContinuousQuery, ClientDisconnectListener)} or + * {@link ClientCache#registerCacheEntryListener(CacheEntryListenerConfiguration, ClientDisconnectListener)} + * methods to handle client channel failure. */ public interface ClientDisconnectListener { /** diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientFeatureNotSupportedByServerException.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientFeatureNotSupportedByServerException.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientFeatureNotSupportedByServerException.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientFeatureNotSupportedByServerException.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientIgniteSet.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientIgniteSet.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientIgniteSet.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientIgniteSet.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientOperationType.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientOperationType.java similarity index 97% rename from modules/core/src/main/java/org/apache/ignite/client/ClientOperationType.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientOperationType.java index 913ec88107d52..bb8e318c08932 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientOperationType.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientOperationType.java @@ -20,10 +20,6 @@ import java.util.Collection; import java.util.Set; import javax.cache.processor.EntryProcessor; -import org.apache.ignite.cache.query.ContinuousQuery; -import org.apache.ignite.cache.query.Query; -import org.apache.ignite.cache.query.SqlFieldsQuery; -import org.apache.ignite.cluster.ClusterState; /** * Client operation type. diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java similarity index 90% rename from modules/core/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java index 64ea78b928211..dc9af29bad0e7 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapper.java @@ -17,10 +17,6 @@ package org.apache.ignite.client; -import org.apache.ignite.cache.affinity.AffinityFunction; -import org.apache.ignite.cache.affinity.AffinityKeyMapper; -import org.apache.ignite.configuration.ClientConfiguration; - /** * This function calculates the cache key to a partition mapping for each cache key. It is used only for local calculation on a client side. *

diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java similarity index 95% rename from modules/core/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java index c26421dda8454..d49aba72e7cf8 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientPartitionAwarenessMapperFactory.java @@ -17,9 +17,6 @@ package org.apache.ignite.client; -import org.apache.ignite.cache.affinity.AffinityFunction; -import org.apache.ignite.cache.affinity.AffinityKeyMapper; - /** * This factory is used on the client side and only when the partition awareness thin client feature is enabled. By default, * on a new cache the RendezvousAffinityFunction will be used for calculating mappings 'key-to-partition' and 'partition-to-node'. diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientTransactions.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientTransactions.java similarity index 96% rename from modules/core/src/main/java/org/apache/ignite/client/ClientTransactions.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientTransactions.java index c6db25b35775d..183439d4b88ba 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientTransactions.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientTransactions.java @@ -17,8 +17,6 @@ package org.apache.ignite.client; -import org.apache.ignite.configuration.ClientConfiguration; -import org.apache.ignite.configuration.ClientTransactionConfiguration; import org.apache.ignite.internal.client.thin.ClientServerError; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java b/modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java similarity index 93% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java index 6c4a3fa676c0f..b3287169a2e3c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/internal/client/thin/ProtocolBitmaskFeature.java @@ -20,12 +20,6 @@ import java.util.BitSet; import java.util.Collection; import java.util.EnumSet; -import org.apache.ignite.client.ClientCacheConfiguration; -import org.apache.ignite.client.ClientServices; -import org.apache.ignite.cluster.ClusterState; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.configuration.NearCacheConfiguration; -import org.apache.ignite.internal.processors.cache.GridCacheProcessor; /** * Defines supported bitmask features for thin client. From ddc1cd333a579e3c937cccaafa278c6ef95a8f7c Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Thu, 14 May 2026 11:11:41 +0300 Subject: [PATCH 03/17] WIP --- .../src/main/java/org/apache/ignite/client/ClientAtomicLong.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientAtomicLong.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientAtomicLong.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAtomicLong.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientAtomicLong.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientAtomicLong.java From 998f9f300ca2337b8d40aace8f8a3a3f7cbc13fd Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Fri, 15 May 2026 17:54:06 +0300 Subject: [PATCH 04/17] WIP --- .../java/org/apache/ignite/cache/CacheKeyConfiguration.java | 0 .../main/java/org/apache/ignite/cache/CacheRebalanceMode.java | 1 - .../org/apache/ignite/cache/CacheWriteSynchronizationMode.java | 1 - .../main/java/org/apache/ignite/cache/PartitionLossPolicy.java | 2 -- 4 files changed, 4 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java (97%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java (98%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java (98%) diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java similarity index 97% rename from modules/core/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java index 9901922d38282..2f2f360b49885 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/CacheRebalanceMode.java @@ -17,7 +17,6 @@ package org.apache.ignite.cache; -import org.apache.ignite.cache.affinity.AffinityFunction; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java index f3455a838c4b9..8b4b7c4645d21 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/CacheWriteSynchronizationMode.java @@ -17,7 +17,6 @@ package org.apache.ignite.cache; -import org.apache.ignite.transactions.Transaction; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java b/modules/commons/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java rename to modules/commons/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java index 3b2f46a5f738f..46287be78480e 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/PartitionLossPolicy.java @@ -18,8 +18,6 @@ package org.apache.ignite.cache; import java.util.Collection; -import org.apache.ignite.Ignite; -import org.apache.ignite.IgniteCache; import org.jetbrains.annotations.Nullable; /** From c77b0bf0155288d06753a008739a1614f39b5586 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Fri, 15 May 2026 17:54:58 +0300 Subject: [PATCH 05/17] WIP --- .../org/apache/ignite/client/ClientCollectionConfiguration.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientCollectionConfiguration.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientCollectionConfiguration.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCollectionConfiguration.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientCollectionConfiguration.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCollectionConfiguration.java From 6091eb12c2a846745df6c18b1dc80826e52f7ccc Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Fri, 15 May 2026 17:56:20 +0300 Subject: [PATCH 06/17] WIP --- .../src/main/java/org/apache/ignite/lang/IgniteExperimental.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/lang/IgniteExperimental.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/lang/IgniteExperimental.java b/modules/commons/src/main/java/org/apache/ignite/lang/IgniteExperimental.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/lang/IgniteExperimental.java rename to modules/commons/src/main/java/org/apache/ignite/lang/IgniteExperimental.java From 0b6a7809d189624f70f52d62b590181bbb9f7300 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Fri, 15 May 2026 18:59:43 +0300 Subject: [PATCH 07/17] WIP --- .../org/apache/ignite/cache/QueryEntity.java | 244 +--------------- .../org/apache/ignite/cache/QueryIndex.java | 1 - .../apache/ignite/cache/QueryIndexType.java | 0 .../cache/affinity/AffinityKeyMapped.java | 0 .../query/annotations/QueryGroupIndex.java | 1 - .../query/annotations/QuerySqlField.java | 2 - .../query/annotations/QueryTextField.java | 1 - .../cache/query/QueryEntityClassProperty.java | 0 .../query/QueryEntityIndexDescriptor.java | 0 .../query/QueryEntityTypeDescriptor.java | 0 .../query/GridQueryIndexDescriptor.java | 0 .../ignite/internal/util/CommonUtils.java | 89 ++++++ .../processors/query/QuerySchema.java | 2 +- .../internal/processors/query/QueryUtils.java | 275 +++++++++++++++--- .../ignite/internal/util/IgniteUtils.java | 29 -- 15 files changed, 330 insertions(+), 314 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/QueryEntity.java (70%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/QueryIndex.java (99%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/QueryIndexType.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapped.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java (97%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java (98%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java (95%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityClassProperty.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityIndexDescriptor.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityTypeDescriptor.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexDescriptor.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java b/modules/commons/src/main/java/org/apache/ignite/cache/QueryEntity.java similarity index 70% rename from modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java rename to modules/commons/src/main/java/org/apache/ignite/cache/QueryEntity.java index 35a632909131e..933ba1f1cc2d9 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/QueryEntity.java @@ -27,11 +27,9 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.UUID; import javax.cache.CacheException; import org.apache.ignite.cache.query.annotations.QueryGroupIndex; import org.apache.ignite.cache.query.annotations.QuerySqlField; @@ -39,16 +37,11 @@ import org.apache.ignite.internal.processors.cache.query.QueryEntityClassProperty; import org.apache.ignite.internal.processors.cache.query.QueryEntityTypeDescriptor; import org.apache.ignite.internal.processors.query.GridQueryIndexDescriptor; -import org.apache.ignite.internal.processors.query.QueryField; -import org.apache.ignite.internal.processors.query.QueryUtils; -import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation; -import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation; -import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation; +import org.apache.ignite.internal.util.CommonUtils; import org.apache.ignite.internal.util.tostring.GridToStringInclude; 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.S; -import org.apache.ignite.internal.util.typedef.internal.U; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -161,223 +154,6 @@ public QueryEntity(Class keyCls, Class valCls) { this(convert(processKeyAndValueClasses(keyCls, valCls))); } - /** - * Make query entity patch. This patch can only add properties to entity and can't remove them. - * Other words, the patch will contain only add operations(e.g. add column, create index) and not remove ones. - * - * @param target Query entity to which this entity should be expanded. - * @return Patch which contains operations for expanding this entity. - */ - @NotNull public QueryEntityPatch makePatch(QueryEntity target) { - if (target == null) - return QueryEntityPatch.empty(); - - StringBuilder conflicts = new StringBuilder(); - - checkEquals(conflicts, "keyType", keyType, target.keyType); - checkEquals(conflicts, "valType", valType, target.valType); - checkEquals(conflicts, "keyFieldName", keyFieldName, target.keyFieldName); - checkEquals(conflicts, "valueFieldName", valueFieldName, target.valueFieldName); - checkEquals(conflicts, "tableName", tableName, target.tableName); - - List qryFieldsToAdd = checkFields(target, conflicts); - - Collection indexesToAdd = checkIndexes(target, conflicts); - - if (conflicts.length() != 0) - return QueryEntityPatch.conflict(tableName + " conflict: \n" + conflicts.toString()); - - Collection patchOperations = new ArrayList<>(); - - if (!qryFieldsToAdd.isEmpty()) - patchOperations.add(new SchemaAlterTableAddColumnOperation( - UUID.randomUUID(), - null, - null, - tableName, - qryFieldsToAdd, - true, - true - )); - - if (!indexesToAdd.isEmpty()) { - for (QueryIndex idx : indexesToAdd) { - patchOperations.add(new SchemaIndexCreateOperation( - UUID.randomUUID(), - null, - null, - tableName, - idx, - true, - 0 - )); - } - } - - return QueryEntityPatch.patch(patchOperations); - } - - /** - * Comparing local fields and target fields. - * - * @param target Query entity for check. - * @param conflicts Storage of conflicts. - * @return Indexes which exist in target and not exist in local. - */ - @NotNull private Collection checkIndexes(QueryEntity target, StringBuilder conflicts) { - HashSet indexesToAdd = new HashSet<>(); - - Map curIndexes = new HashMap<>(); - - for (QueryIndex idx : getIndexes()) { - if (curIndexes.put(idx.getName(), idx) != null) - throw new IllegalStateException("Duplicate key"); - } - - for (QueryIndex qryIdx : target.getIndexes()) { - if (curIndexes.containsKey(qryIdx.getName())) { - checkEquals( - conflicts, - "index " + qryIdx.getName(), - curIndexes.get(qryIdx.getName()), - qryIdx - ); - } - else - indexesToAdd.add(qryIdx); - } - return indexesToAdd; - } - - /** - * Comparing local entity fields and target entity fields. - * - * @param target Query entity for check. - * @param conflicts Storage of conflicts. - * @return Fields which exist in target and not exist in local. - */ - private List checkFields(QueryEntity target, StringBuilder conflicts) { - List qryFieldsToAdd = new ArrayList<>(); - - for (Map.Entry targetField : target.getFields().entrySet()) { - String targetFieldName = targetField.getKey(); - String targetFieldType = targetField.getValue(); - String targetFieldAlias = target.getAliases().get(targetFieldName); - - if (getFields().containsKey(targetFieldName)) { - checkEquals( - conflicts, - "alias of " + targetFieldName, - getAliases().get(targetFieldName), - targetFieldAlias - ); - - checkEquals( - conflicts, - "fieldType of " + targetFieldName, - getFields().get(targetFieldName), - targetFieldType - ); - - checkEquals( - conflicts, - "nullable of " + targetFieldName, - contains(getNotNullFields(), targetFieldName), - contains(target.getNotNullFields(), targetFieldName) - ); - - checkEquals( - conflicts, - "default value of " + targetFieldName, - getFromMap(getDefaultFieldValues(), targetFieldName), - getFromMap(target.getDefaultFieldValues(), targetFieldName) - ); - - checkEquals(conflicts, - "precision of " + targetFieldName, - getFromMap(getFieldsPrecision(), targetFieldName), - getFromMap(target.getFieldsPrecision(), targetFieldName)); - - checkEquals( - conflicts, - "scale of " + targetFieldName, - getFromMap(getFieldsScale(), targetFieldName), - getFromMap(target.getFieldsScale(), targetFieldName)); - } - else { - boolean isAliasConflictsFound = findAliasConflicts(targetFieldAlias, targetFieldName, conflicts); - - if (!isAliasConflictsFound) { - Integer precision = getFromMap(target.getFieldsPrecision(), targetFieldName); - Integer scale = getFromMap(target.getFieldsScale(), targetFieldName); - - qryFieldsToAdd.add(new QueryField( - targetFieldName, - targetFieldType, - targetFieldAlias, - !contains(target.getNotNullFields(), targetFieldName), - getFromMap(target.getDefaultFieldValues(), targetFieldName), - precision == null ? -1 : precision, - scale == null ? -1 : scale - )); - } - } - } - - return qryFieldsToAdd; - } - - /** - * Checks if received query entity field has the alias which is already used by a field on the local node. - * - * @return Whether conflicts were found. - */ - private boolean findAliasConflicts(String targetFieldAlias, String targetFieldName, StringBuilder conflicts) { - for (Map.Entry entry : getAliases().entrySet()) { - if (Objects.equals(entry.getValue(), targetFieldAlias)) { - conflicts.append(String.format( - "multiple fields are associated with the same alias: alias=%s, localField=%s, receivedField=%s\n", - targetFieldAlias, - entry.getKey(), - targetFieldName) - ); - - return true; - } - } - - return false; - } - - /** - * @param collection Collection for checking. - * @param elementToCheck Element for checking to containing in collection. - * @return {@code true} if collection contain elementToCheck. - */ - private static boolean contains(Collection collection, String elementToCheck) { - return collection != null && collection.contains(elementToCheck); - } - - /** - * @return Value from sourceMap or null if map is null. - */ - private static V getFromMap(Map sourceMap, String key) { - return sourceMap == null ? null : sourceMap.get(key); - } - - /** - * Comparing two objects and add formatted text to conflicts if needed. - * - * @param conflicts Storage of conflicts resulting error message. - * @param name Name of comparing object. - * @param local Local object. - * @param received Received object. - */ - private void checkEquals(StringBuilder conflicts, String name, V local, V received) { - if (!Objects.equals(local, received)) - conflicts.append(String.format("%s is different: local=%s, received=%s\n", name, local, received)); - } - /** * Gets key type for this query pair. * @@ -716,7 +492,7 @@ private static QueryEntity convert(QueryEntityTypeDescriptor desc) { entity.setValueType(desc.valueClass().getName()); for (QueryEntityClassProperty prop : desc.properties().values()) - entity.addQueryField(prop.fullName(), U.box(prop.type()).getName(), prop.alias()); + entity.addQueryField(prop.fullName(), CommonUtils.box(prop.type()).getName(), prop.alias()); entity.setKeyFields(desc.keyProperties()); @@ -762,10 +538,10 @@ private static QueryEntity convert(QueryEntityTypeDescriptor desc) { txtIdx.setIndexType(QueryIndexType.FULLTEXT); - txtIdx.setFieldNames(Arrays.asList(QueryUtils.VAL_FIELD_NAME), true); + txtIdx.setFieldNames(Arrays.asList(CommonUtils.VAL_FIELD_NAME), true); } else - txtIdx.getFields().put(QueryUtils.VAL_FIELD_NAME, true); + txtIdx.getFields().put(CommonUtils.VAL_FIELD_NAME, true); } if (txtIdx != null) @@ -813,14 +589,14 @@ private static QueryEntityTypeDescriptor processKeyAndValueClasses( */ private static void processAnnotationsInClass(boolean key, Class cls, QueryEntityTypeDescriptor type, @Nullable QueryEntityClassProperty parent) { - if (U.isJdk(cls) || U.isGeometryClass(cls)) { - if (parent == null && !key && QueryUtils.isSqlType(cls)) { // We have to index primitive _val. - String idxName = cls.getSimpleName() + "_" + QueryUtils.VAL_FIELD_NAME + "_idx"; + if (CommonUtils.isJdk(cls) || CommonUtils.isGeometryClass(cls)) { + if (parent == null && !key && CommonUtils.isSqlType(cls)) { // We have to index primitive _val. + String idxName = cls.getSimpleName() + "_" + CommonUtils.VAL_FIELD_NAME + "_idx"; - type.addIndex(idxName, U.isGeometryClass(cls) ? + type.addIndex(idxName, CommonUtils.isGeometryClass(cls) ? QueryIndexType.GEOSPATIAL : QueryIndexType.SORTED, QueryIndex.DFLT_INLINE_SIZE); - type.addFieldToIndex(idxName, QueryUtils.VAL_FIELD_NAME, 0, false); + type.addFieldToIndex(idxName, CommonUtils.VAL_FIELD_NAME, 0, false); } return; @@ -896,7 +672,7 @@ private static void processAnnotation(boolean key, QuerySqlField sqlAnn, QueryTe if (cls != curCls) idxName = cls.getSimpleName() + "_" + idxName; - desc.addIndex(idxName, U.isGeometryClass(prop.type()) ? + desc.addIndex(idxName, CommonUtils.isGeometryClass(prop.type()) ? QueryIndexType.GEOSPATIAL : QueryIndexType.SORTED, sqlAnn.inlineSize()); desc.addFieldToIndex(idxName, prop.fullName(), 0, sqlAnn.descending()); diff --git a/modules/core/src/main/java/org/apache/ignite/cache/QueryIndex.java b/modules/commons/src/main/java/org/apache/ignite/cache/QueryIndex.java similarity index 99% rename from modules/core/src/main/java/org/apache/ignite/cache/QueryIndex.java rename to modules/commons/src/main/java/org/apache/ignite/cache/QueryIndex.java index df24cf9bcadc1..b51719ab8913b 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/QueryIndex.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/QueryIndex.java @@ -21,7 +21,6 @@ import java.util.Collection; import java.util.LinkedHashMap; import java.util.Objects; -import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.S; diff --git a/modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java b/modules/commons/src/main/java/org/apache/ignite/cache/QueryIndexType.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cache/QueryIndexType.java rename to modules/commons/src/main/java/org/apache/ignite/cache/QueryIndexType.java diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapped.java b/modules/commons/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapped.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapped.java rename to modules/commons/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapped.java diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java similarity index 97% rename from modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java index 797fbe453a827..3c76347ececba 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QueryGroupIndex.java @@ -22,7 +22,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.apache.ignite.cache.QueryIndex; -import org.apache.ignite.configuration.CacheConfiguration; /** * Describes group index. diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java index 1593018cb2ac2..64550aed6e7a9 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java @@ -23,8 +23,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.apache.ignite.cache.QueryIndex; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.internal.processors.cache.query.CacheQuery; /** * Annotates fields for SQL queries. All fields that will be involved in SQL clauses must have diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java similarity index 95% rename from modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java index 9e90e9247d5d5..6fdae549eba74 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java @@ -22,7 +22,6 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.apache.ignite.internal.processors.cache.query.CacheQuery; /** * Annotation for fields to be indexed for full text diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityClassProperty.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityClassProperty.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityClassProperty.java rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityClassProperty.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityIndexDescriptor.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityIndexDescriptor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityIndexDescriptor.java rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityIndexDescriptor.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityTypeDescriptor.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityTypeDescriptor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityTypeDescriptor.java rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/query/QueryEntityTypeDescriptor.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexDescriptor.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexDescriptor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexDescriptor.java rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexDescriptor.java diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java index 46ebe48608ce0..d07978e07c69a 100644 --- a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java +++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java @@ -29,6 +29,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.math.BigDecimal; import java.net.DatagramSocket; import java.net.Socket; import java.net.SocketException; @@ -44,18 +45,25 @@ import java.security.AccessController; import java.security.PrivilegedAction; import java.security.ProtectionDomain; +import java.sql.Time; +import java.sql.Timestamp; import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.ServiceLoader; +import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -82,6 +90,7 @@ import org.apache.ignite.lang.IgniteFutureTimeoutException; import org.apache.ignite.lang.IgnitePredicate; import org.apache.ignite.thread.IgniteThread; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static java.util.Objects.isNull; @@ -223,6 +232,18 @@ public abstract class CommonUtils { /** */ private static final Class GEOMETRY_CLASS = classForName("org.locationtech.jts.geom.Geometry", null); + /** Boxed class map. */ + private static final Map, Class> boxedClsMap = new HashMap<>(16, .5f); + + /** Field name for key. */ + public static final String KEY_FIELD_NAME = "_KEY"; + + /** Field name for value. */ + public static final String VAL_FIELD_NAME = "_VAL"; + + /** */ + private static final Set> SQL_TYPES = createSqlTypes(); + static { primitiveMap.put("byte", byte.class); primitiveMap.put("short", short.class); @@ -234,6 +255,16 @@ public abstract class CommonUtils { primitiveMap.put("boolean", boolean.class); primitiveMap.put("void", void.class); + boxedClsMap.put(byte.class, Byte.class); + boxedClsMap.put(short.class, Short.class); + boxedClsMap.put(int.class, Integer.class); + boxedClsMap.put(long.class, Long.class); + boxedClsMap.put(float.class, Float.class); + boxedClsMap.put(double.class, Double.class); + boxedClsMap.put(char.class, Character.class); + boxedClsMap.put(boolean.class, Boolean.class); + boxedClsMap.put(void.class, Void.class); + try { OBJECT_CTOR = Object.class.getConstructor(); } @@ -2122,4 +2153,62 @@ public static IgniteException convertException(IgniteCheckedException e) { public static boolean isGeometryClass(Class cls) { return GEOMETRY_CLASS != null && GEOMETRY_CLASS.isAssignableFrom(cls); } + + /** + * Gets wrapper class for a primitive type. + * + * @param cls Class. If {@code null}, method is no-op. + * @return Wrapper class or original class if it is non-primitive. + */ + @Nullable public static Class box(@Nullable Class cls) { + if (cls == null) + return null; + + if (!cls.isPrimitive()) + return cls; + + return boxedClsMap.get(cls); + } + + /** + * Checks if the given class can be mapped to a simple SQL type. + * + * @param cls Class. + * @return {@code true} If can. + */ + public static boolean isSqlType(Class cls) { + cls = box(cls); + + return SQL_TYPES.contains(cls) || isGeometryClass(cls); + } + + /** + * Creates SQL types set. + * + * @return SQL types set. + */ + @NotNull private static Set> createSqlTypes() { + Set> sqlClasses = new HashSet<>(Arrays.>asList( + Integer.class, + Boolean.class, + Byte.class, + Short.class, + Long.class, + BigDecimal.class, + Double.class, + Float.class, + Time.class, + Timestamp.class, + Date.class, + java.sql.Date.class, + LocalTime.class, + LocalDate.class, + LocalDateTime.class, + String.class, + UUID.class, + byte[].class + )); + + return sqlClasses; + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java index 6b5838ee824fa..0105eaa68b909 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java @@ -140,7 +140,7 @@ public QuerySchemaPatch makePatch(CacheConfiguration targetCfg, Collection if (locEntities.containsKey(qryEntity.getTableName())) { QueryEntity locEntity = locEntities.get(qryEntity.getTableName()); - QueryEntityPatch entityPatch = locEntity.makePatch(qryEntity); + QueryEntityPatch entityPatch = QueryUtils.makePatch(locEntity, qryEntity); if (entityPatch.hasConflict()) { if (conflicts.length() > 0) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java index 782012cc9da2a..1ead1e64a10e6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java @@ -20,15 +20,8 @@ import java.lang.reflect.Method; import java.math.BigDecimal; import java.sql.SQLException; -import java.sql.Time; -import java.sql.Timestamp; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -44,6 +37,7 @@ import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.binary.BinaryField; import org.apache.ignite.cache.QueryEntity; +import org.apache.ignite.cache.QueryEntityPatch; import org.apache.ignite.cache.QueryIndex; import org.apache.ignite.cache.QueryIndexType; import org.apache.ignite.cache.affinity.AffinityKeyMapper; @@ -68,6 +62,10 @@ import org.apache.ignite.internal.processors.query.property.QueryPropertyAccessor; import org.apache.ignite.internal.processors.query.property.QueryReadOnlyMethodsAccessor; import org.apache.ignite.internal.processors.query.schema.SchemaOperationException; +import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation; +import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation; +import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation; +import org.apache.ignite.internal.util.CommonUtils; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.X; import org.apache.ignite.internal.util.typedef.internal.A; @@ -113,10 +111,10 @@ public class QueryUtils { public static final String SCHEMA_INFORMATION = "INFORMATION_SCHEMA"; /** Field name for key. */ - public static final String KEY_FIELD_NAME = "_KEY"; + public static final String KEY_FIELD_NAME = CommonUtils.KEY_FIELD_NAME; /** Field name for value. */ - public static final String VAL_FIELD_NAME = "_VAL"; + public static final String VAL_FIELD_NAME = CommonUtils.VAL_FIELD_NAME; /** Well-known template name for PARTITIONED cache. */ public static final String TEMPLATE_PARTITIONED = "PARTITIONED"; @@ -131,9 +129,6 @@ public class QueryUtils { private static final int DISCO_HIST_SIZE = getInteger(IGNITE_INDEXING_DISCOVERY_HISTORY_SIZE, DFLT_INDEXING_DISCOVERY_HISTORY_SIZE); - /** */ - private static final Set> SQL_TYPES = createSqlTypes(); - /** Default SQL delimeter. */ public static final char DEFAULT_DELIM = '\n'; @@ -157,36 +152,6 @@ public class QueryUtils { public static final ThreadLocal INCLUDE_SENSITIVE_TL = ThreadLocal.withInitial(() -> DFLT_TO_STRING_INCLUDE_SENSITIVE); - /** - * Creates SQL types set. - * - * @return SQL types set. - */ - @NotNull private static Set> createSqlTypes() { - Set> sqlClasses = new HashSet<>(Arrays.>asList( - Integer.class, - Boolean.class, - Byte.class, - Short.class, - Long.class, - BigDecimal.class, - Double.class, - Float.class, - Time.class, - Timestamp.class, - Date.class, - java.sql.Date.class, - LocalTime.class, - LocalDate.class, - LocalDateTime.class, - String.class, - UUID.class, - byte[].class - )); - - return sqlClasses; - } - /** * Get table name for entity. * @@ -1168,9 +1133,7 @@ private static boolean mustDeserializeBinary(GridKernalContext ctx, Class cls) { * @return {@code true} If can. */ public static boolean isSqlType(Class cls) { - cls = U.box(cls); - - return SQL_TYPES.contains(cls) || U.isGeometryClass(cls); + return CommonUtils.isSqlType(cls); } /** @@ -1811,6 +1774,228 @@ public static IgniteInternalCache cacheForDML(IgniteInternalCache qryFieldsToAdd = checkFields(locEntity, target, conflicts); + + Collection indexesToAdd = checkIndexes(locEntity, target, conflicts); + + if (conflicts.length() != 0) + return QueryEntityPatch.conflict(locEntity.getTableName() + " conflict: \n" + conflicts.toString()); + + Collection patchOperations = new ArrayList<>(); + + if (!qryFieldsToAdd.isEmpty()) + patchOperations.add(new SchemaAlterTableAddColumnOperation( + UUID.randomUUID(), + null, + null, + locEntity.getTableName(), + qryFieldsToAdd, + true, + true + )); + + if (!indexesToAdd.isEmpty()) { + for (QueryIndex idx : indexesToAdd) { + patchOperations.add(new SchemaIndexCreateOperation( + UUID.randomUUID(), + null, + null, + locEntity.getTableName(), + idx, + true, + 0 + )); + } + } + + return QueryEntityPatch.patch(patchOperations); + } + + /** + * Comparing local entity fields and target entity fields. + * + * @param target Query entity for check. + * @param conflicts Storage of conflicts. + * @return Fields which exist in target and not exist in local. + */ + private static List checkFields(QueryEntity locEntity, QueryEntity target, StringBuilder conflicts) { + List qryFieldsToAdd = new ArrayList<>(); + + for (Map.Entry targetField : target.getFields().entrySet()) { + String targetFieldName = targetField.getKey(); + String targetFieldType = targetField.getValue(); + String targetFieldAlias = target.getAliases().get(targetFieldName); + + if (locEntity.getFields().containsKey(targetFieldName)) { + checkEquals( + conflicts, + "alias of " + targetFieldName, + locEntity.getAliases().get(targetFieldName), + targetFieldAlias + ); + + checkEquals( + conflicts, + "fieldType of " + targetFieldName, + locEntity.getFields().get(targetFieldName), + targetFieldType + ); + + checkEquals( + conflicts, + "nullable of " + targetFieldName, + contains(locEntity.getNotNullFields(), targetFieldName), + contains(target.getNotNullFields(), targetFieldName) + ); + + checkEquals( + conflicts, + "default value of " + targetFieldName, + getFromMap(locEntity.getDefaultFieldValues(), targetFieldName), + getFromMap(target.getDefaultFieldValues(), targetFieldName) + ); + + checkEquals(conflicts, + "precision of " + targetFieldName, + getFromMap(locEntity.getFieldsPrecision(), targetFieldName), + getFromMap(target.getFieldsPrecision(), targetFieldName)); + + checkEquals( + conflicts, + "scale of " + targetFieldName, + getFromMap(locEntity.getFieldsScale(), targetFieldName), + getFromMap(target.getFieldsScale(), targetFieldName)); + } + else { + boolean isAliasConflictsFound = findAliasConflicts(locEntity, targetFieldAlias, targetFieldName, conflicts); + + if (!isAliasConflictsFound) { + Integer precision = getFromMap(target.getFieldsPrecision(), targetFieldName); + Integer scale = getFromMap(target.getFieldsScale(), targetFieldName); + + qryFieldsToAdd.add(new QueryField( + targetFieldName, + targetFieldType, + targetFieldAlias, + !contains(target.getNotNullFields(), targetFieldName), + getFromMap(target.getDefaultFieldValues(), targetFieldName), + precision == null ? -1 : precision, + scale == null ? -1 : scale + )); + } + } + } + + return qryFieldsToAdd; + } + + /** + * Comparing local fields and target fields. + * + * @param target Query entity for check. + * @param conflicts Storage of conflicts. + * @return Indexes which exist in target and not exist in local. + */ + @NotNull private static Collection checkIndexes(QueryEntity locEntity, QueryEntity target, StringBuilder conflicts) { + HashSet indexesToAdd = new HashSet<>(); + + Map curIndexes = new HashMap<>(); + + for (QueryIndex idx : locEntity.getIndexes()) { + if (curIndexes.put(idx.getName(), idx) != null) + throw new IllegalStateException("Duplicate key"); + } + + for (QueryIndex qryIdx : target.getIndexes()) { + if (curIndexes.containsKey(qryIdx.getName())) { + checkEquals( + conflicts, + "index " + qryIdx.getName(), + curIndexes.get(qryIdx.getName()), + qryIdx + ); + } + else + indexesToAdd.add(qryIdx); + } + return indexesToAdd; + } + + /** + * @param collection Collection for checking. + * @param elementToCheck Element for checking to containing in collection. + * @return {@code true} if collection contain elementToCheck. + */ + private static boolean contains(Collection collection, String elementToCheck) { + return collection != null && collection.contains(elementToCheck); + } + + /** + * @return Value from sourceMap or null if map is null. + */ + private static V getFromMap(Map sourceMap, String key) { + return sourceMap == null ? null : sourceMap.get(key); + } + + /** + * Comparing two objects and add formatted text to conflicts if needed. + * + * @param conflicts Storage of conflicts resulting error message. + * @param name Name of comparing object. + * @param local Local object. + * @param received Received object. + */ + private static void checkEquals(StringBuilder conflicts, String name, V local, V received) { + if (!Objects.equals(local, received)) + conflicts.append(String.format("%s is different: local=%s, received=%s\n", name, local, received)); + } + + /** + * Checks if received query entity field has the alias which is already used by a field on the local node. + * + * @return Whether conflicts were found. + */ + private static boolean findAliasConflicts( + QueryEntity locEntity, + String targetFieldAlias, + String targetFieldName, + StringBuilder conflicts + ) { + for (Map.Entry entry : locEntity.getAliases().entrySet()) { + if (Objects.equals(entry.getValue(), targetFieldAlias)) { + conflicts.append(String.format( + "multiple fields are associated with the same alias: alias=%s, localField=%s, receivedField=%s\n", + targetFieldAlias, + entry.getKey(), + targetFieldName) + ); + + return true; + } + } + + return false; + } + /** * Private constructor. */ 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 c8ea0134a6ad5..050f6b21299a4 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 @@ -377,9 +377,6 @@ public abstract class IgniteUtils extends CommonUtils { /** Supplier of network interfaces. Could be used for tests purposes, must not be changed in production code. */ public static InterfaceSupplier INTERFACE_SUPPLIER = NetworkInterface::getNetworkInterfaces; - /** Boxed class map. */ - private static final Map, Class> boxedClsMap = new HashMap<>(16, .5f); - /** MAC OS invalid argument socket error message. */ public static final String MAC_INVALID_ARG_MSG = "On MAC OS you may have too many file descriptors open " + "(simple restart usually solves the issue)"; @@ -486,16 +483,6 @@ public abstract class IgniteUtils extends CommonUtils { jvm32Bit = "32".equals(jvmArchDataModel); - boxedClsMap.put(byte.class, Byte.class); - boxedClsMap.put(short.class, Short.class); - boxedClsMap.put(int.class, Integer.class); - boxedClsMap.put(long.class, Long.class); - boxedClsMap.put(float.class, Float.class); - boxedClsMap.put(double.class, Double.class); - boxedClsMap.put(char.class, Character.class); - boxedClsMap.put(boolean.class, Boolean.class); - boxedClsMap.put(void.class, Void.class); - // Disable hostname SSL verification for development and testing with self-signed certificates. if (Boolean.parseBoolean(System.getProperty(IGNITE_DISABLE_HOSTNAME_VERIFIER))) { HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @@ -5806,22 +5793,6 @@ public static long ensurePositive(long i, long dflt) { return i <= 0 ? dflt : i; } - /** - * Gets wrapper class for a primitive type. - * - * @param cls Class. If {@code null}, method is no-op. - * @return Wrapper class or original class if it is non-primitive. - */ - @Nullable public static Class box(@Nullable Class cls) { - if (cls == null) - return null; - - if (!cls.isPrimitive()) - return cls; - - return boxedClsMap.get(cls); - } - /** * Gets class for provided name. Accepts primitive types names. * From 579f2cf949c63d3735aaf8b7458f08de1d82a84b Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Fri, 15 May 2026 19:08:49 +0300 Subject: [PATCH 08/17] WIP --- .../CacheConfigurationDefaults.java | 72 +++++++++++++++++++ .../IgniteConfigurationDefaults.java | 33 +++++++++ .../configuration/CacheConfiguration.java | 48 +------------ .../configuration/IgniteConfiguration.java | 14 +--- .../client/ClientCacheConfiguration.java | 41 ++++++----- 5 files changed, 127 insertions(+), 81 deletions(-) create mode 100644 modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java create mode 100644 modules/commons/src/main/java/org/apache/ignite/configuration/IgniteConfigurationDefaults.java rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java (94%) diff --git a/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java b/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java new file mode 100644 index 0000000000000..f5f3882ad4c34 --- /dev/null +++ b/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.configuration; + +import org.apache.ignite.cache.CacheAtomicityMode; +import org.apache.ignite.cache.CacheMode; +import org.apache.ignite.cache.CacheRebalanceMode; +import org.apache.ignite.cache.PartitionLossPolicy; + +/** */ +public interface CacheConfigurationDefaults { + /** Default atomicity mode. */ + public static final CacheAtomicityMode DFLT_CACHE_ATOMICITY_MODE = CacheAtomicityMode.ATOMIC; + + /** Default number of backups. */ + public static final int DFLT_BACKUPS = 0; + + /** Default caching mode. */ + public static final CacheMode DFLT_CACHE_MODE = CacheMode.PARTITIONED; + + /** Default value for eager ttl flag. */ + public static final boolean DFLT_EAGER_TTL = true; + + /** + * Default lock timeout. + * @deprecated Default lock timeout configuration property has no effect. + */ + @Deprecated + public static final long DFLT_LOCK_TIMEOUT = 0; + + /** Default partition loss policy. */ + public static final PartitionLossPolicy DFLT_PARTITION_LOSS_POLICY = PartitionLossPolicy.IGNORE; + + /** Default value for 'readFromBackup' flag. */ + public static final boolean DFLT_READ_FROM_BACKUP = true; + + /** Default rebalance mode for distributed cache. */ + public static final CacheRebalanceMode DFLT_REBALANCE_MODE = CacheRebalanceMode.ASYNC; + + /** Default value for 'copyOnRead' flag. */ + public static final boolean DFLT_COPY_ON_READ = true; + + /** Default value for 'maxConcurrentAsyncOps'. */ + public static final int DFLT_MAX_CONCURRENT_ASYNC_OPS = 500; + + /** Default maximum number of query iterators that can be stored. */ + public static final int DFLT_MAX_QUERY_ITERATOR_CNT = 1024; + + /** Default number of queries detail metrics to collect. */ + public static final int DFLT_QRY_DETAIL_METRICS_SIZE = 0; + + /** Default query parallelism. */ + public static final int DFLT_QUERY_PARALLELISM = 1; + + /** Default maximum inline size for sql indexes. */ + public static final int DFLT_SQL_INDEX_MAX_INLINE_SIZE = -1; +} diff --git a/modules/commons/src/main/java/org/apache/ignite/configuration/IgniteConfigurationDefaults.java b/modules/commons/src/main/java/org/apache/ignite/configuration/IgniteConfigurationDefaults.java new file mode 100644 index 0000000000000..25b8e7ced9418 --- /dev/null +++ b/modules/commons/src/main/java/org/apache/ignite/configuration/IgniteConfigurationDefaults.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.configuration; + +/** */ +public interface IgniteConfigurationDefaults { + /** Default rebalance batch size in bytes (value is {@code 512Kb}). */ + public static final int DFLT_REBALANCE_BATCH_SIZE = 512 * 1024; // 512K + + /** Default rebalance batches prefetch count (value is {@code 3}). */ + public static final long DFLT_REBALANCE_BATCHES_PREFETCH_COUNT = 3; + + /** Time to wait between rebalance messages in milliseconds to avoid overloading CPU (value is {@code 0}). */ + public static final long DFLT_REBALANCE_THROTTLE = 0; + + /** Default rebalance message timeout in milliseconds (value is {@code 10000}). */ + public static final long DFLT_REBALANCE_TIMEOUT = 10000; +} 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 7140c603e5cd8..107c720de2c0b 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 @@ -79,7 +79,7 @@ * can be configured from Spring XML files (or other DI frameworks).

Note that absolutely all configuration * properties are optional, so users should only change what they need. */ -public class CacheConfiguration extends MutableConfiguration { +public class CacheConfiguration extends MutableConfiguration implements CacheConfigurationDefaults { /** */ private static final long serialVersionUID = 0L; @@ -114,37 +114,15 @@ public class CacheConfiguration extends MutableConfiguration { @Deprecated public static final long DFLT_REBALANCE_THROTTLE = IgniteConfiguration.DFLT_REBALANCE_THROTTLE; - /** Default number of backups. */ - public static final int DFLT_BACKUPS = 0; - - /** Default caching mode. */ - public static final CacheMode DFLT_CACHE_MODE = CacheMode.PARTITIONED; - - /** Default atomicity mode. */ - public static final CacheAtomicityMode DFLT_CACHE_ATOMICITY_MODE = CacheAtomicityMode.ATOMIC; - - /** - * Default lock timeout. - * @deprecated Default lock timeout configuration property has no effect. - */ - @Deprecated - public static final long DFLT_LOCK_TIMEOUT = 0; - /** Default cache size to use with eviction policy. */ public static final int DFLT_CACHE_SIZE = 100000; - /** Default maximum inline size for sql indexes. */ - public static final int DFLT_SQL_INDEX_MAX_INLINE_SIZE = -1; - /** Initial default near cache size. */ public static final int DFLT_NEAR_START_SIZE = 1500000 / 4; /** Default value for 'invalidate' flag that indicates if this is invalidation-based cache. */ public static final boolean DFLT_INVALIDATE = false; - /** Default rebalance mode for distributed cache. */ - public static final CacheRebalanceMode DFLT_REBALANCE_MODE = CacheRebalanceMode.ASYNC; - /** * Default rebalance batch size in bytes. * @deprecated Use {@link IgniteConfiguration#DFLT_REBALANCE_BATCH_SIZE} instead. @@ -152,12 +130,6 @@ public class CacheConfiguration extends MutableConfiguration { @Deprecated public static final int DFLT_REBALANCE_BATCH_SIZE = IgniteConfiguration.DFLT_REBALANCE_BATCH_SIZE; - /** Default value for eager ttl flag. */ - public static final boolean DFLT_EAGER_TTL = true; - - /** Default value for 'maxConcurrentAsyncOps'. */ - public static final int DFLT_MAX_CONCURRENT_ASYNC_OPS = 500; - /** Default value for 'writeBehindEnabled' flag. */ public static final boolean DFLT_WRITE_BEHIND_ENABLED = false; @@ -179,15 +151,9 @@ public class CacheConfiguration extends MutableConfiguration { /** Default write coalescing for write-behind cache store. */ public static final boolean DFLT_WRITE_BEHIND_COALESCING = true; - /** Default maximum number of query iterators that can be stored. */ - public static final int DFLT_MAX_QUERY_ITERATOR_CNT = 1024; - /** Default value for load previous value flag. */ public static final boolean DFLT_LOAD_PREV_VAL = false; - /** Default value for 'readFromBackup' flag. */ - public static final boolean DFLT_READ_FROM_BACKUP = true; - /** Filter that accepts all nodes. */ public static final IgnitePredicate ALL_NODES = new IgniteAllNodesPredicate(); @@ -195,9 +161,6 @@ public class CacheConfiguration extends MutableConfiguration { @Deprecated public static final long DFLT_LONG_QRY_WARN_TIMEOUT = 3000; - /** Default number of queries detail metrics to collect. */ - public static final int DFLT_QRY_DETAIL_METRICS_SIZE = 0; - /** Default value for keep binary in store behavior . */ @SuppressWarnings({"UnnecessaryBoxing", "BooleanConstructorCall"}) public static final Boolean DFLT_STORE_KEEP_BINARY = new Boolean(false); @@ -205,12 +168,6 @@ public class CacheConfiguration extends MutableConfiguration { /** Default threshold for concurrent loading of keys from {@link CacheStore}. */ public static final int DFLT_CONCURRENT_LOAD_ALL_THRESHOLD = 5; - /** Default partition loss policy. */ - public static final PartitionLossPolicy DFLT_PARTITION_LOSS_POLICY = PartitionLossPolicy.IGNORE; - - /** Default query parallelism. */ - public static final int DFLT_QUERY_PARALLELISM = 1; - /** Default value for events disabled flag. */ public static final boolean DFLT_EVENTS_DISABLED = false; @@ -274,9 +231,6 @@ public class CacheConfiguration extends MutableConfiguration { /** Platform cache configuration. Enables native cache in platforms (.NET, ...). */ private PlatformCacheConfiguration platformCfg; - /** Default value for 'copyOnRead' flag. */ - public static final boolean DFLT_COPY_ON_READ = true; - /** Write synchronization mode. */ private CacheWriteSynchronizationMode writeSync; diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java index 16d0bac76cf53..481bbdeae118a 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java @@ -105,7 +105,7 @@ * For more information about grid configuration and startup refer to {@link Ignition} * documentation. */ -public class IgniteConfiguration { +public class IgniteConfiguration implements IgniteConfigurationDefaults { /** Courtesy notice log category. */ public static final String COURTESY_LOGGER_NAME = "org.apache.ignite.CourtesyConfigNotice"; @@ -166,18 +166,6 @@ public class IgniteConfiguration { /** Default limit of threads used for rebalance. */ public static final int DFLT_REBALANCE_THREAD_POOL_SIZE = min(4, max(1, AVAILABLE_PROC_CNT / 4)); - /** Default rebalance message timeout in milliseconds (value is {@code 10000}). */ - public static final long DFLT_REBALANCE_TIMEOUT = 10000; - - /** Default rebalance batches prefetch count (value is {@code 3}). */ - public static final long DFLT_REBALANCE_BATCHES_PREFETCH_COUNT = 3; - - /** Time to wait between rebalance messages in milliseconds to avoid overloading CPU (value is {@code 0}). */ - public static final long DFLT_REBALANCE_THROTTLE = 0; - - /** Default rebalance batch size in bytes (value is {@code 512Kb}). */ - public static final int DFLT_REBALANCE_BATCH_SIZE = 512 * 1024; // 512K - /** Default size of system thread pool. */ public static final int DFLT_SYSTEM_CORE_THREAD_CNT = DFLT_PUBLIC_THREAD_CNT; diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java similarity index 94% rename from modules/core/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java index 693832b30add7..04e8b597e124d 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCacheConfiguration.java @@ -26,9 +26,8 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode; import org.apache.ignite.cache.PartitionLossPolicy; import org.apache.ignite.cache.QueryEntity; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.configuration.DataStorageConfiguration; -import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.configuration.CacheConfigurationDefaults; +import org.apache.ignite.configuration.IgniteConfigurationDefaults; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteExperimental; import org.jetbrains.annotations.Nullable; @@ -42,55 +41,55 @@ public final class ClientCacheConfiguration implements Serializable { private String name; /** @serial Atomicity mode. */ - private CacheAtomicityMode atomicityMode = CacheConfiguration.DFLT_CACHE_ATOMICITY_MODE; + private CacheAtomicityMode atomicityMode = CacheConfigurationDefaults.DFLT_CACHE_ATOMICITY_MODE; /** @serial Backups. */ - private int backups = CacheConfiguration.DFLT_BACKUPS; + private int backups = CacheConfigurationDefaults.DFLT_BACKUPS; /** @serial Cache mode. */ - private CacheMode cacheMode = CacheConfiguration.DFLT_CACHE_MODE; + private CacheMode cacheMode = CacheConfigurationDefaults.DFLT_CACHE_MODE; /** @serial Eager TTL flag. */ - private boolean eagerTtl = CacheConfiguration.DFLT_EAGER_TTL; + private boolean eagerTtl = CacheConfigurationDefaults.DFLT_EAGER_TTL; /** @serial Group name. */ private String grpName = null; /** @serial Default lock timeout. */ - private long dfltLockTimeout = CacheConfiguration.DFLT_LOCK_TIMEOUT; + private long dfltLockTimeout = CacheConfigurationDefaults.DFLT_LOCK_TIMEOUT; /** @serial Partition loss policy. */ - private PartitionLossPolicy partLossPlc = CacheConfiguration.DFLT_PARTITION_LOSS_POLICY; + private PartitionLossPolicy partLossPlc = CacheConfigurationDefaults.DFLT_PARTITION_LOSS_POLICY; /** @serial Read from backup. */ - private boolean readFromBackup = CacheConfiguration.DFLT_READ_FROM_BACKUP; + private boolean readFromBackup = CacheConfigurationDefaults.DFLT_READ_FROM_BACKUP; /** @serial Rebalance batch size. */ - private int rebalanceBatchSize = IgniteConfiguration.DFLT_REBALANCE_BATCH_SIZE; + private int rebalanceBatchSize = IgniteConfigurationDefaults.DFLT_REBALANCE_BATCH_SIZE; /** @serial Rebalance batches prefetch count. */ - private long rebalanceBatchesPrefetchCnt = IgniteConfiguration.DFLT_REBALANCE_BATCHES_PREFETCH_COUNT; + private long rebalanceBatchesPrefetchCnt = IgniteConfigurationDefaults.DFLT_REBALANCE_BATCHES_PREFETCH_COUNT; /** @serial Rebalance delay. */ private long rebalanceDelay = 0; /** @serial Rebalance mode. */ - private CacheRebalanceMode rebalanceMode = CacheConfiguration.DFLT_REBALANCE_MODE; + private CacheRebalanceMode rebalanceMode = CacheConfigurationDefaults.DFLT_REBALANCE_MODE; /** @serial Rebalance order. */ private int rebalanceOrder = 0; /** @serial Rebalance throttle. */ - private long rebalanceThrottle = IgniteConfiguration.DFLT_REBALANCE_THROTTLE; + private long rebalanceThrottle = IgniteConfigurationDefaults.DFLT_REBALANCE_THROTTLE; /** @serial Rebalance timeout. */ - private long rebalanceTimeout = IgniteConfiguration.DFLT_REBALANCE_TIMEOUT; + private long rebalanceTimeout = IgniteConfigurationDefaults.DFLT_REBALANCE_TIMEOUT; /** @serial Write synchronization mode. */ private CacheWriteSynchronizationMode writeSynchronizationMode = CacheWriteSynchronizationMode.PRIMARY_SYNC; /** @serial Copy on read. */ - private boolean cpOnRead = CacheConfiguration.DFLT_COPY_ON_READ; + private boolean cpOnRead = CacheConfigurationDefaults.DFLT_COPY_ON_READ; /** @serial Data region name. */ private String dataRegionName = null; @@ -99,25 +98,25 @@ public final class ClientCacheConfiguration implements Serializable { private boolean statisticsEnabled = false; /** @serial Max concurrent async operations. */ - private int maxConcurrentAsyncOperations = CacheConfiguration.DFLT_MAX_CONCURRENT_ASYNC_OPS; + private int maxConcurrentAsyncOperations = CacheConfigurationDefaults.DFLT_MAX_CONCURRENT_ASYNC_OPS; /** @serial Max query iterators count. */ - private int maxQryIteratorsCnt = CacheConfiguration.DFLT_MAX_QUERY_ITERATOR_CNT; + private int maxQryIteratorsCnt = CacheConfigurationDefaults.DFLT_MAX_QUERY_ITERATOR_CNT; /** @serial Onheap cache enabled. */ private boolean onheapCacheEnabled = false; /** @serial Query detail metrics size. */ - private int qryDetailMetricsSize = CacheConfiguration.DFLT_QRY_DETAIL_METRICS_SIZE; + private int qryDetailMetricsSize = CacheConfigurationDefaults.DFLT_QRY_DETAIL_METRICS_SIZE; /** @serial Query parallelism. */ - private int qryParallelism = CacheConfiguration.DFLT_QUERY_PARALLELISM; + private int qryParallelism = CacheConfigurationDefaults.DFLT_QUERY_PARALLELISM; /** @serial Sql escape all. */ private boolean sqlEscapeAll = false; /** @serial Sql index max inline size. */ - private int sqlIdxMaxInlineSize = CacheConfiguration.DFLT_SQL_INDEX_MAX_INLINE_SIZE; + private int sqlIdxMaxInlineSize = CacheConfigurationDefaults.DFLT_SQL_INDEX_MAX_INLINE_SIZE; /** @serial Sql schema. */ private String sqlSchema = null; From a49de7fcedfc2560d45319bfdc67f1ba835f5b2a Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Fri, 15 May 2026 22:07:43 +0300 Subject: [PATCH 09/17] WIP --- .../CacheEntryEventSerializableFilter.java | 0 .../org/apache/ignite/cache/CachePeekMode.java | 1 - .../cache/query/AbstractContinuousQuery.java | 2 -- .../ignite/cache/query/ContinuousQuery.java | 4 ---- .../ignite/cache/query/FieldsQueryCursor.java | 0 .../org/apache/ignite/cache/query/Query.java | 5 ++--- .../apache/ignite/cache/query/QueryCursor.java | 0 .../apache/ignite/cache/query/ScanQuery.java | 1 - .../ignite/cache/query/SqlFieldsQuery.java | 5 ++--- .../CacheConfigurationDefaults.java | 3 +++ .../ignite/internal/util/CommonUtils.java | 16 ++++++++++++++++ .../org/apache/ignite/cache/query/SqlQuery.java | 3 ++- .../configuration/CacheConfiguration.java | 3 --- .../internal/processors/query/QueryUtils.java | 17 ----------------- .../org/apache/ignite/client/ClientCache.java | 0 15 files changed, 25 insertions(+), 35 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CacheEntryEventSerializableFilter.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/CachePeekMode.java (98%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java (98%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java (97%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/FieldsQueryCursor.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/Query.java (96%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/QueryCursor.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/ScanQuery.java (99%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java (98%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientCache.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryEventSerializableFilter.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheEntryEventSerializableFilter.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cache/CacheEntryEventSerializableFilter.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheEntryEventSerializableFilter.java diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CachePeekMode.java b/modules/commons/src/main/java/org/apache/ignite/cache/CachePeekMode.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/CachePeekMode.java rename to modules/commons/src/main/java/org/apache/ignite/cache/CachePeekMode.java index 108021c6eead0..ff281f546720c 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/CachePeekMode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/CachePeekMode.java @@ -17,7 +17,6 @@ package org.apache.ignite.cache; -import org.apache.ignite.IgniteCache; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java index a9391e4a98c2e..5fdbe09399ed9 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/AbstractContinuousQuery.java @@ -21,8 +21,6 @@ import javax.cache.configuration.Factory; import javax.cache.event.CacheEntryEventFilter; import javax.cache.event.EventType; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.lang.IgniteAsyncCallback; /** * Base class for continuous query. diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java similarity index 97% rename from modules/core/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java index ef76a8c2bf940..bbf5d4d410c4a 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/ContinuousQuery.java @@ -21,11 +21,7 @@ import javax.cache.configuration.Factory; import javax.cache.event.CacheEntryEventFilter; import javax.cache.event.CacheEntryUpdatedListener; -import org.apache.ignite.IgniteCache; import org.apache.ignite.cache.CacheEntryEventSerializableFilter; -import org.apache.ignite.cache.query.ContinuousQueryWithTransformer.EventListener; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.lang.IgniteAsyncCallback; /** * API for configuring continuous cache queries. diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/FieldsQueryCursor.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/FieldsQueryCursor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cache/query/FieldsQueryCursor.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/FieldsQueryCursor.java diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/Query.java similarity index 96% rename from modules/core/src/main/java/org/apache/ignite/cache/query/Query.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/Query.java index cfd58d298cd91..0d79db9e777d4 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/Query.java @@ -19,8 +19,7 @@ import java.io.Serializable; import java.util.Arrays; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.CacheConfigurationDefaults; import org.apache.ignite.internal.util.typedef.internal.A; import org.apache.ignite.internal.util.typedef.internal.S; @@ -127,7 +126,7 @@ protected int[] prepare(int[] parts) { else if (sorted) validateDups(parts[i], parts[i + 1]); - A.ensure(0 <= parts[i] && parts[i] < CacheConfiguration.MAX_PARTITIONS_COUNT, "Illegal partition"); + A.ensure(0 <= parts[i] && parts[i] < CacheConfigurationDefaults.MAX_PARTITIONS_COUNT, "Illegal partition"); } // Sort and validate again. diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/QueryCursor.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/QueryCursor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cache/query/QueryCursor.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/QueryCursor.java diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/ScanQuery.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/ScanQuery.java similarity index 99% rename from modules/core/src/main/java/org/apache/ignite/cache/query/ScanQuery.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/ScanQuery.java index abf89e158a4c3..eeef1f6052021 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/ScanQuery.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/ScanQuery.java @@ -18,7 +18,6 @@ package org.apache.ignite.cache.query; import javax.cache.Cache; -import org.apache.ignite.IgniteCache; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.lang.IgniteBiPredicate; import org.jetbrains.annotations.Nullable; diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java rename to modules/commons/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java index af4ef81fa38aa..af001e570e7c1 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java +++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java @@ -19,8 +19,7 @@ import java.util.List; import java.util.concurrent.TimeUnit; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.internal.processors.query.QueryUtils; +import org.apache.ignite.internal.util.CommonUtils; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.A; import org.apache.ignite.internal.util.typedef.internal.S; @@ -196,7 +195,7 @@ public int getTimeout() { * @return {@code this} For chaining. */ public SqlFieldsQuery setTimeout(int timeout, TimeUnit timeUnit) { - this.timeout = QueryUtils.validateTimeout(timeout, timeUnit); + this.timeout = CommonUtils.validateTimeout(timeout, timeUnit); return this; } diff --git a/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java b/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java index f5f3882ad4c34..ef940114c3e12 100644 --- a/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java +++ b/modules/commons/src/main/java/org/apache/ignite/configuration/CacheConfigurationDefaults.java @@ -69,4 +69,7 @@ public interface CacheConfigurationDefaults { /** Default maximum inline size for sql indexes. */ public static final int DFLT_SQL_INDEX_MAX_INLINE_SIZE = -1; + + /** Maximum number of partitions. */ + public static final int MAX_PARTITIONS_COUNT = 65000; } diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java index d07978e07c69a..36596da310e56 100644 --- a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java +++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java @@ -2182,6 +2182,22 @@ public static boolean isSqlType(Class cls) { return SQL_TYPES.contains(cls) || isGeometryClass(cls); } + /** + * @param timeout Timeout. + * @param timeUnit Time unit. + * @return Converted time. + */ + public static int validateTimeout(int timeout, TimeUnit timeUnit) { + A.ensure(timeUnit != TimeUnit.MICROSECONDS && timeUnit != TimeUnit.NANOSECONDS, + "timeUnit minimal resolution is millisecond."); + + A.ensure(timeout >= 0, "timeout value should be non-negative."); + + long tmp = TimeUnit.MILLISECONDS.convert(timeout, timeUnit); + + return (int)tmp; + } + /** * Creates SQL types set. * diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java index b5d0fcf15f719..64864b3510406 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java @@ -21,6 +21,7 @@ import javax.cache.Cache; import org.apache.ignite.IgniteCache; import org.apache.ignite.internal.processors.query.QueryUtils; +import org.apache.ignite.internal.util.CommonUtils; import org.apache.ignite.internal.util.tostring.GridToStringInclude; import org.apache.ignite.internal.util.typedef.internal.A; import org.apache.ignite.internal.util.typedef.internal.S; @@ -188,7 +189,7 @@ public int getTimeout() { * @return {@code this} For chaining. */ public SqlQuery setTimeout(int timeout, TimeUnit timeUnit) { - this.timeout = QueryUtils.validateTimeout(timeout, timeUnit); + this.timeout = CommonUtils.validateTimeout(timeout, timeUnit); return this; } 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 107c720de2c0b..4a8d52e81e770 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 @@ -83,9 +83,6 @@ public class CacheConfiguration extends MutableConfiguration impleme /** */ private static final long serialVersionUID = 0L; - /** Maximum number of partitions. */ - public static final int MAX_PARTITIONS_COUNT = 65000; - /** * Default size of rebalance thread pool. * @deprecated Use {@link IgniteConfiguration#DFLT_REBALANCE_THREAD_POOL_SIZE} instead. diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java index 1ead1e64a10e6..916b6ad26a3f6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java @@ -68,7 +68,6 @@ import org.apache.ignite.internal.util.CommonUtils; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.X; -import org.apache.ignite.internal.util.typedef.internal.A; import org.apache.ignite.internal.util.typedef.internal.U; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -1194,22 +1193,6 @@ public static String typeName(Class cls) { return typeName; } - /** - * @param timeout Timeout. - * @param timeUnit Time unit. - * @return Converted time. - */ - public static int validateTimeout(int timeout, TimeUnit timeUnit) { - A.ensure(timeUnit != TimeUnit.MICROSECONDS && timeUnit != TimeUnit.NANOSECONDS, - "timeUnit minimal resolution is millisecond."); - - A.ensure(timeout >= 0, "timeout value should be non-negative."); - - long tmp = TimeUnit.MILLISECONDS.convert(timeout, timeUnit); - - return (int)tmp; - } - /** * @param ccfg Cache configuration. * @return {@code true} If query index must be enabled for this cache. diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientCache.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCache.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientCache.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCache.java From 23d2437a8f7a416c1113db66108e590cee598cc2 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 22:39:41 +0300 Subject: [PATCH 10/17] WIP --- .../org/apache/ignite/configuration/BinaryConfiguration.java | 0 .../java/org/apache/ignite/client/ClientRetryAllPolicy.java | 0 .../java/org/apache/ignite/client/ClientRetryNonePolicy.java | 0 .../main/java/org/apache/ignite/client/ClientRetryPolicy.java | 0 .../java/org/apache/ignite/client/ClientRetryPolicyContext.java | 0 .../java/org/apache/ignite/client/ClientRetryReadPolicy.java | 0 .../org/apache/ignite/configuration/ClientConfiguration.java | 2 -- .../ignite/configuration/ClientTransactionConfiguration.java | 1 - 8 files changed, 3 deletions(-) rename modules/{core => binary/api}/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientRetryAllPolicy.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientRetryNonePolicy.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientRetryPolicy.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientRetryPolicyContext.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientRetryReadPolicy.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java (99%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java (98%) diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java b/modules/binary/api/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java rename to modules/binary/api/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientRetryAllPolicy.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryAllPolicy.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientRetryAllPolicy.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryAllPolicy.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientRetryNonePolicy.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryNonePolicy.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientRetryNonePolicy.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryNonePolicy.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientRetryPolicy.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryPolicy.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientRetryPolicy.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryPolicy.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientRetryPolicyContext.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryPolicyContext.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientRetryPolicyContext.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryPolicyContext.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientRetryReadPolicy.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryReadPolicy.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientRetryReadPolicy.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientRetryReadPolicy.java diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java b/modules/thin-client/api/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java similarity index 99% rename from modules/core/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java index 8badaa9fd93a8..58b99f92429dd 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/configuration/ClientConfiguration.java @@ -27,7 +27,6 @@ import javax.net.ssl.SSLContext; import org.apache.ignite.IgniteLogger; -import org.apache.ignite.cache.query.IndexQuery; import org.apache.ignite.cache.query.ScanQuery; import org.apache.ignite.client.ClientAddressFinder; import org.apache.ignite.client.ClientPartitionAwarenessMapper; @@ -37,7 +36,6 @@ import org.apache.ignite.client.ClientTransactions; import org.apache.ignite.client.SslMode; import org.apache.ignite.client.SslProtocol; -import org.apache.ignite.internal.client.thin.TcpIgniteClient; import org.apache.ignite.internal.util.typedef.internal.LT; import org.apache.ignite.internal.util.typedef.internal.S; diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java b/modules/thin-client/api/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java index fd1d50f8008a9..ddde73b1c7b75 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/configuration/ClientTransactionConfiguration.java @@ -19,7 +19,6 @@ import java.io.Serializable; import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; From c5a9be442c34ffd04380d69bda1c8ee3e119be84 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 22:41:50 +0300 Subject: [PATCH 11/17] WIP --- .../java/org/apache/ignite/client/events/ClientFailEvent.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ClientFailEvent.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ClientFailEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientFailEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ClientFailEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientFailEvent.java From 6f823f83e6b4d20648527ebb213b2f929fdb45e3 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 23:24:40 +0300 Subject: [PATCH 12/17] WIP --- .../internal/MessageSerializerGenerator.java | 6 + .../apache/ignite/cluster/BaselineNode.java | 1 - .../apache/ignite/cluster/ClusterMetrics.java | 3 - .../apache/ignite/cluster/ClusterNode.java | 2 - .../apache/ignite/cluster/ClusterState.java | 0 .../ignite/internal/IgniteNodeAttributes.java | 0 .../ignite/internal/IgniteProperties.java | 0 .../ignite/internal/IgniteVersionUtils.java | 0 .../ignite/internal/util/CommonUtils.java | 127 ++++++++++++++++++ .../ignite/lang/IgniteProductVersion.java | 21 +-- .../ignite/internal/CoreMessagesProvider.java | 2 - .../ignite/internal/util/IgniteUtils.java | 127 ------------------ .../communication/MessageReader.java | 6 + .../communication/MessageWriter.java | 11 ++ .../apache/ignite/client/ClientCluster.java | 0 .../ignite/client/ClientClusterGroup.java | 2 - 16 files changed, 156 insertions(+), 152 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/cluster/BaselineNode.java (97%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java (99%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cluster/ClusterNode.java (99%) rename modules/{core => commons}/src/main/java/org/apache/ignite/cluster/ClusterState.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/IgniteProperties.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java (94%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientCluster.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientClusterGroup.java (98%) diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java index 7874b5dcd8c42..58fb71f13cf4d 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java +++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java @@ -459,6 +459,9 @@ else if (assignableFrom(type, type("org.apache.ignite.internal.processors.cache. else if (assignableFrom(type, type("org.apache.ignite.internal.util.GridLongList"))) returnFalseIfWriteFailed(write, field, "writer.writeGridLongList", getExpr); + else if (assignableFrom(type, type("org.apache.ignite.lang.IgniteProductVersion"))) + returnFalseIfWriteFailed(write, field, "writer.writeIgniteProductVersion", getExpr); + else if (assignableFrom(type, type(MESSAGE_INTERFACE))) { if (sameType(type, COMPRESSED_MESSAGE_INTERFACE)) throw new IllegalArgumentException(COMPRESSED_MSG_ERROR); @@ -685,6 +688,9 @@ else if (assignableFrom(type, type("org.apache.ignite.internal.processors.cache. else if (assignableFrom(type, type("org.apache.ignite.internal.util.GridLongList"))) returnFalseIfReadFailed(field, "reader.readGridLongList"); + else if (assignableFrom(type, type("org.apache.ignite.lang.IgniteProductVersion"))) + returnFalseIfReadFailed(field, "reader.readIgniteProductVersion"); + else if (assignableFrom(type, type(MESSAGE_INTERFACE))) { if (sameType(type, COMPRESSED_MESSAGE_INTERFACE)) throw new IllegalArgumentException(COMPRESSED_MSG_ERROR); diff --git a/modules/core/src/main/java/org/apache/ignite/cluster/BaselineNode.java b/modules/commons/src/main/java/org/apache/ignite/cluster/BaselineNode.java similarity index 97% rename from modules/core/src/main/java/org/apache/ignite/cluster/BaselineNode.java rename to modules/commons/src/main/java/org/apache/ignite/cluster/BaselineNode.java index 9564aa01a55af..57c5f0f2bb5da 100644 --- a/modules/core/src/main/java/org/apache/ignite/cluster/BaselineNode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cluster/BaselineNode.java @@ -18,7 +18,6 @@ package org.apache.ignite.cluster; import java.util.Map; -import org.apache.ignite.configuration.IgniteConfiguration; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java b/modules/commons/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java similarity index 99% rename from modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java rename to modules/commons/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java index 326e725c0f186..7f46e9d2763e6 100644 --- a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java +++ b/modules/commons/src/main/java/org/apache/ignite/cluster/ClusterMetrics.java @@ -17,9 +17,6 @@ package org.apache.ignite.cluster; -import org.apache.ignite.IgniteCluster; -import org.apache.ignite.configuration.IgniteConfiguration; - /** * This class represents runtime information on a cluster. Apart from obvious * statistical value, this information is used for implementation of diff --git a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterNode.java b/modules/commons/src/main/java/org/apache/ignite/cluster/ClusterNode.java similarity index 99% rename from modules/core/src/main/java/org/apache/ignite/cluster/ClusterNode.java rename to modules/commons/src/main/java/org/apache/ignite/cluster/ClusterNode.java index bc698c38889ea..1aa43fbbfc0c5 100644 --- a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterNode.java +++ b/modules/commons/src/main/java/org/apache/ignite/cluster/ClusterNode.java @@ -21,8 +21,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.ignite.Ignite; -import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.internal.IgniteNodeAttributes; import org.apache.ignite.lang.IgniteExperimental; import org.apache.ignite.lang.IgniteProductVersion; diff --git a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterState.java b/modules/commons/src/main/java/org/apache/ignite/cluster/ClusterState.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/cluster/ClusterState.java rename to modules/commons/src/main/java/org/apache/ignite/cluster/ClusterState.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java rename to modules/commons/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteProperties.java b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteProperties.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/IgniteProperties.java rename to modules/commons/src/main/java/org/apache/ignite/internal/IgniteProperties.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java rename to modules/commons/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java index 36596da310e56..e87513b9b0aae 100644 --- a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java +++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java @@ -241,6 +241,9 @@ public abstract class CommonUtils { /** Field name for value. */ public static final String VAL_FIELD_NAME = "_VAL"; + /** Byte bit-mask. */ + private static final int MASK = 0xf; + /** */ private static final Set> SQL_TYPES = createSqlTypes(); @@ -1692,6 +1695,43 @@ else if (utfBytes == 3) { return strBuilder.toString(); } + /** + * Writes byte array to output stream accounting for null values. + * + * @param out Output stream to write to. + * @param arr Array to write, possibly null. + * @throws java.io.IOException If write failed. + */ + public static void writeByteArray(DataOutput out, @Nullable byte[] arr) throws IOException { + if (arr == null) + out.writeInt(-1); + else { + out.writeInt(arr.length); + + out.write(arr); + } + } + + /** + * Reads byte array from input stream accounting for null values. + * + * @param in Stream to read from. + * @return Read byte array, possibly null. + * @throws java.io.IOException If read failed. + */ + @Nullable public static byte[] readByteArray(DataInput in) throws IOException { + int len = in.readInt(); + + if (len == -1) + return null; // Value "-1" indicates null. + + byte[] res = new byte[len]; + + in.readFully(res); + + return res; + } + /** * Get number of bytes for {@link DataOutput#writeUTF}, * depending on character:
@@ -2198,6 +2238,93 @@ public static int validateTimeout(int timeout, TimeUnit timeUnit) { return (int)tmp; } + /** + * Converts byte array to hex string. + * + * @param arr Array of bytes. + * @return Hex string. + */ + public static String byteArray2HexString(byte[] arr) { + return byteArray2HexString(arr, true); + } + + /** + * Converts byte array to hex string. + * + * @param arr Array of bytes. + * @param toUpper If {@code true} returns upper cased result. + * @return Hex string. + */ + public static String byteArray2HexString(byte[] arr, boolean toUpper) { + StringBuilder sb = new StringBuilder(arr.length << 1); + + for (byte b : arr) + addByteAsHex(sb, b); + + return toUpper ? sb.toString().toUpperCase() : sb.toString(); + } + + /** + * @param sb String builder. + * @param b Byte to add in hexadecimal format. + */ + protected static void addByteAsHex(StringBuilder sb, byte b) { + sb.append(Integer.toHexString(MASK & b >>> 4)).append(Integer.toHexString(MASK & b)); + } + + /** + * Converts an array of characters representing hexidecimal values into an + * array of bytes of those same values. The returned array will be half the + * length of the passed array, as it takes two characters to represent any + * given byte. An exception is thrown if the passed char array has an odd + * number of elements. + * + * @param data An array of characters containing hexidecimal digits + * @return A byte array containing binary data decoded from + * the supplied char array. + * @throws IgniteCheckedException Thrown if an odd number or illegal of characters is supplied. + */ + public static byte[] decodeHex(char[] data) throws IgniteCheckedException { + int len = data.length; + + if ((len & 0x01) != 0) + throw new IgniteCheckedException("Odd number of characters."); + + byte[] out = new byte[len >> 1]; + + // Two characters form the hex value. + for (int i = 0, j = 0; j < len; i++) { + int f = toDigit(data[j], j) << 4; + + j++; + + f |= toDigit(data[j], j); + + j++; + + out[i] = (byte)(f & 0xFF); + } + + return out; + } + + /** + * Converts a hexadecimal character to an integer. + * + * @param ch A character to convert to an integer digit + * @param idx The index of the character in the source + * @return An integer + * @throws IgniteCheckedException Thrown if ch is an illegal hex character + */ + public static int toDigit(char ch, int idx) throws IgniteCheckedException { + int digit = Character.digit(ch, 16); + + if (digit == -1) + throw new IgniteCheckedException("Illegal hexadecimal character " + ch + " at index " + idx); + + return digit; + } + /** * Creates SQL types set. * diff --git a/modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java b/modules/commons/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java similarity index 94% rename from modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java rename to modules/commons/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java index b4177fcfd7810..23f4d3171c5f6 100644 --- a/modules/core/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java +++ b/modules/commons/src/main/java/org/apache/ignite/lang/IgniteProductVersion.java @@ -25,11 +25,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.internal.CoreMessagesProvider; import org.apache.ignite.internal.IgniteVersionUtils; -import org.apache.ignite.internal.Order; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.plugin.extensions.communication.Message; +import org.apache.ignite.internal.util.CommonUtils; import org.jetbrains.annotations.NotNull; /** @@ -40,7 +37,7 @@ * Two versions are compared in the following order: major number, * minor number, maintenance number, revision timestamp. */ -public class IgniteProductVersion implements Comparable, Externalizable, Message { +public class IgniteProductVersion implements Comparable, Externalizable { /** */ private static final long serialVersionUID = 0L; @@ -55,27 +52,21 @@ public class IgniteProductVersion implements Comparable, E Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)([-.]([^0123456789][^-]+)(-SNAPSHOT)?)?(-(\\d+))?(-([\\da-f]+))?"); /** Major version number. */ - @Order(0) byte major; /** Minor version number. */ - @Order(1) byte minor; /** Maintenance version number. */ - @Order(2) byte maintenance; /** Stage of development. */ - @Order(3) String stage; /** Revision timestamp. */ - @Order(4) long revTs; /** Revision hash. */ - @Order(5) byte[] revHash; /** @@ -262,7 +253,7 @@ public int compareToIgnoreTimestamp(@NotNull IgniteProductVersion o) { out.writeByte(minor); out.writeByte(maintenance); out.writeLong(revTs); - U.writeByteArray(out, revHash); + CommonUtils.writeByteArray(out, revHash); } /** {@inheritDoc} */ @@ -271,14 +262,14 @@ public int compareToIgnoreTimestamp(@NotNull IgniteProductVersion o) { minor = in.readByte(); maintenance = in.readByte(); revTs = in.readLong(); - revHash = U.readByteArray(in); + revHash = CommonUtils.readByteArray(in); } /** {@inheritDoc} */ @Override public String toString() { String revTsStr = IgniteVersionUtils.formatBuildTimeStamp(revTs * 1000); - String hash = U.byteArray2HexString(revHash).toLowerCase(); + String hash = CommonUtils.byteArray2HexString(revHash).toLowerCase(); hash = hash.length() > 8 ? hash.substring(0, 8) : hash; @@ -318,7 +309,7 @@ public static IgniteProductVersion fromString(String verStr) { byte[] revHash = null; if (match.group(9) != null) - revHash = U.decodeHex(match.group(10).toCharArray()); + revHash = CommonUtils.decodeHex(match.group(10).toCharArray()); return new IgniteProductVersion(major, minor, maintenance, stage, revTs, revHash); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java b/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java index f1f7883ea1961..3e4492cd0ca50 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java @@ -238,7 +238,6 @@ import org.apache.ignite.internal.util.distributed.FullMessage; import org.apache.ignite.internal.util.distributed.InitMessage; import org.apache.ignite.internal.util.distributed.SingleNodeMessage; -import org.apache.ignite.lang.IgniteProductVersion; import org.apache.ignite.marshaller.Marshaller; import org.apache.ignite.marshaller.jdk.JdkMarshaller; import org.apache.ignite.plugin.extensions.communication.Message; @@ -344,7 +343,6 @@ public CoreMessagesProvider(Marshaller dfltMarsh, Marshaller schemaAwareMarsh, C withNoSchema(InetSocketAddressMessage.class); withNoSchema(InetAddressMessage.class); withNoSchema(TcpDiscoveryNode.class); - withNoSchema(IgniteProductVersion.class); withNoSchema(DiscoveryDataPacket.class); withNoSchema(GridByteArrayList.class); withNoSchema(CacheVersionedValue.class); 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 050f6b21299a4..1513346138589 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 @@ -356,9 +356,6 @@ public abstract class IgniteUtils extends CommonUtils { /** Default buffer size = 4K. */ private static final int BUF_SIZE = 4096; - /** Byte bit-mask. */ - private static final int MASK = 0xf; - /** Long date format pattern for log messages. */ public static final DateTimeFormatter LONG_DATE_FMT = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss").withZone(ZoneId.systemDefault()); @@ -1789,23 +1786,6 @@ public static boolean hasParent(@Nullable ClassLoader parent, ClassLoader ldr) { return true; } - /** - * Writes byte array to output stream accounting for null values. - * - * @param out Output stream to write to. - * @param arr Array to write, possibly null. - * @throws java.io.IOException If write failed. - */ - public static void writeByteArray(DataOutput out, @Nullable byte[] arr) throws IOException { - if (arr == null) - out.writeInt(-1); - else { - out.writeInt(arr.length); - - out.write(arr); - } - } - /** * Writes byte array to output stream accounting for null values. * @@ -1825,26 +1805,6 @@ public static void writeByteArray(DataOutput out, @Nullable byte[] arr, int maxL } } - /** - * Reads byte array from input stream accounting for null values. - * - * @param in Stream to read from. - * @return Read byte array, possibly null. - * @throws java.io.IOException If read failed. - */ - @Nullable public static byte[] readByteArray(DataInput in) throws IOException { - int len = in.readInt(); - - if (len == -1) - return null; // Value "-1" indicates null. - - byte[] res = new byte[len]; - - in.readFully(res); - - return res; - } - /** * Join byte arrays into single one. * @@ -2192,42 +2152,6 @@ public static boolean bytesEqual(byte[] a, int aOff, byte[] b, int bOff, int len } } - /** - * Converts an array of characters representing hexidecimal values into an - * array of bytes of those same values. The returned array will be half the - * length of the passed array, as it takes two characters to represent any - * given byte. An exception is thrown if the passed char array has an odd - * number of elements. - * - * @param data An array of characters containing hexidecimal digits - * @return A byte array containing binary data decoded from - * the supplied char array. - * @throws IgniteCheckedException Thrown if an odd number or illegal of characters is supplied. - */ - public static byte[] decodeHex(char[] data) throws IgniteCheckedException { - int len = data.length; - - if ((len & 0x01) != 0) - throw new IgniteCheckedException("Odd number of characters."); - - byte[] out = new byte[len >> 1]; - - // Two characters form the hex value. - for (int i = 0, j = 0; j < len; i++) { - int f = toDigit(data[j], j) << 4; - - j++; - - f |= toDigit(data[j], j); - - j++; - - out[i] = (byte)(f & 0xFF); - } - - return out; - } - /** * @param bytes Number of bytes to display. * @param si If {@code true}, then unit base is 1000, otherwise unit base is 1024. @@ -2744,40 +2668,6 @@ public static URL resolveSpringUrl(String springCfgPath) throws IgniteCheckedExc return null; } - /** - * Converts byte array to hex string. - * - * @param arr Array of bytes. - * @return Hex string. - */ - public static String byteArray2HexString(byte[] arr) { - return byteArray2HexString(arr, true); - } - - /** - * Converts byte array to hex string. - * - * @param arr Array of bytes. - * @param toUpper If {@code true} returns upper cased result. - * @return Hex string. - */ - public static String byteArray2HexString(byte[] arr, boolean toUpper) { - StringBuilder sb = new StringBuilder(arr.length << 1); - - for (byte b : arr) - addByteAsHex(sb, b); - - return toUpper ? sb.toString().toUpperCase() : sb.toString(); - } - - /** - * @param sb String builder. - * @param b Byte to add in hexadecimal format. - */ - private static void addByteAsHex(StringBuilder sb, byte b) { - sb.append(Integer.toHexString(MASK & b >>> 4)).append(Integer.toHexString(MASK & b)); - } - /** * Checks for containment of the value in the array. * Both array cells and value may be {@code null}. Two {@code null}s are considered equal. @@ -6403,23 +6293,6 @@ public static IgniteCheckedException exceptionWithSuppressed(String msg, @Nullab return e; } - /** - * Converts a hexadecimal character to an integer. - * - * @param ch A character to convert to an integer digit - * @param idx The index of the character in the source - * @return An integer - * @throws IgniteCheckedException Thrown if ch is an illegal hex character - */ - public static int toDigit(char ch, int idx) throws IgniteCheckedException { - int digit = Character.digit(ch, 16); - - if (digit == -1) - throw new IgniteCheckedException("Illegal hexadecimal character " + ch + " at index " + idx); - - return digit; - } - /** * Gets oldest node out of collection of nodes. * diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java index f2190a1e86a41..08adcf1febb84 100644 --- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java +++ b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java @@ -26,6 +26,7 @@ import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.KeyCacheObject; import org.apache.ignite.internal.util.GridLongList; +import org.apache.ignite.lang.IgniteProductVersion; import org.apache.ignite.lang.IgniteUuid; /** @@ -270,6 +271,11 @@ public default T readMessage() { */ public > M readMap(MessageMapType type, boolean compress); + /** @return Ignite product version. */ + default IgniteProductVersion readIgniteProductVersion() { + return null; + } + /** * Tells whether last invocation of any of {@code readXXX(...)} * methods has fully written the value. {@code False} is returned diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java index c29e3ac093db9..02a6cff137da9 100644 --- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java +++ b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java @@ -26,6 +26,7 @@ import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.KeyCacheObject; import org.apache.ignite.internal.util.GridLongList; +import org.apache.ignite.lang.IgniteProductVersion; import org.apache.ignite.lang.IgniteUuid; import org.jetbrains.annotations.Nullable; @@ -328,6 +329,16 @@ public default boolean writeMap(Map map, MessageMapType type) { */ public boolean writeMap(Map map, MessageMapType type, boolean compress); + /** + * Writes ignite product version. + * + * @param ver Version. + * @return Whether value was fully written. + */ + default boolean writeIgniteProductVersion(IgniteProductVersion ver) { + return true; + } + /** * @return Whether header of current message is already written. */ diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientCluster.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCluster.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientCluster.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCluster.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientClusterGroup.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientClusterGroup.java similarity index 98% rename from modules/core/src/main/java/org/apache/ignite/client/ClientClusterGroup.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientClusterGroup.java index 01f8d31ebb2cc..bde1c9b54083b 100644 --- a/modules/core/src/main/java/org/apache/ignite/client/ClientClusterGroup.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientClusterGroup.java @@ -20,9 +20,7 @@ import java.util.Collection; import java.util.UUID; import java.util.function.Predicate; -import org.apache.ignite.Ignition; import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.configuration.IgniteConfiguration; import org.jetbrains.annotations.Nullable; /** From 39c12ac33719e5db3aba8fb93e2cab548825c4a3 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 23:25:28 +0300 Subject: [PATCH 13/17] WIP --- .../src/main/java/org/apache/ignite/client/ClientCompute.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientCompute.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientCompute.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCompute.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientCompute.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCompute.java From b883442227c9f817bfedcb2ccdfec2cf63ec84b2 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 23:28:22 +0300 Subject: [PATCH 14/17] WIP --- .../internal/processors/service/ServiceCallContextImpl.java | 0 .../main/java/org/apache/ignite/services/ServiceCallContext.java | 0 .../org/apache/ignite/services/ServiceCallContextBuilder.java | 0 .../src/main/java/org/apache/ignite/client/ClientServices.java | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename modules/{core => commons}/src/main/java/org/apache/ignite/internal/processors/service/ServiceCallContextImpl.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/services/ServiceCallContext.java (100%) rename modules/{core => commons}/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/ClientServices.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceCallContextImpl.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/service/ServiceCallContextImpl.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceCallContextImpl.java rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/service/ServiceCallContextImpl.java diff --git a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContext.java b/modules/commons/src/main/java/org/apache/ignite/services/ServiceCallContext.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/services/ServiceCallContext.java rename to modules/commons/src/main/java/org/apache/ignite/services/ServiceCallContext.java diff --git a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java b/modules/commons/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java rename to modules/commons/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/ClientServices.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientServices.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/ClientServices.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientServices.java From 56a788ade962042770234f73e95135a47c5d53c5 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 23:31:55 +0300 Subject: [PATCH 15/17] WIP --- .../api}/src/main/java/org/apache/ignite/IgniteBinary.java | 0 .../src/main/java/org/apache/ignite/client/ClientCompute.java | 1 - .../src/main/java/org/apache/ignite/client/IgniteClient.java | 0 .../ignite/client/events/ClientLifecycleEventListener.java | 0 .../java/org/apache/ignite/client/events/ClientStartEvent.java | 0 .../java/org/apache/ignite/client/events/ClientStopEvent.java | 0 .../src/main/java/org/apache/ignite/client/package-info.java | 0 7 files changed, 1 deletion(-) rename modules/{core => binary/api}/src/main/java/org/apache/ignite/IgniteBinary.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/IgniteClient.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ClientLifecycleEventListener.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ClientStartEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/events/ClientStopEvent.java (100%) rename modules/{core => thin-client/api}/src/main/java/org/apache/ignite/client/package-info.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteBinary.java b/modules/binary/api/src/main/java/org/apache/ignite/IgniteBinary.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/IgniteBinary.java rename to modules/binary/api/src/main/java/org/apache/ignite/IgniteBinary.java diff --git a/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCompute.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCompute.java index d97b99197efdf..ab307c44169b7 100644 --- a/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCompute.java +++ b/modules/thin-client/api/src/main/java/org/apache/ignite/client/ClientCompute.java @@ -18,7 +18,6 @@ package org.apache.ignite.client; import java.util.concurrent.Future; -import org.apache.ignite.compute.ComputeTask; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/core/src/main/java/org/apache/ignite/client/IgniteClient.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/IgniteClient.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/IgniteClient.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/IgniteClient.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ClientLifecycleEventListener.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientLifecycleEventListener.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ClientLifecycleEventListener.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientLifecycleEventListener.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ClientStartEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientStartEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ClientStartEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientStartEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/events/ClientStopEvent.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientStopEvent.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/events/ClientStopEvent.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/events/ClientStopEvent.java diff --git a/modules/core/src/main/java/org/apache/ignite/client/package-info.java b/modules/thin-client/api/src/main/java/org/apache/ignite/client/package-info.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/client/package-info.java rename to modules/thin-client/api/src/main/java/org/apache/ignite/client/package-info.java From f357bbb40501b3fee319fd30001d5c1a3f9756b9 Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Mon, 18 May 2026 23:53:43 +0300 Subject: [PATCH 16/17] WIP --- assembly/dependencies-apache-ignite-lgpl.xml | 1 + assembly/dependencies-apache-ignite-slim.xml | 1 + assembly/dependencies-apache-ignite.xml | 1 + modules/bom/pom.xml | 5 ++ modules/core/pom.xml | 9 ++- modules/thin-client/impl/pom.xml | 75 +++++++++++++++++++ .../client/thin/BinaryNameMapperMode.java | 0 .../client/thin/ClientCacheEntry.java | 0 .../client/thin/ClientNotificationType.java | 0 .../client/thin/ClientProtocolError.java | 0 .../client/thin/FieldsQueryPager.java | 0 .../client/thin/IgniteClientFutureImpl.java | 0 .../client/thin/NotificationListener.java | 0 .../internal/client/thin/ProtocolVersion.java | 0 .../internal/client/thin/QueryPager.java | 0 .../client/thin/io/ClientConnection.java | 0 .../thin/io/ClientConnectionMultiplexer.java | 0 .../thin/io/ClientConnectionStateHandler.java | 0 .../client/thin/io/ClientMessageDecoder.java | 0 .../client/thin/io/ClientMessageHandler.java | 0 pom.xml | 1 + 21 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 modules/thin-client/impl/pom.xml rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java (100%) diff --git a/assembly/dependencies-apache-ignite-lgpl.xml b/assembly/dependencies-apache-ignite-lgpl.xml index ac3d35c972a66..6a12956482793 100644 --- a/assembly/dependencies-apache-ignite-lgpl.xml +++ b/assembly/dependencies-apache-ignite-lgpl.xml @@ -119,6 +119,7 @@ ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl ${project.groupId}:ignite-thin-client-api + ${project.groupId}:ignite-thin-client-impl ${project.groupId}:ignite-clients ${project.groupId}:ignite-spring ${project.groupId}:ignite-tools diff --git a/assembly/dependencies-apache-ignite-slim.xml b/assembly/dependencies-apache-ignite-slim.xml index f113444139b1a..537d5c55beae4 100644 --- a/assembly/dependencies-apache-ignite-slim.xml +++ b/assembly/dependencies-apache-ignite-slim.xml @@ -119,6 +119,7 @@ ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl ${project.groupId}:ignite-thin-client-api + ${project.groupId}:ignite-thin-client-impl ${project.groupId}:ignite-clients ${project.groupId}:ignite-spring ${project.groupId}:ignite-tools diff --git a/assembly/dependencies-apache-ignite.xml b/assembly/dependencies-apache-ignite.xml index 5952320cba9b2..208fbe8eda207 100644 --- a/assembly/dependencies-apache-ignite.xml +++ b/assembly/dependencies-apache-ignite.xml @@ -120,6 +120,7 @@ ${project.groupId}:ignite-binary-api ${project.groupId}:ignite-binary-impl ${project.groupId}:ignite-thin-client-api + ${project.groupId}:ignite-thin-client-impl ${project.groupId}:ignite-clients ${project.groupId}:ignite-spring ${project.groupId}:ignite-tools diff --git a/modules/bom/pom.xml b/modules/bom/pom.xml index e14c89f779b55..865b97ca23582 100644 --- a/modules/bom/pom.xml +++ b/modules/bom/pom.xml @@ -186,6 +186,11 @@ ignite-thin-client-api ${revision} + + ${project.groupId} + ignite-thin-client-impl + ${revision} + ${project.groupId} ignite-codegen diff --git a/modules/core/pom.xml b/modules/core/pom.xml index eac0fa9940024..f440bbace970d 100644 --- a/modules/core/pom.xml +++ b/modules/core/pom.xml @@ -72,7 +72,7 @@ ${project.groupId} ignite-binary-impl - compile + runtime @@ -81,6 +81,12 @@ compile + + ${project.groupId} + ignite-thin-client-impl + compile + + ${project.groupId} ignite-codegen @@ -360,6 +366,7 @@ ${project.groupId}:ignite-binary-impl ${project.groupId}:ignite-grid-unsafe ${project.groupId}:ignite-thin-client-api + ${project.groupId}:ignite-thin-client-impl diff --git a/modules/thin-client/impl/pom.xml b/modules/thin-client/impl/pom.xml new file mode 100644 index 0000000000000..772e79f6d51e9 --- /dev/null +++ b/modules/thin-client/impl/pom.xml @@ -0,0 +1,75 @@ + + + + + + + 4.0.0 + + + org.apache.ignite + ignite-parent-internal + ${revision} + ../../../parent-internal/pom.xml + + + ignite-thin-client-impl + + http://ignite.apache.org + + + + ${project.groupId} + ignite-commons + provided + + + + ${project.groupId} + ignite-binary-api + provided + + + + ${project.groupId} + ignite-thin-client-api + provided + + + + org.jetbrains + annotations + ${jetbrains.annotations.version} + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + false + + + + + diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java diff --git a/pom.xml b/pom.xml index df249427c22fe..f84aaa792e262 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ modules/binary/api modules/binary/impl modules/thin-client/api + modules/thin-client/impl modules/unsafe modules/core modules/compress From 1a58cfb83e5e8a98c1e46ef89d4d3f0ef8705e6b Mon Sep 17 00:00:00 2001 From: Nikolay Izhikov Date: Tue, 19 May 2026 11:18:38 +0300 Subject: [PATCH 17/17] WIP --- .../ignite/internal/client/thin/ClientFieldsQueryCursor.java | 0 .../apache/ignite/internal/client/thin/ClientJCacheAdapter.java | 0 .../internal/client/thin/ClientJCacheEntryListenerAdapter.java | 0 .../org/apache/ignite/internal/client/thin/ClientOperation.java | 0 .../org/apache/ignite/internal/client/thin/ClientQueryCursor.java | 0 .../ignite/internal/client/thin/ClientRetryPolicyContextImpl.java | 0 .../org/apache/ignite/internal/client/thin/ProtocolContext.java | 0 .../ignite/internal/client/thin/ProtocolVersionFeature.java | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java (100%) rename modules/{core => thin-client/impl}/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java (100%) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java similarity index 100% rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java