This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 7183a728656 IGNITE-25090 Move binary classes to binary-api (#12362)
7183a728656 is described below
commit 7183a7286564e4ce915ef2cf9151ec13f7c63611
Author: Nikolay <[email protected]>
AuthorDate: Wed Sep 24 13:44:03 2025 +0300
IGNITE-25090 Move binary classes to binary-api (#12362)
---
modules/binary/api/pom.xml | 7 ++
.../internal/UnregisteredBinaryTypeException.java | 11 +--
.../binary/BinaryAbstractIdentityResolver.java | 0
.../apache/ignite/internal/binary/BinaryArray.java | 0
.../binary/BinaryArrayIdentityResolver.java | 0
.../binary/BinaryCachingMetadataHandler.java | 0
.../internal/binary/BinaryClassDescriptor.java | 11 +--
.../ignite/internal/binary/BinaryContext.java | 2 +-
.../internal/binary/BinaryContextHolder.java | 0
.../ignite/internal/binary/BinaryEnumArray.java | 0
.../ignite/internal/binary/BinaryEnumCache.java | 0
.../internal/binary/BinaryEnumObjectImpl.java | 8 +-
.../internal/binary/BinaryFieldAccessor.java | 0
.../ignite/internal/binary/BinaryFieldImpl.java | 0
.../internal/binary/BinaryFieldMetadata.java | 0
.../internal/binary/BinaryIdentityResolver.java | 0
.../internal/binary/BinaryInternalMapper.java | 0
.../ignite/internal/binary/BinaryMarshaller.java | 0
.../ignite/internal/binary/BinaryMetadata.java | 0
.../internal/binary/BinaryMetadataCollector.java | 0
.../internal/binary/BinaryMetadataHandler.java | 3 +-
.../internal/binary/BinaryMethodWriteReplacer.java | 0
.../internal/binary/BinaryNoopMetadataHandler.java | 0
.../ignite/internal/binary/BinaryObjectEx.java | 0
.../ignite/internal/binary/BinaryObjectExImpl.java | 0
.../ignite/internal/binary/BinaryObjectImpl.java | 10 +-
.../internal/binary/BinaryObjectOffheapImpl.java | 0
.../ignite/internal/binary/BinaryPrimitives.java | 0
.../ignite/internal/binary/BinaryReaderEx.java | 0
.../ignite/internal/binary/BinaryReaderExImpl.java | 0
.../internal/binary/BinaryReaderHandles.java | 0
.../internal/binary/BinaryReaderHandlesHolder.java | 0
.../binary/BinaryReaderHandlesHolderImpl.java | 0
.../ignite/internal/binary/BinarySchema.java | 0
.../internal/binary/BinarySchemaRegistry.java | 0
.../binary/BinarySerializedFieldComparator.java | 0
.../internal/binary/BinaryThreadLocalContext.java | 0
.../ignite/internal/binary/BinaryTreeMap.java | 0
.../binary/BinaryTreeMapWriteReplacer.java | 0
.../ignite/internal/binary/BinaryTreeSet.java | 0
.../binary/BinaryTreeSetWriteReplacer.java | 0
.../ignite/internal/binary/BinaryTypeImpl.java | 0
.../ignite/internal/binary/BinaryTypeProxy.java | 0
.../apache/ignite/internal/binary/BinaryUtils.java | 35 ++++---
.../ignite/internal/binary/BinaryWriteMode.java | 0
.../internal/binary/BinaryWriteReplacer.java | 0
.../ignite/internal/binary/BinaryWriterEx.java | 0
.../ignite/internal/binary/BinaryWriterExImpl.java | 0
.../internal/binary/BinaryWriterHandles.java | 0
.../internal/binary/BinaryWriterSchemaHolder.java | 0
.../binary/CrossObjectReferenceResolver.java | 0
.../internal/binary/GridBinaryMarshaller.java | 14 ++-
.../ignite/internal/binary/ObjectDetachHelper.java | 0
.../internal/binary/RawBinaryObjectExtractor.java | 0
.../binary/builder/BinaryAbstractLazyValue.java | 0
.../internal/binary/builder/BinaryBuilderEnum.java | 0
.../binary/builder/BinaryBuilderReader.java | 0
.../builder/BinaryBuilderSerializationAware.java | 0
.../binary/builder/BinaryBuilderSerializer.java | 0
.../binary/builder/BinaryEnumArrayLazyValue.java | 0
.../binary/builder/BinaryLazyArrayList.java | 0
.../binary/builder/BinaryLazyLinkedList.java | 0
.../internal/binary/builder/BinaryLazyMap.java | 0
.../internal/binary/builder/BinaryLazySet.java | 0
.../internal/binary/builder/BinaryLazyValue.java | 0
.../binary/builder/BinaryModifiableLazyValue.java | 0
.../binary/builder/BinaryObjectArrayLazyValue.java | 0
.../binary/builder/BinaryObjectBuilderImpl.java | 0
.../binary/builder/BinaryObjectBuilders.java | 0
.../binary/builder/BinaryPlainBinaryObject.java | 0
.../binary/builder/BinaryPlainLazyValue.java | 0
.../binary/builder/BinaryValueWithType.java | 0
...imizedMarshallerInaccessibleClassException.java | 0
.../internal/processors/cache/CacheObject.java | 9 +-
.../processors/cache/CacheObjectUtils.java | 110 ++++++++++++++++++++-
.../processors/cache/CacheObjectValueContext.java | 5 +-
.../internal/processors/cache/KeyCacheObject.java | 0
.../org/apache/ignite/platform/PlatformType.java | 0
.../ignite/IgniteCommonsSystemProperties.java | 40 ++++++++
.../ignite/internal/GridDirectTransient.java | 2 +-
.../ignite/internal/IgniteInternalFuture.java | 0
.../apache/ignite/internal/util/CommonUtils.java | 13 +++
.../ignite/internal/util/MutableSingletonList.java | 0
.../org/apache/ignite/IgniteSystemProperties.java | 39 --------
.../java/org/apache/ignite/cache/QueryEntity.java | 6 +-
.../ignite/internal/GridKernalContextImpl.java | 5 +
.../cache/query/index/sorted/IndexKeyType.java | 3 +-
.../processors/cache/CacheObjectAdapter.java | 110 +--------------------
.../processors/cache/CacheObjectByteArrayImpl.java | 8 +-
.../internal/processors/cache/CacheObjectImpl.java | 5 +
.../wal/reader/StandaloneGridKernalContext.java | 6 ++
.../processors/platform/PlatformContextImpl.java | 2 +-
.../internal/processors/query/QueryUtils.java | 15 +--
.../processors/security/IgniteSecurityAdapter.java | 32 +++++-
.../cache/AbstractDataTypesCoverageTest.java | 2 +-
.../cache/IgniteIncompleteCacheObjectSelfTest.java | 4 +-
.../sandbox/IgniteOperationsInsideSandboxTest.java | 5 +
.../java/org/apache/ignite/dump/JsonArrayTest.java | 2 +-
.../apache/ignite/internal/pagemem/PageUtils.java | 0
.../internal/util/offheap/GridOffHeapEvent.java | 0
.../util/offheap/GridOffHeapEventListener.java | 0
.../offheap/GridOffHeapOutOfMemoryException.java | 0
.../util/offheap/unsafe/GridUnsafeMemory.java | 6 +-
103 files changed, 298 insertions(+), 232 deletions(-)
diff --git a/modules/binary/api/pom.xml b/modules/binary/api/pom.xml
index 65d79c7a212..ec8c662bb79 100644
--- a/modules/binary/api/pom.xml
+++ b/modules/binary/api/pom.xml
@@ -41,6 +41,13 @@
<scope>provided</scope>
</dependency>
+ <!-- TODO: remove me after extraction of implementation -->
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-grid-unsafe</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/UnregisteredBinaryTypeException.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/UnregisteredBinaryTypeException.java
similarity index 90%
rename from
modules/core/src/main/java/org/apache/ignite/internal/UnregisteredBinaryTypeException.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/UnregisteredBinaryTypeException.java
index de507be5405..49360862e81 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/UnregisteredBinaryTypeException.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/UnregisteredBinaryTypeException.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.binary.BinaryMetadata;
-import org.apache.ignite.internal.util.future.GridFutureAdapter;
/**
* Exception thrown during serialization if binary metadata isn't registered
and it's registration isn't allowed.
@@ -38,7 +37,7 @@ public class UnregisteredBinaryTypeException extends
IgniteException {
"dev-list. Debug info [typeId=%d, binaryMetadata=%s, fut=%s]";
/** */
- private static String createMessage(int typeId, BinaryMetadata
binaryMetadata, GridFutureAdapter<?> fut) {
+ private static String createMessage(int typeId, BinaryMetadata
binaryMetadata, IgniteInternalFuture<?> fut) {
return String.format(MESSAGE, typeId, binaryMetadata, fut);
}
@@ -49,7 +48,7 @@ public class UnregisteredBinaryTypeException extends
IgniteException {
private final BinaryMetadata binaryMetadata;
/** */
- private final GridFutureAdapter<?> fut;
+ private final IgniteInternalFuture<?> fut;
/**
* @param typeId Type ID.
@@ -63,7 +62,7 @@ public class UnregisteredBinaryTypeException extends
IgniteException {
* @param typeId Type ID.
* @param fut Future to wait in handler.
*/
- public UnregisteredBinaryTypeException(int typeId, GridFutureAdapter<?>
fut) {
+ public UnregisteredBinaryTypeException(int typeId, IgniteInternalFuture<?>
fut) {
this(typeId, null, fut);
}
@@ -72,7 +71,7 @@ public class UnregisteredBinaryTypeException extends
IgniteException {
* @param binaryMetadata Binary metadata.
* @param fut Future to wait in handler.
*/
- private UnregisteredBinaryTypeException(int typeId, BinaryMetadata
binaryMetadata, GridFutureAdapter<?> fut) {
+ private UnregisteredBinaryTypeException(int typeId, BinaryMetadata
binaryMetadata, IgniteInternalFuture<?> fut) {
super(createMessage(typeId, binaryMetadata, fut));
this.typeId = typeId;
@@ -97,7 +96,7 @@ public class UnregisteredBinaryTypeException extends
IgniteException {
/**
* @return Future to wait in handler.
*/
- public GridFutureAdapter<?> future() {
+ public IgniteInternalFuture<?> future() {
return fut;
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryAbstractIdentityResolver.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryAbstractIdentityResolver.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryAbstractIdentityResolver.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryAbstractIdentityResolver.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryArray.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArrayIdentityResolver.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryArrayIdentityResolver.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryArrayIdentityResolver.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryArrayIdentityResolver.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryCachingMetadataHandler.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryCachingMetadataHandler.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryCachingMetadataHandler.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryCachingMetadataHandler.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
similarity index 98%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
index ce3a05dd8d4..d8f2c428231 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
@@ -44,8 +44,7 @@ import org.apache.ignite.binary.Binarylizable;
import org.apache.ignite.internal.UnregisteredBinaryTypeException;
import org.apache.ignite.internal.UnregisteredClassException;
import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
-import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
-import org.apache.ignite.internal.processors.query.QueryUtils;
+import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -54,7 +53,6 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.marshaller.MarshallerExclusions;
import org.jetbrains.annotations.Nullable;
-import static
org.apache.ignite.internal.processors.query.QueryUtils.isGeometryClass;
import static org.apache.ignite.internal.util.CommonUtils.isLambda;
/**
@@ -202,7 +200,7 @@ class BinaryClassDescriptor {
initialSerializer = serializer;
// If serializer is not defined at this point, then we have to use
OptimizedMarshaller.
- useOptMarshaller = serializer == null || isGeometryClass(cls);
+ useOptMarshaller = serializer == null ||
CommonUtils.isGeometryClass(cls);
// Reset reflective serializer so that we rely on existing
reflection-based serialization.
if (serializer instanceof BinaryReflectiveSerializer)
@@ -233,7 +231,7 @@ class BinaryClassDescriptor {
mode = serializer != null ? BinaryWriteMode.BINARY :
BinaryUtils.mode(cls);
}
- if (useOptMarshaller && userType && !CommonUtils.isIgnite(cls) &&
!CommonUtils.isJdk(cls) && !QueryUtils.isGeometryClass(cls)) {
+ if (useOptMarshaller && userType && !CommonUtils.isIgnite(cls) &&
!CommonUtils.isJdk(cls) && !CommonUtils.isGeometryClass(cls)) {
CommonUtils.warnDevOnly(ctx.log(), "Class \"" + cls.getName() +
"\" cannot be serialized using " +
BinaryMarshaller.class.getSimpleName() + " because it either
implements Externalizable interface " +
"or have writeObject/readObject methods. " +
OptimizedMarshaller.class.getSimpleName() + " will be " +
@@ -1066,8 +1064,9 @@ class BinaryClassDescriptor {
* @param obj Object.
*/
private void postWriteHashCode(BinaryWriterExImpl writer, Object obj) {
+ boolean postWriteRequired = !(obj instanceof CacheObject) ||
((CacheObject)obj).postWriteRequired();
// No need to call "postWriteHashCode" here because we do not care
about hash code.
- if (!(obj instanceof CacheObjectImpl))
+ if (postWriteRequired)
writer.postWriteHashCode(registered ? null : cls.getName());
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
similarity index 99%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index 6101c0aa2e6..151254243c6 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -1200,7 +1200,7 @@ public class BinaryContext {
*
* @param typeId Type ID.
* @param clsName Class Name.
- * @param failIfUnregistered If {@code true} then throw {@link
UnregisteredBinaryTypeException} with {@link
+ * @param failIfUnregistered If {@code true} then throw {@link
UnregisteredBinaryTypeException} with {@code
* org.apache.ignite.internal.processors.marshaller.MappingExchangeResult}
future instead of synchronously awaiting
* for its completion.
* @param onlyLocReg Whether to register only on the current node.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContextHolder.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContextHolder.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContextHolder.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContextHolder.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumArray.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumCache.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
similarity index 97%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index bed1815de78..08e928b1955 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -28,7 +28,7 @@ import org.apache.ignite.binary.BinaryObjectBuilder;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.CacheObjectAdapter;
+import org.apache.ignite.internal.processors.cache.CacheObjectUtils;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
@@ -38,7 +38,7 @@ import org.apache.ignite.marshaller.Marshallers;
import org.jetbrains.annotations.Nullable;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static
org.apache.ignite.internal.processors.cache.CacheObjectAdapter.objectPutSize;
+import static
org.apache.ignite.internal.processors.cache.CacheObjectUtils.objectPutSize;
/**
* Binary enum object.
@@ -342,12 +342,12 @@ class BinaryEnumObjectImpl implements BinaryObjectEx,
Externalizable, CacheObjec
@Override public int putValue(long addr) throws IgniteCheckedException {
assert valBytes != null : "Value bytes must be initialized before
object is stored";
- return CacheObjectAdapter.putValue(addr, cacheObjectType(), valBytes);
+ return CacheObjectUtils.putValue(addr, cacheObjectType(), valBytes);
}
/** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, int off, int len)
throws IgniteCheckedException {
- return CacheObjectAdapter.putValue(cacheObjectType(), buf, off, len,
valBytes, 0);
+ return CacheObjectUtils.putValue(cacheObjectType(), buf, off, len,
valBytes, 0);
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryFieldImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldMetadata.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryFieldMetadata.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldMetadata.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryFieldMetadata.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryIdentityResolver.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryIdentityResolver.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryIdentityResolver.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryIdentityResolver.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryInternalMapper.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryInternalMapper.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryInternalMapper.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryInternalMapper.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataCollector.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataCollector.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataCollector.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataCollector.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataHandler.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataHandler.java
similarity index 94%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataHandler.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataHandler.java
index 36e8f457d24..557a4f314c3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataHandler.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMetadataHandler.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.binary;
import java.util.Collection;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryType;
-import
org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage;
/**
* Binary metadata handler.
@@ -28,7 +27,7 @@ import
org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposed
public interface BinaryMetadataHandler {
/**
* Adds a new or updates an existing metadata to the latest version.
- * See {@link MetadataUpdateProposedMessage} javadoc for detailed protocol
description.
+ * See {@code MetadataUpdateProposedMessage} javadoc for detailed protocol
description.
*
* @param typeId Type ID.
* @param meta Metadata.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMethodWriteReplacer.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMethodWriteReplacer.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMethodWriteReplacer.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMethodWriteReplacer.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryNoopMetadataHandler.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryNoopMetadataHandler.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryNoopMetadataHandler.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryNoopMetadataHandler.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
similarity index 98%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index 0c9fa15f50e..aef10000644 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -35,7 +35,7 @@ import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.CacheObjectAdapter;
+import org.apache.ignite.internal.processors.cache.CacheObjectUtils;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.util.GridUnsafe;
@@ -197,22 +197,22 @@ final class BinaryObjectImpl extends BinaryObjectExImpl
implements Externalizabl
/** {@inheritDoc} */
@Override public boolean putValue(ByteBuffer buf) throws
IgniteCheckedException {
- return putValue(buf, 0,
CacheObjectAdapter.objectPutSize(valBytes.length));
+ return putValue(buf, 0,
CacheObjectUtils.objectPutSize(valBytes.length));
}
/** {@inheritDoc} */
@Override public int putValue(long addr) throws IgniteCheckedException {
- return CacheObjectAdapter.putValue(addr, cacheObjectType(), valBytes,
0, valBytes.length);
+ return CacheObjectUtils.putValue(addr, cacheObjectType(), valBytes, 0,
valBytes.length);
}
/** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, int off, int len)
throws IgniteCheckedException {
- return CacheObjectAdapter.putValue(cacheObjectType(), buf, off, len,
valBytes, 0);
+ return CacheObjectUtils.putValue(cacheObjectType(), buf, off, len,
valBytes, 0);
}
/** {@inheritDoc} */
@Override public int valueBytesLength(CacheObjectValueContext ctx) throws
IgniteCheckedException {
- return CacheObjectAdapter.objectPutSize(valBytes.length);
+ return CacheObjectUtils.objectPutSize(valBytes.length);
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryPrimitives.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryPrimitives.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryPrimitives.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryPrimitives.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolder.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolder.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolder.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolder.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolderImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolderImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolderImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandlesHolderImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySerializedFieldComparator.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinarySerializedFieldComparator.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySerializedFieldComparator.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinarySerializedFieldComparator.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryThreadLocalContext.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryThreadLocalContext.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryThreadLocalContext.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryThreadLocalContext.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMap.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMapWriteReplacer.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMapWriteReplacer.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMapWriteReplacer.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeMapWriteReplacer.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSet.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSet.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSet.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSet.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSetWriteReplacer.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSetWriteReplacer.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSetWriteReplacer.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTreeSetWriteReplacer.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTypeImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTypeImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTypeImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTypeImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTypeProxy.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTypeProxy.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryTypeProxy.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryTypeProxy.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
similarity index 98%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index c8a3692e381..690e6c91f30 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -56,11 +56,12 @@ import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.function.Function;
+import java.util.function.IntFunction;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.binary.BinaryCollectionFactory;
import org.apache.ignite.binary.BinaryInvalidTypeException;
import org.apache.ignite.binary.BinaryMapFactory;
@@ -72,7 +73,6 @@ import
org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
-import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.MutableSingletonList;
@@ -85,8 +85,9 @@ import org.apache.ignite.platform.PlatformType;
import org.jetbrains.annotations.Nullable;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_USE_BINARY_ARRAYS;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.DFLT_IGNITE_USE_BINARY_ARRAYS;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_USE_BINARY_ARRAYS;
import static org.apache.ignite.internal.util.GridUnsafe.align;
/**
@@ -109,15 +110,12 @@ public class BinaryUtils {
private static final Collection<Class<?>> IMMUTABLE_CLS = new HashSet<>();
/** */
- public static final boolean USE_STR_SERIALIZATION_VER_2 =
IgniteSystemProperties.getBoolean(
+ public static final boolean USE_STR_SERIALIZATION_VER_2 =
IgniteCommonsSystemProperties.getBoolean(
IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2, false);
- /** Default value of {@link
IgniteSystemProperties#IGNITE_USE_BINARY_ARRAYS}. */
- public static final boolean DFLT_IGNITE_USE_BINARY_ARRAYS = false;
-
- /** Value of {@link IgniteSystemProperties#IGNITE_USE_BINARY_ARRAYS}. */
+ /** Value of {@link
IgniteCommonsSystemProperties#IGNITE_USE_BINARY_ARRAYS}. */
private static boolean USE_BINARY_ARRAYS =
- IgniteSystemProperties.getBoolean(IGNITE_USE_BINARY_ARRAYS,
DFLT_IGNITE_USE_BINARY_ARRAYS);
+ IgniteCommonsSystemProperties.getBoolean(IGNITE_USE_BINARY_ARRAYS,
DFLT_IGNITE_USE_BINARY_ARRAYS);
/** Map from class to associated write replacer. */
private static final Map<Class, BinaryWriteReplacer> CLS_TO_WRITE_REPLACER
= Map.of(
@@ -170,7 +168,7 @@ public class BinaryUtils {
/** Whether to sort field in binary objects (doesn't affect
Binarylizable). */
public static boolean FIELDS_SORTED_ORDER =
-
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_BINARY_SORT_OBJECT_FIELDS);
+
IgniteCommonsSystemProperties.getBoolean(IgniteCommonsSystemProperties.IGNITE_BINARY_SORT_OBJECT_FIELDS);
/** Field type names. */
private static final String[] FIELD_TYPE_NAMES;
@@ -2758,18 +2756,19 @@ public class BinaryUtils {
/**
* Gets the schema.
*
- * @param cacheObjProc Cache object processor.
+ * @param ctx Binary context.
+ * @param metadataProvider Function to provide binary type metadata.
* @param typeId Type id.
* @param schemaId Schema id.
*/
- public static int[] getSchema(IgniteCacheObjectProcessor cacheObjProc, int
typeId, int schemaId) {
- assert cacheObjProc != null;
+ public static int[] getSchema(BinaryContext ctx, IntFunction<BinaryType>
metadataProvider, int typeId, int schemaId) {
+ assert ctx != null;
- BinarySchemaRegistry schemaReg =
cacheObjProc.binaryContext().schemaRegistry(typeId);
+ BinarySchemaRegistry schemaReg = ctx.schemaRegistry(typeId);
BinarySchema schema = schemaReg.schema(schemaId);
if (schema == null) {
- BinaryTypeImpl meta =
(BinaryTypeImpl)cacheObjProc.metadata(typeId);
+ BinaryTypeImpl meta =
(BinaryTypeImpl)metadataProvider.apply(typeId);
if (meta != null) {
for (BinarySchema typeSchema : meta.metadata().schemas()) {
@@ -2989,12 +2988,12 @@ public class BinaryUtils {
/**
* Initialize {@link #USE_BINARY_ARRAYS} value with
- * {@link IgniteSystemProperties#IGNITE_USE_BINARY_ARRAYS} system property
value.
+ * {@link IgniteCommonsSystemProperties#IGNITE_USE_BINARY_ARRAYS} system
property value.
*
* This method invoked using reflection in tests.
*/
public static void initUseBinaryArrays() {
- USE_BINARY_ARRAYS =
IgniteSystemProperties.getBoolean(IGNITE_USE_BINARY_ARRAYS,
DFLT_IGNITE_USE_BINARY_ARRAYS);
+ USE_BINARY_ARRAYS =
IgniteCommonsSystemProperties.getBoolean(IGNITE_USE_BINARY_ARRAYS,
DFLT_IGNITE_USE_BINARY_ARRAYS);
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteReplacer.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriteReplacer.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteReplacer.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriteReplacer.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterHandles.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterSchemaHolder.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterSchemaHolder.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterSchemaHolder.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryWriterSchemaHolder.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/CrossObjectReferenceResolver.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/CrossObjectReferenceResolver.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/CrossObjectReferenceResolver.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/CrossObjectReferenceResolver.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
similarity index 97%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
index 774a781b88d..311c629b553 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
@@ -20,9 +20,9 @@ package org.apache.ignite.internal.binary;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
+import java.util.function.Supplier;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.internal.IgnitionEx;
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
@@ -38,6 +38,9 @@ public class GridBinaryMarshaller {
private static final ThreadLocal<BinaryContextHolder> BINARY_CTX =
ThreadLocal.withInitial(BinaryContextHolder::new);
+ /** Binary context supplier. */
+ private static Supplier<BinaryContext> BINARY_CTX_SUPPLIER;
+
/** */
public static final byte TRANSFORMED = -3;
@@ -470,6 +473,13 @@ public class GridBinaryMarshaller {
return ctx;
}
+ /**
+ * @param supplier Context supplier.
+ */
+ public static void binaryContextSupplier(Supplier<BinaryContext> supplier)
{
+ BINARY_CTX_SUPPLIER = supplier;
+ }
+
/**
* @return Thread-bound context.
*/
@@ -477,7 +487,7 @@ public class GridBinaryMarshaller {
BinaryContext ctx = BINARY_CTX.get().get();
if (ctx == null)
- return
IgnitionEx.localIgnite().context().cacheObjects().binaryContext();
+ return BINARY_CTX_SUPPLIER.get();
return ctx;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/ObjectDetachHelper.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/ObjectDetachHelper.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/ObjectDetachHelper.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/ObjectDetachHelper.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractor.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractor.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractor.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractor.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryAbstractLazyValue.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryAbstractLazyValue.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryAbstractLazyValue.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryAbstractLazyValue.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderEnum.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializationAware.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializationAware.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializationAware.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializationAware.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderSerializer.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryEnumArrayLazyValue.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyArrayList.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyArrayList.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyArrayList.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyArrayList.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyLinkedList.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyLinkedList.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyLinkedList.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyLinkedList.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyMap.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyMap.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyMap.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyMap.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazySet.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazySet.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazySet.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazySet.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyValue.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyValue.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyValue.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryLazyValue.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryModifiableLazyValue.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryModifiableLazyValue.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryModifiableLazyValue.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryModifiableLazyValue.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectArrayLazyValue.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilders.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilders.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilders.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilders.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainBinaryObject.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainBinaryObject.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainBinaryObject.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainBinaryObject.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainLazyValue.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainLazyValue.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainLazyValue.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryPlainLazyValue.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryValueWithType.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryValueWithType.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryValueWithType.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/builder/BinaryValueWithType.java
diff --git
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
similarity index 100%
rename from
modules/binary/impl/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerInaccessibleClassException.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
similarity index 94%
rename from
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
index eefd03e0841..09e7a8d5a0e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
@@ -101,7 +101,7 @@ public interface CacheObject {
/**
* Gets flag indicating whether object value is a platform type. Platform
types will be automatically
* deserialized on public API cache operations regardless whether
- * {@link org.apache.ignite.IgniteCache#withKeepBinary()} is used or not.
+ * {@code org.apache.ignite.IgniteCache#withKeepBinary()} is used or not.
*
* @return Platform type flag.
*/
@@ -127,4 +127,11 @@ public interface CacheObject {
* @throws IgniteCheckedException If failed.
*/
public void prepareMarshal(CacheObjectValueContext ctx) throws
IgniteCheckedException;
+
+ /**
+ * @return {@code True} if postWriteHashCode call required, {@code false}
otherwise.
+ */
+ public default boolean postWriteRequired() {
+ return true;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
similarity index 68%
rename from
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
index 5b247e5acf2..aab48ffed1a 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
@@ -17,20 +17,26 @@
package org.apache.ignite.internal.processors.cache;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
+import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.internal.binary.BinaryUtils;
+import org.apache.ignite.internal.pagemem.PageUtils;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.MutableSingletonList;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
/**
* Cache object utility methods.
*/
public class CacheObjectUtils {
+ /** Head size. */
+ protected static final int HEAD_SIZE = 5; // 4 bytes len + 1 byte type
+
/**
* @param o Object to unwrap.
* @param keepBinary Keep binary flag.
@@ -102,7 +108,7 @@ public class CacheObjectUtils {
for (Object obj : col)
col0.add(unwrapBinary(ctx, obj, keepBinary, cpy, null));
- return (col0 instanceof MutableSingletonList) ?
U.convertToSingletonList(col0) : col0;
+ return (col0 instanceof MutableSingletonList) ?
CommonUtils.convertToSingletonList(col0) : col0;
}
/**
@@ -210,6 +216,106 @@ public class CacheObjectUtils {
return o;
}
+ /**
+ * @param dataLen Serialized value length.
+ * @return Full size required to store cache object.
+ * @see #putValue(byte, ByteBuffer, int, int, byte[], int)
+ */
+ public static int objectPutSize(int dataLen) {
+ return dataLen + HEAD_SIZE;
+ }
+
+ /**
+ * @param addr Write address.
+ * @param type Object type.
+ * @param valBytes Value bytes array.
+ * @return Offset shift compared to initial address.
+ */
+ public static int putValue(long addr, byte type, byte[] valBytes) {
+ return putValue(addr, type, valBytes, 0, valBytes.length);
+ }
+
+ /**
+ * @param addr Write address.
+ * @param type Object type.
+ * @param srcBytes Source value bytes array.
+ * @param srcOff Start position in sourceBytes.
+ * @param len Number of bytes for write.
+ * @return Offset shift compared to initial address.
+ */
+ public static int putValue(long addr, byte type, byte[] srcBytes, int
srcOff, int len) {
+ int off = 0;
+
+ PageUtils.putInt(addr, off, len);
+ off += 4;
+
+ PageUtils.putByte(addr, off, type);
+ off++;
+
+ PageUtils.putBytes(addr, off, srcBytes, srcOff, len);
+ off += len;
+
+ return off;
+ }
+
+ /**
+ * @param cacheObjType Cache object type.
+ * @param buf Buffer to write value to.
+ * @param off Offset in source binary data.
+ * @param len Length of the data to write.
+ * @param valBytes Binary data.
+ * @param start Start offset in binary data.
+ * @return {@code True} if data were successfully written.
+ * @throws IgniteCheckedException If failed.
+ */
+ public static boolean putValue(byte cacheObjType,
+ final ByteBuffer buf,
+ int off,
+ int len,
+ byte[] valBytes,
+ final int start
+ ) throws IgniteCheckedException {
+ int dataLen = valBytes.length;
+
+ if (buf.remaining() < len)
+ return false;
+
+ if (off == 0 && len >= HEAD_SIZE) {
+ buf.putInt(dataLen);
+ buf.put(cacheObjType);
+
+ len -= HEAD_SIZE;
+ }
+ else if (off >= HEAD_SIZE)
+ off -= HEAD_SIZE;
+ else {
+ // Partial header write.
+ final ByteBuffer head = ByteBuffer.allocate(HEAD_SIZE);
+
+ head.order(buf.order());
+
+ head.putInt(dataLen);
+ head.put(cacheObjType);
+
+ head.position(off);
+
+ if (len < head.capacity())
+ head.limit(off + Math.min(len, head.capacity() - off));
+
+ buf.put(head);
+
+ if (head.limit() < HEAD_SIZE)
+ return true;
+
+ len -= HEAD_SIZE - off;
+ off = 0;
+ }
+
+ buf.put(valBytes, start + off, len);
+
+ return true;
+ }
+
/**
* Private constructor.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
similarity index 94%
rename from
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
index edefa2672ad..453e2fb795b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.binary.BinaryContext;
-import
org.apache.ignite.internal.cache.transform.CacheObjectTransformerProcessor;
import org.jetbrains.annotations.Nullable;
/**
@@ -99,7 +98,7 @@ public interface CacheObjectValueContext {
public boolean isPeerClassLoadingEnabled();
/**
- * Transforms bytes according to {@link CacheObjectTransformerProcessor}
when specified.
+ * Transforms bytes according to {@code CacheObjectTransformerProcessor}
when specified.
* @param bytes Given bytes.
* @return Transformed bytes.
*/
@@ -108,7 +107,7 @@ public interface CacheObjectValueContext {
}
/**
- * Transforms bytes according to {@link CacheObjectTransformerProcessor}
when specified.
+ * Transforms bytes according to {@code CacheObjectTransformerProcessor}
when specified.
* @param bytes Given bytes.
* @param offset Index to start from.
* @param length Data length.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObject.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObject.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObject.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObject.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/platform/PlatformType.java
b/modules/binary/api/src/main/java/org/apache/ignite/platform/PlatformType.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/platform/PlatformType.java
rename to
modules/binary/api/src/main/java/org/apache/ignite/platform/PlatformType.java
diff --git
a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
index bafe987218f..6aa8c01e957 100644
---
a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
+++
b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
@@ -34,6 +34,9 @@ import static
org.apache.ignite.internal.util.tostring.GridToStringBuilder.DFLT_
* These properties and variables can be used to affect the behavior of Ignite.
*/
public class IgniteCommonsSystemProperties {
+ /** Default value of {@link
IgniteCommonsSystemProperties#IGNITE_USE_BINARY_ARRAYS}. */
+ public static final boolean DFLT_IGNITE_USE_BINARY_ARRAYS = false;
+
/**
* Setting to {@code true} enables writing sensitive information in {@code
toString()} output.
*/
@@ -113,6 +116,43 @@ public class IgniteCommonsSystemProperties {
@SystemProperty(value = "Defines Ignite installation folder", type =
String.class, defaults = "")
public static final String IGNITE_HOME = "IGNITE_HOME";
+ /**
+ * Manages type of serialization mechanism for {@link String} that is
marshalled/unmarshalled by BinaryMarshaller.
+ * Should be used for cases when a String contains a surrogate symbol
without its pair one. This is frequently used
+ * in algorithms that encrypts data in String format.
+ */
+ @SystemProperty("Manages type of serialization mechanism for String that
is " +
+ "marshalled/unmarshalled by BinaryMarshaller. Should be used for cases
when a String contains a surrogate " +
+ "symbol without its pair one. This is frequently used in algorithms
that encrypts data in String format")
+ public static final String
IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2 =
+ "IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2";
+
+ /**
+ * Enables storage of typed arrays.
+ * The default value is {@code BinaryUtils#DFLT_IGNITE_USE_BINARY_ARRAYS}.
+ */
+ @SystemProperty(value = "Flag to enable store of array in binary format
and keep component type",
+ defaults = "" + DFLT_IGNITE_USE_BINARY_ARRAYS)
+ public static final String IGNITE_USE_BINARY_ARRAYS =
"IGNITE_USE_BINARY_ARRAYS";
+
+ /**
+ * When set to {@code true} fields are written by BinaryMarshaller in
sorted order. Otherwise
+ * the natural order is used.
+ * <p>
+ * NOTICE: Should be the default in Apache Ignite 3.0
+ */
+ @SystemProperty("Enables fields to be written by BinaryMarshaller in
sorted order. " +
+ "By default, the natural order is used")
+ public static final String IGNITE_BINARY_SORT_OBJECT_FIELDS =
"IGNITE_BINARY_SORT_OBJECT_FIELDS";
+
+ /**
+ * Flag that will force Ignite to fill memory block with some recognisable
pattern right before
+ * this memory block is released. This will help to recognize cases when
already released memory is accessed.
+ */
+ @SystemProperty("Force Ignite to fill memory block with some recognisable
pattern right before this " +
+ "memory block is released. This will help to recognize cases when
already released memory is accessed")
+ public static final String IGNITE_OFFHEAP_SAFE_RELEASE =
"IGNITE_OFFHEAP_SAFE_RELEASE";
+
/**
* @param enumCls Enum type.
* @param name Name of the system property or environment variable.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
b/modules/commons/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
similarity index 94%
rename from
modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
index 29e1c4e7239..88f9f9527d5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
+++
b/modules/commons/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
@@ -24,7 +24,7 @@ import java.lang.annotation.Target;
/**
* Annotates transient fields.
- * Deprecated, see {@link Order} and {@link MessageProcessor} for details.
+ * Deprecated, see {@code Order} and {@code MessageProcessor} for details.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.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 3cadcdae1d2..ef31895a40c 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
@@ -219,6 +219,9 @@ public abstract class CommonUtils {
private static final ConcurrentMap<ClassLoader, ConcurrentMap<String,
Class>> classCache =
new ConcurrentHashMap<>();
+ /** */
+ private static final Class<?> GEOMETRY_CLASS =
classForName("org.locationtech.jts.geom.Geometry", null);
+
static {
primitiveMap.put("byte", byte.class);
primitiveMap.put("short", short.class);
@@ -2108,4 +2111,14 @@ public abstract class CommonUtils {
return new IgniteException(e.getMessage(), e);
}
+
+ /**
+ * Checks if the given class is GEOMETRY.
+ *
+ * @param cls Class.
+ * @return {@code true} If this is geometry.
+ */
+ public static boolean isGeometryClass(Class<?> cls) {
+ return GEOMETRY_CLASS != null && GEOMETRY_CLASS.isAssignableFrom(cls);
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/MutableSingletonList.java
b/modules/commons/src/main/java/org/apache/ignite/internal/util/MutableSingletonList.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/MutableSingletonList.java
rename to
modules/commons/src/main/java/org/apache/ignite/internal/util/MutableSingletonList.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 1b013c1ce53..b8be84ddb73 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -32,7 +32,6 @@ import
org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.configuration.DiskPageCompression;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.binary.BinaryUtils;
import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineRecommender;
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointEntry;
import
org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointMarkersStorage;
@@ -55,7 +54,6 @@ import static
org.apache.ignite.internal.IgniteKernal.DFLT_LONG_OPERATIONS_DUMP_
import static
org.apache.ignite.internal.LongJVMPauseDetector.DEFAULT_JVM_PAUSE_DETECTOR_THRESHOLD;
import static
org.apache.ignite.internal.LongJVMPauseDetector.DFLT_JVM_PAUSE_DETECTOR_LAST_EVENTS_COUNT;
import static
org.apache.ignite.internal.LongJVMPauseDetector.DFLT_JVM_PAUSE_DETECTOR_PRECISION;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_IGNITE_USE_BINARY_ARRAYS;
import static
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineRecommender.DFLT_THROTTLE_INLINE_SIZE_CALCULATION;
import static
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.DFLT_DISCOVERY_HISTORY_SIZE;
import static
org.apache.ignite.internal.processors.affinity.AffinityAssignment.DFLT_AFFINITY_BACKUPS_THRESHOLD;
@@ -510,14 +508,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
"than specified by this property", type = Integer.class, defaults =
"512")
public static final String IGNITE_MIN_BUFFERED_COMMUNICATION_MSG_CNT =
"IGNITE_MIN_BUFFERED_COMMUNICATION_MSG_CNT";
- /**
- * Flag that will force Ignite to fill memory block with some recognisable
pattern right before
- * this memory block is released. This will help to recognize cases when
already released memory is accessed.
- */
- @SystemProperty("Force Ignite to fill memory block with some recognisable
pattern right before this " +
- "memory block is released. This will help to recognize cases when
already released memory is accessed")
- public static final String IGNITE_OFFHEAP_SAFE_RELEASE =
"IGNITE_OFFHEAP_SAFE_RELEASE";
-
/** Maximum size for atomic cache queue delete history (default is 200 000
entries per partition). */
@SystemProperty(value = "Maximum size for atomic cache queue delete
history",
type = Integer.class, defaults = "" +
DFLT_ATOMIC_CACHE_DELETE_HISTORY_SIZE + " per partition")
@@ -827,17 +817,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
@SystemProperty("Enables local store keeps primary only. Backward
compatibility flag")
public static final String IGNITE_LOCAL_STORE_KEEPS_PRIMARY_ONLY =
"IGNITE_LOCAL_STORE_KEEPS_PRIMARY_ONLY";
- /**
- * Manages type of serialization mechanism for {@link String} that is
marshalled/unmarshalled by BinaryMarshaller.
- * Should be used for cases when a String contains a surrogate symbol
without its pair one. This is frequently used
- * in algorithms that encrypts data in String format.
- */
- @SystemProperty("Manages type of serialization mechanism for String that
is " +
- "marshalled/unmarshalled by BinaryMarshaller. Should be used for cases
when a String contains a surrogate " +
- "symbol without its pair one. This is frequently used in algorithms
that encrypts data in String format")
- public static final String
IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2 =
- "IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2";
-
/** Defines path to the file that contains list of classes allowed to safe
deserialization.*/
@SystemProperty(value = "Path to the file that contains list of classes
allowed to safe deserialization",
type = String.class)
@@ -955,16 +934,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
defaults = "" + DFLT_IO_BALANCE_PERIOD)
public static final String IGNITE_IO_BALANCE_PERIOD =
"IGNITE_IO_BALANCE_PERIOD";
- /**
- * When set to {@code true} fields are written by BinaryMarshaller in
sorted order. Otherwise
- * the natural order is used.
- * <p>
- * NOTICE: Should be the default in Apache Ignite 3.0
- */
- @SystemProperty("Enables fields to be written by BinaryMarshaller in
sorted order. " +
- "By default, the natural order is used")
- public static final String IGNITE_BINARY_SORT_OBJECT_FIELDS =
"IGNITE_BINARY_SORT_OBJECT_FIELDS";
-
/**
* When set to {@code true} BinaryObject will be unwrapped before passing
to IndexingSpi to preserve
* old behavior query processor with IndexingSpi.
@@ -1976,14 +1945,6 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
type = Integer.class, defaults = "" +
DFLT_THROTTLE_INLINE_SIZE_CALCULATION)
public static final String IGNITE_THROTTLE_INLINE_SIZE_CALCULATION =
"IGNITE_THROTTLE_INLINE_SIZE_CALCULATION";
- /**
- * Enables storage of typed arrays.
- * The default value is {@link BinaryUtils#DFLT_IGNITE_USE_BINARY_ARRAYS}.
- */
- @SystemProperty(value = "Flag to enable store of array in binary format
and keep component type",
- defaults = "" + DFLT_IGNITE_USE_BINARY_ARRAYS)
- public static final String IGNITE_USE_BINARY_ARRAYS =
"IGNITE_USE_BINARY_ARRAYS";
-
/**
* Flag to indicate that disk writes during snapshot process should be in
a sequential manner when possible. This
* generates extra disk space usage.
diff --git
a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
b/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
index aa4f2b70a55..35a63290913 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
@@ -813,11 +813,11 @@ public class QueryEntity implements Serializable {
*/
private static void processAnnotationsInClass(boolean key, Class<?> cls,
QueryEntityTypeDescriptor type,
@Nullable QueryEntityClassProperty parent) {
- if (U.isJdk(cls) || QueryUtils.isGeometryClass(cls)) {
+ 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";
- type.addIndex(idxName, QueryUtils.isGeometryClass(cls) ?
+ type.addIndex(idxName, U.isGeometryClass(cls) ?
QueryIndexType.GEOSPATIAL : QueryIndexType.SORTED,
QueryIndex.DFLT_INLINE_SIZE);
type.addFieldToIndex(idxName, QueryUtils.VAL_FIELD_NAME, 0,
false);
@@ -896,7 +896,7 @@ public class QueryEntity implements Serializable {
if (cls != curCls)
idxName = cls.getSimpleName() + "_" + idxName;
- desc.addIndex(idxName, QueryUtils.isGeometryClass(prop.type())
?
+ desc.addIndex(idxName, U.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/internal/GridKernalContextImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 2fd4474d2dc..5d8ae5d4af9 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@ -39,6 +39,7 @@ import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.failure.FailureType;
import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.binary.GridBinaryMarshaller;
import org.apache.ignite.internal.cache.query.index.IndexProcessor;
import
org.apache.ignite.internal.cache.transform.CacheObjectTransformerProcessor;
import org.apache.ignite.internal.maintenance.MaintenanceProcessor;
@@ -121,6 +122,10 @@ import static
org.apache.ignite.internal.IgniteComponentType.SPRING;
*/
@GridToStringExclude
public class GridKernalContextImpl implements GridKernalContext,
Externalizable {
+ static {
+ GridBinaryMarshaller.binaryContextSupplier(() ->
IgnitionEx.localIgnite().context().cacheObjects().binaryContext());
+ }
+
/** */
private static final long serialVersionUID = 0L;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/IndexKeyType.java
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/IndexKeyType.java
index 838acace5d0..b75a1d85076 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/IndexKeyType.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/IndexKeyType.java
@@ -31,7 +31,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.typedef.internal.U;
/**
@@ -245,7 +244,7 @@ public enum IndexKeyType {
// This includes String[] and so on.
return ARRAY;
}
- else if (QueryUtils.isGeometryClass(cls))
+ else if (U.isGeometryClass(cls))
return GEOMETRY;
else if (LocalDate.class == cls)
return DATE;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index 357a0ea726a..522ae7d5b0f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -24,11 +24,12 @@ import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.binary.BinaryUtils;
-import org.apache.ignite.internal.pagemem.PageUtils;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
+import static
org.apache.ignite.internal.processors.cache.CacheObjectUtils.objectPutSize;
+
/**
*
*/
@@ -36,9 +37,6 @@ public abstract class CacheObjectAdapter implements
CacheObject, Externalizable
/** */
private static final long serialVersionUID = 2006765505127197251L;
- /** Head size. */
- protected static final int HEAD_SIZE = 5; // 4 bytes len + 1 byte type
-
/** */
@GridToStringInclude(sensitive = true)
protected Object val;
@@ -100,47 +98,14 @@ public abstract class CacheObjectAdapter implements
CacheObject, Externalizable
@Override public int putValue(long addr) throws IgniteCheckedException {
assert valBytes != null : "Value bytes must be initialized before
object is stored";
- return putValue(addr, cacheObjectType(), valBytes);
- }
-
- /**
- * @param addr Write address.
- * @param type Object type.
- * @param valBytes Value bytes array.
- * @return Offset shift compared to initial address.
- */
- public static int putValue(long addr, byte type, byte[] valBytes) {
- return putValue(addr, type, valBytes, 0, valBytes.length);
- }
-
- /**
- * @param addr Write address.
- * @param type Object type.
- * @param srcBytes Source value bytes array.
- * @param srcOff Start position in sourceBytes.
- * @param len Number of bytes for write.
- * @return Offset shift compared to initial address.
- */
- public static int putValue(long addr, byte type, byte[] srcBytes, int
srcOff, int len) {
- int off = 0;
-
- PageUtils.putInt(addr, off, len);
- off += 4;
-
- PageUtils.putByte(addr, off, type);
- off++;
-
- PageUtils.putBytes(addr, off, srcBytes, srcOff, len);
- off += len;
-
- return off;
+ return CacheObjectUtils.putValue(addr, cacheObjectType(), valBytes);
}
/** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, int off, int len)
throws IgniteCheckedException {
assert valBytes != null : "Value bytes must be initialized before
object is stored";
- return putValue(cacheObjectType(), buf, off, len, valBytes, 0);
+ return CacheObjectUtils.putValue(cacheObjectType(), buf, off, len,
valBytes, 0);
}
/** {@inheritDoc} */
@@ -157,71 +122,4 @@ public abstract class CacheObjectAdapter implements
CacheObject, Externalizable
"val", val, true,
"hasValBytes", valBytes != null, false);
}
-
- /**
- * @param dataLen Serialized value length.
- * @return Full size required to store cache object.
- * @see #putValue(byte, ByteBuffer, int, int, byte[], int)
- */
- public static int objectPutSize(int dataLen) {
- return dataLen + HEAD_SIZE;
- }
-
- /**
- * @param cacheObjType Cache object type.
- * @param buf Buffer to write value to.
- * @param off Offset in source binary data.
- * @param len Length of the data to write.
- * @param valBytes Binary data.
- * @param start Start offset in binary data.
- * @return {@code True} if data were successfully written.
- * @throws IgniteCheckedException If failed.
- */
- public static boolean putValue(byte cacheObjType,
- final ByteBuffer buf,
- int off,
- int len,
- byte[] valBytes,
- final int start
- ) throws IgniteCheckedException {
- int dataLen = valBytes.length;
-
- if (buf.remaining() < len)
- return false;
-
- if (off == 0 && len >= HEAD_SIZE) {
- buf.putInt(dataLen);
- buf.put(cacheObjType);
-
- len -= HEAD_SIZE;
- }
- else if (off >= HEAD_SIZE)
- off -= HEAD_SIZE;
- else {
- // Partial header write.
- final ByteBuffer head = ByteBuffer.allocate(HEAD_SIZE);
-
- head.order(buf.order());
-
- head.putInt(dataLen);
- head.put(cacheObjType);
-
- head.position(off);
-
- if (len < head.capacity())
- head.limit(off + Math.min(len, head.capacity() - off));
-
- buf.put(head);
-
- if (head.limit() < HEAD_SIZE)
- return true;
-
- len -= HEAD_SIZE - off;
- off = 0;
- }
-
- buf.put(valBytes, start + off, len);
-
- return true;
- }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
index 7a0fc222d33..5c7c3f25cfa 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
@@ -81,24 +81,24 @@ public class CacheObjectByteArrayImpl implements
CacheObject, Externalizable {
@Override public boolean putValue(ByteBuffer buf) throws
IgniteCheckedException {
assert val != null : "Value is not initialized";
- return putValue(buf, 0, CacheObjectAdapter.objectPutSize(val.length));
+ return putValue(buf, 0, CacheObjectUtils.objectPutSize(val.length));
}
/** {@inheritDoc} */
@Override public int putValue(long addr) throws IgniteCheckedException {
- return CacheObjectAdapter.putValue(addr, cacheObjectType(), val);
+ return CacheObjectUtils.putValue(addr, cacheObjectType(), val);
}
/** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, int off, int len)
throws IgniteCheckedException {
assert val != null : "Value is not initialized";
- return CacheObjectAdapter.putValue(cacheObjectType(), buf, off, len,
val, 0);
+ return CacheObjectUtils.putValue(cacheObjectType(), buf, off, len,
val, 0);
}
/** {@inheritDoc} */
@Override public int valueBytesLength(CacheObjectValueContext ctx) throws
IgniteCheckedException {
- return CacheObjectAdapter.objectPutSize(val.length);
+ return CacheObjectUtils.objectPutSize(val.length);
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
index 26ba2256ea2..fabf36ac20a 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
@@ -138,4 +138,9 @@ public class CacheObjectImpl extends CacheObjectAdapter {
@Override public CacheObject prepareForCache(CacheObjectValueContext ctx) {
return this;
}
+
+ /** {@inheritDoc} */
+ @Override public boolean postWriteRequired() {
+ return false;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
index 0560280a215..2e729960808 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
@@ -37,9 +37,11 @@ import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.GridKernalGateway;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.IgnitionEx;
import org.apache.ignite.internal.LongJVMPauseDetector;
import org.apache.ignite.internal.MarshallerContextImpl;
import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.binary.GridBinaryMarshaller;
import org.apache.ignite.internal.cache.query.index.IndexProcessor;
import
org.apache.ignite.internal.cache.transform.CacheObjectTransformerProcessor;
import org.apache.ignite.internal.managers.checkpoint.GridCheckpointManager;
@@ -119,6 +121,10 @@ import org.jetbrains.annotations.Nullable;
* @see org.apache.ignite.internal.GridComponent#stop(boolean)
*/
public class StandaloneGridKernalContext implements GridKernalContext {
+ static {
+ GridBinaryMarshaller.binaryContextSupplier(() ->
IgnitionEx.localIgnite().context().cacheObjects().binaryContext());
+ }
+
/** Config for fake Ignite instance. */
private final IgniteConfiguration cfg;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java
index 1d5c86f3352..d684d02a325 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java
@@ -360,7 +360,7 @@ public class PlatformContextImpl implements
PlatformContext, PartitionsExchangeA
/** {@inheritDoc} */
@Override public void writeSchema(BinaryWriterEx writer, int typeId, int
schemaId) {
- writer.writeIntArray(BinaryUtils.getSchema(cacheObjProc, typeId,
schemaId));
+
writer.writeIntArray(BinaryUtils.getSchema(cacheObjProc.binaryContext(),
cacheObjProc::metadata, typeId, schemaId));
}
/**
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 2126e27da38..61f2bfa2d09 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
@@ -130,9 +130,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 Class<?> GEOMETRY_CLASS =
U.classForName("org.locationtech.jts.geom.Geometry", null);
-
/** */
private static final Set<Class<?>> SQL_TYPES = createSqlTypes();
@@ -1157,17 +1154,7 @@ public class QueryUtils {
public static boolean isSqlType(Class<?> cls) {
cls = U.box(cls);
- return SQL_TYPES.contains(cls) || QueryUtils.isGeometryClass(cls);
- }
-
- /**
- * Checks if the given class is GEOMETRY.
- *
- * @param cls Class.
- * @return {@code true} If this is geometry.
- */
- public static boolean isGeometryClass(Class<?> cls) {
- return GEOMETRY_CLASS != null && GEOMETRY_CLASS.isAssignableFrom(cls);
+ return SQL_TYPES.contains(cls) || U.isGeometryClass(cls);
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityAdapter.java
index 9cf0a67bb40..c9d7aa28acc 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityAdapter.java
@@ -19,19 +19,34 @@ package org.apache.ignite.internal.processors.security;
import java.security.CodeSource;
import java.security.ProtectionDomain;
-import java.util.Objects;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.GridProcessorAdapter;
+import org.apache.ignite.internal.util.typedef.internal.U;
import static
org.apache.ignite.internal.processors.security.SecurityUtils.doPrivileged;
import static
org.apache.ignite.internal.processors.security.SecurityUtils.isInIgnitePackage;
/** */
public abstract class IgniteSecurityAdapter extends GridProcessorAdapter
implements IgniteSecurity {
- /** Code source for ignite-core module. */
- private static final CodeSource CORE_CODE_SOURCE =
SecurityUtils.class.getProtectionDomain().getCodeSource();
+ /** Code sources for ignite modules. */
+ private static final Set<CodeSource> MODULES = new HashSet<>(Arrays.asList(
+ SecurityUtils.class.getProtectionDomain().getCodeSource(),
//ignite-core
+ BinaryType.class.getProtectionDomain().getCodeSource()
//ignite-binary-api
+ ));
+
+ static {
+ // ignite-binary-impl. Theoretically, can be absent in runtime due to
other implementation of binary-api.
+ Class<?> jdkMarshCls =
U.classForName("org.apache.ignite.marshaller.jdk.JdkMarshallerImpl", null);
+
+ if (jdkMarshCls != null)
+ MODULES.add(jdkMarshCls.getProtectionDomain().getCodeSource());
+ }
/** System types cache. */
private static final ConcurrentMap<Class<?>, Boolean> SYSTEM_TYPES = new
ConcurrentHashMap<>();
@@ -48,8 +63,15 @@ public abstract class IgniteSecurityAdapter extends
GridProcessorAdapter impleme
c -> {
ProtectionDomain pd = doPrivileged(c::getProtectionDomain);
- return pd != null
- && Objects.equals(CORE_CODE_SOURCE, pd.getCodeSource())
+ if (pd == null)
+ return false;
+
+ CodeSource cs = pd.getCodeSource();
+
+ if (cs == null)
+ return false;
+
+ return MODULES.contains(cs)
// It allows users create an Uber-JAR that includes both
Ignite source code and custom classes
// and to pass mentioned classes to Ignite via public API
(e.g. tasks execution).
// Otherwise, Ignite will treat custom classes as internal
and block their execution through the
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/AbstractDataTypesCoverageTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/AbstractDataTypesCoverageTest.java
index f558b3f0512..fae65c4453b 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/AbstractDataTypesCoverageTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/AbstractDataTypesCoverageTest.java
@@ -53,8 +53,8 @@ import org.jetbrains.annotations.Nullable;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.DFLT_IGNITE_USE_BINARY_ARRAYS;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_USE_BINARY_ARRAYS;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_IGNITE_USE_BINARY_ARRAYS;
/**
* Abstract data types coverage test.
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
index ca704daa33b..0e8f4676f0c 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
@@ -48,13 +48,13 @@ public class IgniteIncompleteCacheObjectSelfTest extends
GridCommonAbstractTest
final TestCacheObject obj = new TestCacheObject((byte)1);
// Write part of the cache object and cut on header (3 bytes instead
of 5)
- assert CacheObjectAdapter.putValue(obj.cacheObjectType(), dataBuf,
off, len, data, 0);
+ assert CacheObjectUtils.putValue(obj.cacheObjectType(), dataBuf, off,
len, data, 0);
off += len;
len = IncompleteCacheObject.HEAD_LEN - len + data.length;
// Write rest data.
- assert CacheObjectAdapter.putValue(obj.cacheObjectType(), dataBuf,
off, len, data, 0);
+ assert CacheObjectUtils.putValue(obj.cacheObjectType(), dataBuf, off,
len, data, 0);
assert !dataBuf.hasRemaining() : "Not all data were written.";
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/sandbox/IgniteOperationsInsideSandboxTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/sandbox/IgniteOperationsInsideSandboxTest.java
index 9300660d557..f066b51ca7b 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/sandbox/IgniteOperationsInsideSandboxTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/sandbox/IgniteOperationsInsideSandboxTest.java
@@ -53,6 +53,8 @@ import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.lang.IgniteCallable;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.marshaller.Marshallers;
+import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.transactions.Transaction;
import org.jetbrains.annotations.Nullable;
@@ -304,6 +306,9 @@ public class IgniteOperationsInsideSandboxTest extends
AbstractSandboxTest {
ignite.cache(TEST_CACHE).put(0, new Object());
BinaryObject obj =
(BinaryObject)ignite.cache(TEST_CACHE).withKeepBinary().get(0);
obj.toString();
+
+ JdkMarshaller jdk = Marshallers.jdk();
+ jdk.toString();
}
});
}
diff --git
a/modules/json/src/test/java/org/apache/ignite/dump/JsonArrayTest.java
b/modules/json/src/test/java/org/apache/ignite/dump/JsonArrayTest.java
index ad2cd069698..a2e4ce43012 100644
--- a/modules/json/src/test/java/org/apache/ignite/dump/JsonArrayTest.java
+++ b/modules/json/src/test/java/org/apache/ignite/dump/JsonArrayTest.java
@@ -29,8 +29,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.DFLT_IGNITE_USE_BINARY_ARRAYS;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_USE_BINARY_ARRAYS;
-import static
org.apache.ignite.internal.binary.BinaryUtils.DFLT_IGNITE_USE_BINARY_ARRAYS;
/** */
@RunWith(Parameterized.class)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEvent.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEvent.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEvent.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEvent.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEventListener.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEventListener.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEventListener.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapEventListener.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapOutOfMemoryException.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapOutOfMemoryException.java
similarity index 100%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapOutOfMemoryException.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/GridOffHeapOutOfMemoryException.java
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridUnsafeMemory.java
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridUnsafeMemory.java
similarity index 98%
rename from
modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridUnsafeMemory.java
rename to
modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridUnsafeMemory.java
index 377d0a436fe..cbdc60cb88d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridUnsafeMemory.java
+++
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridUnsafeMemory.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.util.offheap.unsafe;
import java.util.concurrent.atomic.AtomicLong;
-import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.offheap.GridOffHeapEventListener;
import org.apache.ignite.internal.util.offheap.GridOffHeapOutOfMemoryException;
@@ -26,7 +26,7 @@ import
org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteBiTuple;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_OFFHEAP_SAFE_RELEASE;
+import static
org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_OFFHEAP_SAFE_RELEASE;
import static
org.apache.ignite.internal.util.offheap.GridOffHeapEvent.ALLOCATE;
import static org.apache.ignite.internal.util.offheap.GridOffHeapEvent.RELEASE;
@@ -38,7 +38,7 @@ public class GridUnsafeMemory {
private static final byte FREE = (byte)0;
/** Safe offheap release flag. */
- private static final boolean SAFE_RELEASE =
IgniteSystemProperties.getBoolean(IGNITE_OFFHEAP_SAFE_RELEASE);
+ private static final boolean SAFE_RELEASE =
IgniteCommonsSystemProperties.getBoolean(IGNITE_OFFHEAP_SAFE_RELEASE);
/** Total size. */
@GridToStringInclude