This is an automated email from the ASF dual-hosted git repository.
timoninmaxim 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 53295c337bb IGNITE-25169 Make BinarySchema package-private (#12009)
53295c337bb is described below
commit 53295c337bbf9ce61897624d6cd955bb077cb65f
Author: Ilya Shishkov <[email protected]>
AuthorDate: Wed May 21 17:32:59 2025 +0300
IGNITE-25169 Make BinarySchema package-private (#12009)
---
.../util/GridCommandHandlerMetadataTest.java | 5 +--
.../internal/binary/BinaryClassDescriptor.java | 7 ----
.../ignite/internal/binary/BinaryContext.java | 2 +-
.../ignite/internal/binary/BinaryMetadata.java | 27 +++++++++++--
.../ignite/internal/binary/BinaryObjectExImpl.java | 2 +-
.../ignite/internal/binary/BinaryObjectImpl.java | 4 +-
.../internal/binary/BinaryObjectOffheapImpl.java | 4 +-
.../ignite/internal/binary/BinaryReaderEx.java | 7 ----
.../ignite/internal/binary/BinaryReaderExImpl.java | 8 +++-
.../ignite/internal/binary/BinarySchema.java | 12 +++---
.../internal/binary/BinarySchemaRegistry.java | 2 +-
.../apache/ignite/internal/binary/BinaryUtils.java | 46 ++++++++++++++++++++++
.../ignite/internal/binary/BinaryWriterEx.java | 5 ---
.../ignite/internal/binary/BinaryWriterExImpl.java | 6 ++-
.../binary/builder/BinaryBuilderReader.java | 10 -----
.../binary/builder/BinaryObjectBuilderImpl.java | 9 +----
.../ignite/internal/client/thin/ClientBinary.java | 2 +-
.../ignite/internal/client/thin/ClientUtils.java | 15 +++----
.../management/meta/MetaDetailsCommand.java | 6 +--
.../internal/management/meta/MetaListCommand.java | 2 +-
.../cache/binary/BinaryMetadataTransport.java | 3 +-
.../binary/CacheObjectBinaryProcessorImpl.java | 2 +-
.../processors/platform/utils/PlatformUtils.java | 16 ++++----
.../spi/systemview/view/BinaryMetadataView.java | 10 +----
.../client/thin/MetadataRegistrationTest.java | 2 +-
25 files changed, 123 insertions(+), 91 deletions(-)
diff --git
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
index 621937e18f9..6f161b88b37 100644
---
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
+++
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerMetadataTest.java
@@ -37,7 +37,6 @@ import org.apache.ignite.binary.BinaryObjectBuilder;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.configuration.ClientConfiguration;
-import org.apache.ignite.internal.binary.BinarySchema;
import org.apache.ignite.internal.binary.BinaryTypeImpl;
import org.apache.ignite.testframework.GridTestUtils;
import org.jetbrains.annotations.Nullable;
@@ -595,8 +594,8 @@ public class GridCommandHandlerMetadataTest extends
GridCommandHandlerClusterByC
for (String fldName : t.fieldNames())
assertContains(log, cmdOut, "name=" + fldName + ", type=" +
t.fieldTypeName(fldName));
- for (BinarySchema s : ((BinaryTypeImpl)t).metadata().schemas())
- assertContains(log, cmdOut, "schemaId=0x" +
Integer.toHexString(s.schemaId()).toUpperCase());
+ for (int schemaId : (((BinaryTypeImpl)t).metadata().schemaIds()))
+ assertContains(log, cmdOut, "schemaId=0x" +
Integer.toHexString(schemaId).toUpperCase());
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
index c5841e8c7c0..9d4f56d478c 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
@@ -537,13 +537,6 @@ class BinaryClassDescriptor {
return stableFieldsMeta;
}
- /**
- * @return Schema.
- */
- BinarySchema schema() {
- return stableSchema;
- }
-
/**
* @return Whether typeId has been successfully registered by
MarshallerContext or not.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index 3080d8a36ca..6cebcf0b168 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -1427,7 +1427,7 @@ public class BinaryContext {
typeName = meta.typeName();
}
- BinarySchema curSchema = writer.currentSchema();
+ BinarySchema curSchema =
((BinaryWriterExImpl)writer).currentSchema();
if (affFieldName == null)
affFieldName = affinityKeyFieldName(typeId);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
index e78a980e3ff..b0c96229395 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMetadata.java
@@ -30,7 +30,6 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
-
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;
@@ -92,11 +91,26 @@ public class BinaryMetadata implements Externalizable {
* @param typeName Type name.
* @param fields Fields map.
* @param affKeyFieldName Affinity key field name.
- * @param schemas Schemas.
* @param isEnum Enum flag.
* @param enumMap Enum name to ordinal mapping.
*/
public BinaryMetadata(int typeId, String typeName, @Nullable Map<String,
BinaryFieldMetadata> fields,
+ @Nullable String affKeyFieldName, boolean isEnum, @Nullable
Map<String, Integer> enumMap) {
+ this(typeId, typeName, fields, affKeyFieldName, null, isEnum, enumMap);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param typeId Type ID.
+ * @param typeName Type name.
+ * @param fields Fields map.
+ * @param affKeyFieldName Affinity key field name.
+ * @param schemas Schemas.
+ * @param isEnum Enum flag.
+ * @param enumMap Enum name to ordinal mapping.
+ */
+ BinaryMetadata(int typeId, String typeName, @Nullable Map<String,
BinaryFieldMetadata> fields,
@Nullable String affKeyFieldName, @Nullable Collection<BinarySchema>
schemas, boolean isEnum,
@Nullable Map<String, Integer> enumMap) {
assert typeName != null;
@@ -176,7 +190,7 @@ public class BinaryMetadata implements Externalizable {
/**
* @return Schemas.
*/
- public Collection<BinarySchema> schemas() {
+ Collection<BinarySchema> schemas() {
return schemas != null ? schemas :
Collections.<BinarySchema>emptyList();
}
@@ -387,4 +401,11 @@ public class BinaryMetadata implements Externalizable {
@Override public String toString() {
return S.toString(BinaryMetadata.class, this);
}
+
+ /**
+ * @return Schema IDs registered for this type.
+ */
+ public Set<Integer> schemaIds() {
+ return schemaIds;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
index 5dc64d18779..e8a5dbb9e2a 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java
@@ -133,7 +133,7 @@ abstract class BinaryObjectExImpl implements BinaryObjectEx
{
*
* @return Schema.
*/
- public abstract BinarySchema createSchema();
+ abstract BinarySchema createSchema();
/** {@inheritDoc} */
@Override public BinaryObjectBuilder toBuilder() throws
BinaryObjectException {
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index c9e544f4ffe..9d27db97738 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -771,8 +771,8 @@ final class BinaryObjectImpl extends BinaryObjectExImpl
implements Externalizabl
}
/** {@inheritDoc} */
- @Override public BinarySchema createSchema() {
- return reader(null, false).getOrCreateSchema();
+ @Override BinarySchema createSchema() {
+ return ((BinaryReaderExImpl)reader(null, false)).getOrCreateSchema();
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index b7e833e9779..7a2c06b1c0e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -130,8 +130,8 @@ class BinaryObjectOffheapImpl extends BinaryObjectExImpl
implements Externalizab
}
/** {@inheritDoc} */
- @Override public BinarySchema createSchema() {
- return reader(null, false).getOrCreateSchema();
+ @Override BinarySchema createSchema() {
+ return ((BinaryReaderExImpl)reader(null, false)).getOrCreateSchema();
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
index c12ba4b0e22..4dbbdc94b72 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderEx.java
@@ -46,13 +46,6 @@ public interface BinaryReaderEx extends BinaryReader,
BinaryRawReader, BinaryRea
*/
public BinaryInputStream in();
- /**
- * Get or create object schema.
- *
- * @return Schema.
- */
- public BinarySchema getOrCreateSchema();
-
/**
* @param offset Offset in the array.
* @return Unmarshalled value.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
index 01f72d4408a..7e8605ae4c1 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
@@ -1981,8 +1981,12 @@ class BinaryReaderExImpl implements BinaryReaderEx {
return mapper.fieldId(typeId, name);
}
- /** {@inheritDoc} */
- @Override public BinarySchema getOrCreateSchema() {
+ /**
+ * Get or create object schema.
+ *
+ * @return Schema.
+ */
+ BinarySchema getOrCreateSchema() {
BinarySchema schema = ctx.schemaRegistry(typeId).schema(schemaId);
if (schema == null) {
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
index 508844bf1b4..45f1245b5e9 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchema.java
@@ -35,7 +35,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
* for quick comparisons performed within already fetched L1 cache line.
* - When there are more fields, we store them inside a hash map.
*/
-public class BinarySchema implements Externalizable {
+class BinarySchema implements Externalizable {
/** */
private static final long serialVersionUID = 0L;
@@ -431,7 +431,7 @@ public class BinarySchema implements Externalizable {
/**
* Schema builder.
*/
- public static class Builder {
+ static class Builder {
/** Schema ID. */
private int schemaId = BinaryUtils.schemaInitialId();
@@ -443,7 +443,7 @@ public class BinarySchema implements Externalizable {
*
* @return Schema builder.
*/
- public static Builder newBuilder() {
+ static Builder newBuilder() {
return new Builder();
}
@@ -459,7 +459,7 @@ public class BinarySchema implements Externalizable {
*
* @param fieldId Field ID.
*/
- public void addField(int fieldId) {
+ void addField(int fieldId) {
fields.add(fieldId);
schemaId = BinaryUtils.updateSchemaId(schemaId, fieldId);
@@ -470,7 +470,7 @@ public class BinarySchema implements Externalizable {
*
* @return Schema.
*/
- public BinarySchema build() {
+ BinarySchema build() {
return new BinarySchema(schemaId, fields);
}
}
@@ -478,7 +478,7 @@ public class BinarySchema implements Externalizable {
/**
* Order confirmation result.
*/
- public enum Confirmation {
+ enum Confirmation {
/** Confirmed. */
CONFIRMED,
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
index bbfb14851f1..09aee667776 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinarySchemaRegistry.java
@@ -70,7 +70,7 @@ class BinarySchemaRegistry {
* @param schemaId Schema ID.
* @return Schema or {@code null}.
*/
- @Nullable public BinarySchema schema(int schemaId) {
+ @Nullable BinarySchema schema(int schemaId) {
if (inline) {
if (schemaId == schemaId1)
return schema1;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 82e0db4ee90..38e6650daf2 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -47,6 +47,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -59,6 +60,7 @@ import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.ToIntFunction;
+import java.util.stream.Collectors;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteSystemProperties;
@@ -81,6 +83,7 @@ import
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProce
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.MutableSingletonList;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteUuid;
@@ -3083,6 +3086,49 @@ public class BinaryUtils {
((BinaryObjectImpl)o).detachAllowed(true);
}
+ /**
+ * @param meta Binary metadata.
+ * @return Schemas identifiers of the specified {@link BinaryMetadata}.
+ */
+ public static Collection<T2<Integer, int[]>>
schemasAndFieldsIds(BinaryMetadata meta) {
+ return F.viewReadOnly(meta.schemas(), s -> new T2<>(s.schemaId(),
s.fieldIds()));
+ }
+
+ /**
+ * Gets field by its order.
+ *
+ * @param reader Reader.
+ * @param order Order.
+ */
+ public static int fieldId(BinaryReaderEx reader, int order) {
+ return ((BinaryReaderExImpl)reader).getOrCreateSchema().fieldId(order);
+ }
+
+ /**
+ * @param typeId Type ID.
+ * @param typeName Type name.
+ * @param fields Fields map.
+ * @param affKeyFieldName Affinity key field name.
+ * @param schemasAndFieldIds Schemas and fields identifiers.
+ * @param isEnum Enum flag.
+ * @param enumMap Enum name to ordinal mapping.
+ * @return New instance of {@link BinaryMetadata}.
+ */
+ public static BinaryMetadata binaryMetadata(
+ int typeId,
+ String typeName,
+ @Nullable Map<String, BinaryFieldMetadata> fields,
+ @Nullable String affKeyFieldName,
+ @Nullable Collection<T2<Integer, List<Integer>>> schemasAndFieldIds,
+ boolean isEnum,
+ @Nullable Map<String, Integer> enumMap) {
+ List<BinarySchema> schemas = schemasAndFieldIds.stream()
+ .map(t -> new BinarySchema(t.get1(), t.get2()))
+ .collect(Collectors.toList());
+
+ return new BinaryMetadata(typeId, typeName, fields, affKeyFieldName,
schemas, isEnum, enumMap);
+ }
+
/**
* Enum type.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
index a5d6ac778a3..fdd8882b306 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterEx.java
@@ -141,11 +141,6 @@ public interface BinaryWriterEx extends BinaryWriter,
BinaryRawWriter, ObjectOut
*/
public int schemaId();
- /**
- * @return Current writer's schema.
- */
- public BinarySchema currentSchema();
-
/**
* @return Binary context.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
index 5521381a60c..7c2dcc5d787 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
@@ -1484,8 +1484,10 @@ class BinaryWriterExImpl implements BinaryWriterEx {
return schemaId;
}
- /** {@inheritDoc} */
- @Override public BinarySchema currentSchema() {
+ /**
+ * @return Current writer's schema.
+ */
+ BinarySchema currentSchema() {
BinarySchema.Builder builder = BinarySchema.Builder.newBuilder();
if (schema != null)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
index ecb7715b735..9232f60ee63 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java
@@ -29,7 +29,6 @@ import org.apache.ignite.internal.binary.BinaryObjectEx;
import org.apache.ignite.internal.binary.BinaryPositionReadable;
import org.apache.ignite.internal.binary.BinaryPrimitives;
import org.apache.ignite.internal.binary.BinaryReaderEx;
-import org.apache.ignite.internal.binary.BinarySchema;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.binary.GridBinaryMarshaller;
@@ -110,15 +109,6 @@ class BinaryBuilderReader implements
BinaryPositionReadable {
objMap.put(obj.start(), obj);
}
- /**
- * Get schema of the object, starting at the given position.
- *
- * @return Object's schema.
- */
- public BinarySchema schema() {
- return reader.getOrCreateSchema();
- }
-
/**
* @return Read int value.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
index 795f1889aeb..87cb045262b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryObjectBuilderImpl.java
@@ -33,7 +33,6 @@ import org.apache.ignite.binary.BinaryType;
import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.binary.BinaryObjectEx;
-import org.apache.ignite.internal.binary.BinarySchema;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.binary.GridBinaryMarshaller;
@@ -205,8 +204,6 @@ class BinaryObjectBuilderImpl implements
BinaryObjectBuilder {
Map<String, BinaryFieldMetadata> fieldsMeta = null;
if (reader != null && BinaryUtils.hasSchema(flags)) {
- BinarySchema schema = reader.schema();
-
Map<Integer, Object> assignedFldsById;
if (assignedVals != null) {
@@ -247,7 +244,7 @@ class BinaryObjectBuilderImpl implements
BinaryObjectBuilder {
int idx = 0;
while (reader.position() < rawPos) {
- int fieldId = schema.fieldId(idx++);
+ int fieldId = BinaryUtils.fieldId(reader.reader(), idx++);
int fieldLen =
fieldPositionAndLength(footerPos, footerEnd, rawPos,
fieldIdLen, fieldOffsetLen).get2();
@@ -461,8 +458,6 @@ class BinaryObjectBuilderImpl implements
BinaryObjectBuilder {
int fieldIdLen = BinaryUtils.fieldIdLength(flags);
int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags);
- BinarySchema schema = reader.schema();
-
Map<Integer, Object> readCache = new HashMap<>();
IgniteBiTuple<Integer, Integer> footer =
BinaryUtils.footerAbsolute(reader, start);
@@ -475,7 +470,7 @@ class BinaryObjectBuilderImpl implements
BinaryObjectBuilder {
int idx = 0;
while (footerPos + fieldIdLen < footerEnd) {
- int fieldId = schema.fieldId(idx++);
+ int fieldId = BinaryUtils.fieldId(reader.reader(), idx++);
IgniteBiTuple<Integer, Integer> posAndLen =
fieldPositionAndLength(footerPos, footerEnd, rawPos,
fieldIdLen, fieldOffsetLen);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
index f0b189f7464..a613d113e0c 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
@@ -159,7 +159,7 @@ public class ClientBinary implements IgniteBinary {
int typeId = ctx.typeId(typeName);
- ctx.updateMetadata(typeId, new BinaryMetadata(typeId, typeName, null,
null, null, true, vals), false);
+ ctx.updateMetadata(typeId, new BinaryMetadata(typeId, typeName, null,
null, true, vals), false);
return ctx.metadata(typeId);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
index 3c2da463bbe..8aa81553739 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -51,12 +52,12 @@ import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.binary.BinaryReaderEx;
-import org.apache.ignite.internal.binary.BinarySchema;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import
org.apache.ignite.internal.processors.platform.cache.expiry.PlatformExpiryPolicy;
+import org.apache.ignite.internal.util.typedef.T2;
import org.jetbrains.annotations.Nullable;
import static
org.apache.ignite.internal.client.thin.ProtocolVersionFeature.EXPIRY_POLICY;
@@ -172,15 +173,15 @@ public final class ClientUtils {
Map<String, Integer> enumValues = isEnum ? ClientUtils.map(in,
unsed -> reader.readString(), unsed2 -> reader.readInt()) : null;
- Collection<BinarySchema> schemas = ClientUtils.collection(
+ Collection<T2<Integer, List<Integer>>> schemas =
ClientUtils.collection(
in,
- unused -> new BinarySchema(
+ unused -> new T2<>(
reader.readInt(),
new ArrayList<>(ClientUtils.collection(in, unused2 ->
reader.readInt()))
)
);
- return new BinaryMetadata(
+ return BinaryUtils.binaryMetadata(
typeId,
typeName,
fields,
@@ -222,13 +223,13 @@ public final class ClientUtils {
);
collection(
- meta.schemas(),
+ BinaryUtils.schemasAndFieldsIds(meta),
out,
(unused, s) -> {
- w.writeInt(s.schemaId());
+ w.writeInt(s.get1());
collection(
-
Arrays.stream(s.fieldIds()).boxed().collect(Collectors.toList()),
+
Arrays.stream(s.get2()).boxed().collect(Collectors.toList()),
out,
(unused2, i) -> w.writeInt(i)
);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
index d42486fc6cb..32b786503b0 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
@@ -79,10 +79,10 @@ public class MetaDetailsCommand implements
ComputeCommand<IgniteDataTransferObje
printer.accept("Schemas:");
- m.schemas().forEach(s ->
+ BinaryUtils.schemasAndFieldsIds(m).forEach(s ->
printer.accept(INDENT +
- "schemaId=" + printInt(s.schemaId()) +
- ", fields=" + Arrays.stream(s.fieldIds())
+ "schemaId=" + printInt(s.get1()) +
+ ", fields=" + Arrays.stream(s.get2())
.mapToObj(fldMap::get)
.collect(Collectors.toList())));
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
index 061650996e2..f8bc4659ba2 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
@@ -48,7 +48,7 @@ public class MetaListCommand implements
ComputeCommand<IgniteDataTransferObject,
printer.accept("typeId=" + printInt(m.typeId()) +
", typeName=" + m.typeName() +
", fields=" + m.fields().size() +
- ", schemas=" + m.schemas().size() +
+ ", schemas=" + m.schemaIds().size() +
", isEnum=" + m.isEnum());
}
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
index cc6c01452d4..ed2579292a5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataTransport.java
@@ -53,6 +53,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.jetbrains.annotations.Nullable;
+
import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
import static org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata;
@@ -537,7 +538,7 @@ final class BinaryMetadataTransport {
", typeName=" + msg.metadata().typeName() +
", pendingVer=" + msg.pendingVersion() +
", acceptedVer=" + msg.acceptedVersion() +
- ", schemasCnt=" + msg.metadata().schemas().size() + ']');
+ ", schemasCnt=" + msg.metadata().schemaIds().size() + ']');
int typeId = msg.typeId();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index 02e24622048..5374697246d 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -543,7 +543,7 @@ public class CacheObjectBinaryProcessorImpl extends
GridProcessorAdapter impleme
@Override public void updateMetadata(int typeId, String typeName,
@Nullable String affKeyFieldName,
Map<String, BinaryFieldMetadata> fieldTypeIds, boolean isEnum,
@Nullable Map<String, Integer> enumMap)
throws BinaryObjectException {
- BinaryMetadata meta = new BinaryMetadata(typeId, typeName,
fieldTypeIds, affKeyFieldName, null, isEnum,
+ BinaryMetadata meta = new BinaryMetadata(typeId, typeName,
fieldTypeIds, affKeyFieldName, isEnum,
enumMap);
binaryCtx.updateMetadata(typeId, meta, false);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
index 00921c32714..624ef6eb4f4 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java
@@ -51,7 +51,6 @@ import org.apache.ignite.internal.binary.BinaryFieldMetadata;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.binary.BinaryReaderEx;
-import org.apache.ignite.internal.binary.BinarySchema;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.binary.GridBinaryMarshaller;
@@ -71,6 +70,7 @@ import
org.apache.ignite.internal.processors.platform.memory.PlatformOutputStrea
import org.apache.ignite.internal.processors.service.LazyServiceConfiguration;
import org.apache.ignite.internal.util.MutableSingletonList;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
@@ -1145,14 +1145,14 @@ public class PlatformUtils {
}
// Schemas.
- Collection<BinarySchema> schemas = meta.schemas();
+ Collection<T2<Integer, int[]>> schemas =
BinaryUtils.schemasAndFieldsIds(meta);
writer.writeInt(schemas.size());
- for (BinarySchema schema : schemas) {
- writer.writeInt(schema.schemaId());
+ for (T2<Integer, int[]> schema : schemas) {
+ writer.writeInt(schema.get1());
- int[] ids = schema.fieldIds();
+ int[] ids = schema.get2();
writer.writeInt(ids.length);
for (int id : ids) {
@@ -1216,7 +1216,7 @@ public class PlatformUtils {
// Read schemas
int schemaCnt = reader.readInt();
- List<BinarySchema> schemas = null;
+ List<T2<Integer, List<Integer>>> schemas = null;
if (schemaCnt > 0) {
schemas = new ArrayList<>(schemaCnt);
@@ -1229,11 +1229,11 @@ public class PlatformUtils {
for (int j = 0; j < fieldCnt; j++)
fieldIds.add(reader.readInt());
- schemas.add(new BinarySchema(id, fieldIds));
+ schemas.add(new T2<>(id, fieldIds));
}
}
- return new BinaryMetadata(typeId, typeName, fields, affKey, schemas,
isEnum, enumMap);
+ return BinaryUtils.binaryMetadata(typeId, typeName, fields, affKey,
schemas, isEnum, enumMap);
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/BinaryMetadataView.java
b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/BinaryMetadataView.java
index 681accd88a3..e5745f3951c 100644
---
a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/BinaryMetadataView.java
+++
b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/BinaryMetadataView.java
@@ -17,10 +17,7 @@
package org.apache.ignite.spi.systemview.view;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.ignite.internal.binary.BinaryMetadata;
-import org.apache.ignite.internal.binary.BinarySchema;
import org.apache.ignite.internal.managers.systemview.walker.Order;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -69,12 +66,7 @@ public class BinaryMetadataView {
/** @return Schema IDs registered for this type. */
@Order(5)
public String schemasIds() {
- List<Integer> ids = new ArrayList<>(meta.schemas().size());
-
- for (BinarySchema schema : meta.schemas())
- ids.add(schema.schemaId());
-
- return U.toStringSafe(ids);
+ return U.toStringSafe(meta.schemaIds());
}
/** @return {@code True} if this is enum type. */
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/MetadataRegistrationTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/MetadataRegistrationTest.java
index 6d4ae64bf27..4f13aaf2bce 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/MetadataRegistrationTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/MetadataRegistrationTest.java
@@ -52,7 +52,7 @@ public class MetadataRegistrationTest extends
AbstractThinClientTest {
IgniteBinary srvBinary = srv.binary();
try (IgniteClient client = startClient(srv)) {
- BinaryMetadata meta = new BinaryMetadata(123, "newType", null,
null, null, false, null);
+ BinaryMetadata meta = new BinaryMetadata(123, "newType", null,
null, false, null);
assertNull(srvBinary.type(meta.typeId()));