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()));
 


Reply via email to