This is an automated email from the ASF dual-hosted git repository.

av 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 1d5987e79b1 IGNITE-27985 Use MessageSerializer for H2 messages (#12818)
1d5987e79b1 is described below

commit 1d5987e79b15852ed5b94dc7ebe9708a45b429d7
Author: Anton Vinogradov <[email protected]>
AuthorDate: Mon Mar 2 15:43:13 2026 +0300

    IGNITE-27985 Use MessageSerializer for H2 messages (#12818)
---
 .../apache/ignite/util/GridCommandHandlerTest.java |  12 +-
 .../util/OfflineTestCommandArgSerializer.java      |   8 +-
 modules/indexing/pom.xml                           |   4 +
 .../internal/processors/query/h2/QueryTable.java   |  65 +----
 .../query/h2/twostep/msg/GridH2Array.java          |  57 +---
 .../query/h2/twostep/msg/GridH2Boolean.java        |  54 +---
 .../query/h2/twostep/msg/GridH2Byte.java           |  54 +---
 .../query/h2/twostep/msg/GridH2Bytes.java          |  54 +---
 .../query/h2/twostep/msg/GridH2CacheObject.java    |  54 +---
 .../query/h2/twostep/msg/GridH2Date.java           |  54 +---
 .../query/h2/twostep/msg/GridH2Decimal.java        |  71 +----
 .../query/h2/twostep/msg/GridH2DmlRequest.java     | 223 ++--------------
 .../query/h2/twostep/msg/GridH2DmlResponse.java    | 103 +------
 .../query/h2/twostep/msg/GridH2Double.java         |  54 +---
 .../query/h2/twostep/msg/GridH2Float.java          |  54 +---
 .../query/h2/twostep/msg/GridH2Geometry.java       |  54 +---
 .../h2/twostep/msg/GridH2IndexRangeRequest.java    | 136 +---------
 .../h2/twostep/msg/GridH2IndexRangeResponse.java   | 170 ++----------
 .../query/h2/twostep/msg/GridH2Integer.java        |  54 +---
 .../query/h2/twostep/msg/GridH2JavaObject.java     |  54 +---
 .../query/h2/twostep/msg/GridH2Long.java           |  54 +---
 .../query/h2/twostep/msg/GridH2Null.java           |  33 +--
 .../query/h2/twostep/msg/GridH2QueryRequest.java   | 297 +++------------------
 .../query/h2/twostep/msg/GridH2RowMessage.java     |  51 +---
 .../query/h2/twostep/msg/GridH2RowRange.java       |  85 +-----
 .../query/h2/twostep/msg/GridH2RowRangeBounds.java |  82 +-----
 .../query/h2/twostep/msg/GridH2Short.java          |  54 +---
 .../query/h2/twostep/msg/GridH2String.java         |  54 +---
 .../query/h2/twostep/msg/GridH2Time.java           |  54 +---
 .../query/h2/twostep/msg/GridH2Timestamp.java      |  71 +----
 .../query/h2/twostep/msg/GridH2Uuid.java           |  71 +----
 .../query/h2/twostep/msg/GridH2ValueMessage.java   |  15 --
 .../h2/twostep/msg/GridH2ValueMessageFactory.java  |  57 ++--
 33 files changed, 226 insertions(+), 2141 deletions(-)

diff --git 
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
 
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
index 79a69c1a9c4..1baad66b3c5 100644
--- 
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
+++ 
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
@@ -80,6 +80,7 @@ import org.apache.ignite.internal.GridJobExecuteResponse;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.TestRecordingCommunicationSpi;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.management.api.Argument;
@@ -4046,19 +4047,19 @@ public class GridCommandHandlerTest extends 
GridCommandHandlerClusterPerMethodAb
     }
 
     /** */
-    public static class OfflineTestCommand implements 
OfflineCommand<OfflineTestCommandArg, Void> {
+    public static class OfflineTestCommand implements 
OfflineCommand<TestOfflineTestCommandArg, Void> {
         /** {@inheritDoc} */
         @Override public String description() {
             return null;
         }
 
         /** {@inheritDoc} */
-        @Override public Class<OfflineTestCommandArg> argClass() {
-            return OfflineTestCommandArg.class;
+        @Override public Class<TestOfflineTestCommandArg> argClass() {
+            return TestOfflineTestCommandArg.class;
         }
 
         /** {@inheritDoc} */
-        @Override public Void execute(OfflineTestCommandArg arg, 
Consumer<String> printer) {
+        @Override public Void execute(TestOfflineTestCommandArg arg, 
Consumer<String> printer) {
             printer.accept(arg.input());
 
             return null;
@@ -4066,9 +4067,10 @@ public class GridCommandHandlerTest extends 
GridCommandHandlerClusterPerMethodAb
     }
 
     /** */
-    public static class OfflineTestCommandArg extends IgniteDataTransferObject 
{
+    public static class TestOfflineTestCommandArg extends 
IgniteDataTransferObject {
         /** */
         @Argument
+        @Order(0)
         String input;
 
         /** */
diff --git 
a/modules/control-utility/src/test/java/org/apache/ignite/util/OfflineTestCommandArgSerializer.java
 
b/modules/control-utility/src/test/java/org/apache/ignite/util/OfflineTestCommandArgSerializer.java
index 2131c0c3367..b59278d3db4 100644
--- 
a/modules/control-utility/src/test/java/org/apache/ignite/util/OfflineTestCommandArgSerializer.java
+++ 
b/modules/control-utility/src/test/java/org/apache/ignite/util/OfflineTestCommandArgSerializer.java
@@ -23,7 +23,7 @@ import java.io.ObjectOutput;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.dto.IgniteDataTransferObjectSerializer;
 import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.util.GridCommandHandlerTest.OfflineTestCommandArg;
+import org.apache.ignite.util.GridCommandHandlerTest.TestOfflineTestCommandArg;
 
 /**
  * This class is implements {@link IgniteDataTransferObjectSerializer}.
@@ -34,14 +34,14 @@ import 
org.apache.ignite.util.GridCommandHandlerTest.OfflineTestCommandArg;
  *
  * @see org.apache.ignite.internal.codegen.idto.IDTOSerializerFactory
  */
-public class OfflineTestCommandArgSerializer implements 
IgniteDataTransferObjectSerializer<OfflineTestCommandArg> {
+public class OfflineTestCommandArgSerializer implements 
IgniteDataTransferObjectSerializer<TestOfflineTestCommandArg> {
     /** {@inheritDoc} */
-    @Override public void writeExternal(OfflineTestCommandArg obj, 
ObjectOutput out) throws IOException {
+    @Override public void writeExternal(TestOfflineTestCommandArg obj, 
ObjectOutput out) throws IOException {
         U.writeString(out, obj.input);
     }
 
     /** {@inheritDoc} */
-    @Override public void readExternal(OfflineTestCommandArg obj, ObjectInput 
in) throws IOException, ClassNotFoundException {
+    @Override public void readExternal(TestOfflineTestCommandArg obj, 
ObjectInput in) throws IOException, ClassNotFoundException {
         obj.input = U.readString(in);
     }
 }
diff --git a/modules/indexing/pom.xml b/modules/indexing/pom.xml
index d3a1cdd203c..f87068efe77 100644
--- a/modules/indexing/pom.xml
+++ b/modules/indexing/pom.xml
@@ -158,6 +158,10 @@
             <version>1.19.0</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-codegen</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryTable.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryTable.java
index 7b69e0c8243..10b87a8f349 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryTable.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryTable.java
@@ -17,22 +17,22 @@
 
 package org.apache.ignite.internal.processors.query.h2;
 
-import java.nio.ByteBuffer;
 import java.util.Objects;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Query table descriptor.
  */
 public class QueryTable implements Message {
     /** Schema. */
-    private String schema;
+    @Order(0)
+    String schema;
 
     /** Table. */
-    private String tbl;
+    @Order(1)
+    String tbl;
 
     /**
      * Default constructor.
@@ -66,61 +66,6 @@ public class QueryTable implements Message {
         return tbl;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeString(schema))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeString(tbl))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                schema = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                tbl = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -54;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Array.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Array.java
index f2344141a4b..d875f717178 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Array.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Array.java
@@ -17,16 +17,12 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.GridDirectCollection;
 import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 import org.h2.value.Value;
 import org.h2.value.ValueArray;
 
@@ -38,8 +34,8 @@ import static 
org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2V
  */
 public class GridH2Array extends GridH2ValueMessage {
     /** */
-    @GridDirectCollection(Message.class)
-    private Collection<Message> x;
+    @Order(0)
+    Collection<Message> x;
 
     /**
      *
@@ -68,53 +64,6 @@ public class GridH2Array extends GridH2ValueMessage {
         return ValueArray.get(fillArray(x.iterator(), new Value[x.size()], 
ctx));
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeCollection(x, MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -18;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Boolean.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Boolean.java
index ac4c9d32672..4df68797dc2 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Boolean.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Boolean.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueBoolean;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueBoolean;
  */
 public class GridH2Boolean extends GridH2ValueMessage {
     /** */
-    private boolean x;
+    @Order(0)
+    boolean x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Boolean extends GridH2ValueMessage {
         return ValueBoolean.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeBoolean(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readBoolean();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -5;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Byte.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Byte.java
index a4f400e044a..e62a1aa11e3 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Byte.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Byte.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueByte;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueByte;
  */
 public class GridH2Byte extends GridH2ValueMessage {
     /** */
-    private byte x;
+    @Order(0)
+    byte x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Byte extends GridH2ValueMessage {
         return ValueByte.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByte(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readByte();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -6;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Bytes.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Bytes.java
index f48cbdffce0..3c16e32b587 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Bytes.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Bytes.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueBytes;
 
@@ -31,7 +29,8 @@ import static org.h2.util.StringUtils.convertBytesToHex;
  */
 public class GridH2Bytes extends GridH2ValueMessage {
     /** */
-    private byte[] b;
+    @Order(0)
+    byte[] b;
 
     /**
      *
@@ -54,53 +53,6 @@ public class GridH2Bytes extends GridH2ValueMessage {
         return ValueBytes.getNoCopy(b);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByteArray(b))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                b = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -16;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2CacheObject.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2CacheObject.java
index f485deb1a55..cb7265f379e 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2CacheObject.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2CacheObject.java
@@ -17,14 +17,12 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import 
org.apache.ignite.internal.processors.query.h2.opt.GridH2ValueCacheObject;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 import org.h2.value.Value;
 
 /**
@@ -32,7 +30,8 @@ import org.h2.value.Value;
  */
 public class GridH2CacheObject extends GridH2ValueMessage {
     /** */
-    private CacheObject obj;
+    @Order(0)
+    CacheObject obj;
 
     /**
      *
@@ -60,53 +59,6 @@ public class GridH2CacheObject extends GridH2ValueMessage {
         return new GridH2ValueCacheObject(obj, valCtx);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                obj = reader.readCacheObject();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeCacheObject(obj))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -22;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Date.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Date.java
index 273c8c0fd60..5e3acc78fa2 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Date.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Date.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueDate;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueDate;
  */
 public class GridH2Date extends GridH2ValueMessage {
     /** */
-    private long date;
+    @Order(0)
+    long date;
 
     /**
      *
@@ -54,53 +53,6 @@ public class GridH2Date extends GridH2ValueMessage {
         return ValueDate.fromDateValue(date);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeLong(date))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                date = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -14;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Decimal.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Decimal.java
index 029e3aca63b..b2a87edcf85 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Decimal.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Decimal.java
@@ -19,10 +19,8 @@ package 
org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueDecimal;
 
@@ -33,10 +31,12 @@ import static org.h2.util.StringUtils.convertBytesToHex;
  */
 public class GridH2Decimal extends GridH2ValueMessage {
     /** */
-    private int scale;
+    @Order(0)
+    int scale;
 
     /** */
-    private byte[] b;
+    @Order(1)
+    byte[] b;
 
     /**
      *
@@ -62,67 +62,6 @@ public class GridH2Decimal extends GridH2ValueMessage {
         return ValueDecimal.get(new BigDecimal(new BigInteger(b), scale));
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByteArray(b))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeInt(scale))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                b = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                scale = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -10;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlRequest.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlRequest.java
index 0edecd70c49..b2fce2fa2ad 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlRequest.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlRequest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.List;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.binary.BinaryMarshaller;
 import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -31,9 +29,6 @@ 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 org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery.EMPTY_PARAMS;
 
@@ -43,49 +38,58 @@ import static 
org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuer
 public class GridH2DmlRequest implements Message, GridCacheQueryMarshallable {
     /** Request id. */
     @GridToStringInclude
-    private long reqId;
+    @Order(0)
+    long reqId;
 
     /** Cache identifiers. */
     @GridToStringInclude
-    @GridDirectCollection(Integer.class)
-    private List<Integer> caches;
+    @Order(1)
+    List<Integer> caches;
 
     /** Topology version. */
     @GridToStringInclude
-    private AffinityTopologyVersion topVer;
+    @Order(2)
+    AffinityTopologyVersion topVer;
 
     /** Query partitions. */
     @GridToStringInclude
-    private int[] qryParts;
+    @Order(3)
+    int[] qryParts;
 
     /** Page size. */
-    private int pageSize;
+    @Order(4)
+    int pageSize;
 
     /** Query. */
     @GridToStringInclude
-    private String qry;
+    @Order(5)
+    String qry;
 
     /** Flags. */
-    private byte flags;
+    @Order(6)
+    byte flags;
 
     /** Timeout. */
-    private int timeout;
+    @Order(7)
+    int timeout;
 
     /** Query parameters. */
     @GridToStringInclude(sensitive = true)
-    @GridDirectTransient
     private Object[] params;
 
     /** Query parameters as bytes. */
-    private byte[] paramsBytes;
+    @Order(8)
+    byte[] paramsBytes;
 
     /** Schema name. */
     @GridToStringInclude
-    private String schemaName;
+    @Order(9)
+    String schemaName;
 
     /** Explicit timeout flag. */
     @GridToStringInclude
-    private boolean explicitTimeout;
+    @Order(10)
+    boolean explicitTimeout;
 
     /**
      * Empty constructor.
@@ -334,187 +338,6 @@ public class GridH2DmlRequest implements Message, 
GridCacheQueryMarshallable {
         params = 
BinaryUtils.rawArrayFromBinary(ctx.marshaller().binaryMarshaller().unmarshal(paramsBytes,
 ldr));
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeCollection(caches, 
MessageCollectionItemType.INT))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeBoolean(explicitTimeout))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeByte(flags))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeInt(pageSize))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeByteArray(paramsBytes))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeString(qry))
-                    return false;
-
-                writer.incrementState();
-
-            case 6:
-                if (!writer.writeIntArray(qryParts))
-                    return false;
-
-                writer.incrementState();
-
-            case 7:
-                if (!writer.writeLong(reqId))
-                    return false;
-
-                writer.incrementState();
-
-            case 8:
-                if (!writer.writeString(schemaName))
-                    return false;
-
-                writer.incrementState();
-
-            case 9:
-                if (!writer.writeInt(timeout))
-                    return false;
-
-                writer.incrementState();
-
-            case 10:
-                if (!writer.writeAffinityTopologyVersion(topVer))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                caches = reader.readCollection(MessageCollectionItemType.INT);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                explicitTimeout = reader.readBoolean();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                flags = reader.readByte();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                pageSize = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                paramsBytes = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 5:
-                qry = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 6:
-                qryParts = reader.readIntArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 7:
-                reqId = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 8:
-                schemaName = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 9:
-                timeout = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 10:
-                topVer = reader.readAffinityTopologyVersion();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -55;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlResponse.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlResponse.java
index 53f56f2292c..3b605861cbb 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlResponse.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2DmlResponse.java
@@ -17,11 +17,10 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.binary.BinaryMarshaller;
 import org.apache.ignite.internal.binary.BinaryUtils;
 import 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryMarshallable;
@@ -29,8 +28,6 @@ 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 org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Response to remote DML request.
@@ -38,23 +35,26 @@ import 
org.apache.ignite.plugin.extensions.communication.MessageWriter;
 public class GridH2DmlResponse implements Message, GridCacheQueryMarshallable {
     /** Request id. */
     @GridToStringInclude
-    private long reqId;
+    @Order(0)
+    long reqId;
 
     /** Number of updated rows. */
     @GridToStringInclude
-    private long updCnt;
+    @Order(1)
+    long updCnt;
 
     /** Error message. */
     @GridToStringInclude
-    private String err;
+    @Order(2)
+    String err;
 
     /** Keys that failed. */
     @GridToStringInclude
-    @GridDirectTransient
-    private Object[] errKeys;
+    Object[] errKeys;
 
     /** Keys that failed (after marshalling). */
-    private byte[] errKeysBytes;
+    @Order(3)
+    byte[] errKeysBytes;
 
     /**
      * Default constructor.
@@ -136,89 +136,6 @@ public class GridH2DmlResponse implements Message, 
GridCacheQueryMarshallable {
         return S.toString(GridH2DmlResponse.class, this);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeString(err))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeByteArray(errKeysBytes))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeLong(reqId))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeLong(updCnt))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                err = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                errKeysBytes = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                reqId = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                updCnt = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -56;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Double.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Double.java
index 21f019b29fe..711d1dc360e 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Double.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Double.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueDouble;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueDouble;
  */
 public class GridH2Double extends GridH2ValueMessage {
     /** */
-    private double x;
+    @Order(0)
+    double x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Double extends GridH2ValueMessage {
         return ValueDouble.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeDouble(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readDouble();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -11;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Float.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Float.java
index 04abd63c4d5..ef0f06bf0b8 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Float.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Float.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueFloat;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueFloat;
  */
 public class GridH2Float extends GridH2ValueMessage {
     /** */
-    private float x;
+    @Order(0)
+    float x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Float extends GridH2ValueMessage {
         return ValueFloat.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeFloat(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readFloat();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -12;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Geometry.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Geometry.java
index 0dba35fa6c4..a229eaa7243 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Geometry.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Geometry.java
@@ -19,10 +19,8 @@ package 
org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 
 import static org.h2.util.StringUtils.convertBytesToHex;
@@ -47,7 +45,8 @@ public class GridH2Geometry extends GridH2ValueMessage {
     }
 
     /** */
-    private byte[] b;
+    @Order(0)
+    byte[] b;
 
     /**
      *
@@ -75,53 +74,6 @@ public class GridH2Geometry extends GridH2ValueMessage {
         }
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByteArray(b))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                b = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -21;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeRequest.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeRequest.java
index aa4f30cec07..c3dd299b0ed 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeRequest.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeRequest.java
@@ -17,40 +17,39 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.UUID;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.IgniteCodeGeneratingFail;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Range request.
  */
-@IgniteCodeGeneratingFail
 public class GridH2IndexRangeRequest implements Message {
     /** */
-    private UUID originNodeId;
+    @Order(0)
+    UUID originNodeId;
 
     /** */
-    private long qryId;
+    @Order(1)
+    long qryId;
 
     /** */
-    private int originSegmentId;
+    @Order(2)
+    int originSegmentId;
 
     /** */
-    private int segmentId;
+    @Order(3)
+    int segmentId;
 
     /** */
-    private int batchLookupId;
+    @Order(4)
+    int batchLookupId;
 
     /** */
-    @GridDirectCollection(Message.class)
-    private List<GridH2RowRangeBounds> bounds;
+    @Order(5)
+    List<GridH2RowRangeBounds> bounds;
 
     /**
      * @param bounds Range bounds list.
@@ -136,115 +135,6 @@ public class GridH2IndexRangeRequest implements Message {
         return batchLookupId;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeInt(batchLookupId))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeCollection(bounds, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeUuid(originNodeId))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeLong(qryId))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeInt(segmentId))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeInt(originSegmentId))
-                    return false;
-
-                writer.incrementState();
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                batchLookupId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                bounds = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                originNodeId = reader.readUuid();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                qryId = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                segmentId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 5:
-                originSegmentId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -30;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeResponse.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeResponse.java
index 1675f27ebcb..e24566f635a 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeResponse.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2IndexRangeResponse.java
@@ -17,21 +17,15 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.UUID;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.IgniteCodeGeneratingFail;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Range response message.
  */
-@IgniteCodeGeneratingFail
 public class GridH2IndexRangeResponse implements Message {
     /** */
     public static final byte STATUS_OK = 0;
@@ -43,29 +37,36 @@ public class GridH2IndexRangeResponse implements Message {
     public static final byte STATUS_NOT_FOUND = 2;
 
     /** */
-    private UUID originNodeId;
+    @Order(0)
+    UUID originNodeId;
 
     /** */
-    private long qryId;
+    @Order(1)
+    long qryId;
 
     /** */
-    private int segmentId;
+    @Order(2)
+    int segmentId;
 
     /** */
-    private int originSegmentId;
+    @Order(3)
+    int originSegmentId;
 
     /** */
-    private int batchLookupId;
+    @Order(4)
+    int batchLookupId;
 
     /** */
-    @GridDirectCollection(Message.class)
-    private List<GridH2RowRange> ranges;
+    @Order(5)
+    List<GridH2RowRange> ranges;
 
     /** */
-    private byte status;
+    @Order(6)
+    byte status;
 
     /** */
-    private String err;
+    @Order(7)
+    String err;
 
     /**
      * @param ranges Ranges.
@@ -179,143 +180,6 @@ public class GridH2IndexRangeResponse implements Message {
         return batchLookupId;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeInt(batchLookupId))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeString(err))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeUuid(originNodeId))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeLong(qryId))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeCollection(ranges, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeByte(status))
-                    return false;
-
-                writer.incrementState();
-
-            case 6:
-                if (!writer.writeInt(originSegmentId))
-                    return false;
-
-                writer.incrementState();
-
-            case 7:
-                if (!writer.writeInt(segmentId))
-                    return false;
-
-                writer.incrementState();
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                batchLookupId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                err = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                originNodeId = reader.readUuid();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                qryId = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                ranges = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 5:
-                status = reader.readByte();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 6:
-                originSegmentId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 7:
-                segmentId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -31;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Integer.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Integer.java
index 0e74311fbb5..d5791aae5dc 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Integer.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Integer.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueInt;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueInt;
  */
 public class GridH2Integer extends GridH2ValueMessage {
     /** */
-    private int x;
+    @Order(0)
+    int x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Integer extends GridH2ValueMessage {
         return ValueInt.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeInt(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -8;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2JavaObject.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2JavaObject.java
index aca5f57b2ec..422e545d351 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2JavaObject.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2JavaObject.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueJavaObject;
 
@@ -31,7 +29,8 @@ import static org.h2.util.StringUtils.convertBytesToHex;
  */
 public class GridH2JavaObject extends GridH2ValueMessage {
     /** */
-    private byte[] b;
+    @Order(0)
+    byte[] b;
 
     /**
      *
@@ -54,53 +53,6 @@ public class GridH2JavaObject extends GridH2ValueMessage {
         return ValueJavaObject.getNoCopy(null, b, null);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByteArray(b))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                b = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -19;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Long.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Long.java
index 85d8d7994c3..c341037a812 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Long.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Long.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueLong;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueLong;
  */
 public class GridH2Long extends GridH2ValueMessage {
     /** */
-    private long x;
+    @Order(0)
+    long x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Long extends GridH2ValueMessage {
         return ValueLong.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeLong(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -9;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Null.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Null.java
index 5c60e56d8ff..28dbf6eb7f5 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Null.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Null.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueNull;
 
@@ -31,6 +29,10 @@ public class GridH2Null extends GridH2ValueMessage {
     /** */
     public static GridH2Null INSTANCE = new GridH2Null();
 
+    /** Dummy field to use codegen serializer. */
+    @Order(0)
+    byte dummy;
+
     /**
      * Disallow new instance creation.
      */
@@ -43,31 +45,6 @@ public class GridH2Null extends GridH2ValueMessage {
         return ValueNull.INSTANCE;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings("SimplifiableIfStatement")
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        return super.readFrom(buf, reader);
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -4;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2QueryRequest.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2QueryRequest.java
index b905b0a5808..bf435f3440a 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2QueryRequest.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2QueryRequest.java
@@ -17,18 +17,14 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.GridDirectCollection;
-import org.apache.ignite.internal.GridDirectMap;
-import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.IgniteCodeGeneratingFail;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.binary.BinaryMarshaller;
 import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -40,16 +36,12 @@ 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 org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery.EMPTY_PARAMS;
 
 /**
  * Query request.
  */
-@IgniteCodeGeneratingFail
 public class GridH2QueryRequest implements Message, GridCacheQueryMarshallable 
{
     /**
      * Map query will not destroy context until explicit query cancel request 
will be received because distributed join
@@ -99,63 +91,73 @@ public class GridH2QueryRequest implements Message, 
GridCacheQueryMarshallable {
     private static final int FLAG_DATA_PAGE_SCAN_DISABLED = 0b10 << 
FLAG_DATA_PAGE_SCAN_SHIFT;
 
     /** */
-    private long reqId;
+    @Order(0)
+    long reqId;
 
     /** */
     @GridToStringInclude
-    @GridDirectCollection(Integer.class)
-    private List<Integer> caches;
+    @Order(1)
+    List<Integer> caches;
 
     /** Topology version. */
-    private AffinityTopologyVersion topVer;
+    @Order(2)
+    AffinityTopologyVersion topVer;
 
     /** Explicit partitions mappings for nodes. */
     @GridToStringInclude
-    @GridDirectMap(keyType = UUID.class, valueType = int[].class)
-    private Map<UUID, int[]> parts;
+    @Order(3)
+    Map<UUID, int[]> parts;
 
     /** Query partitions. */
     @GridToStringInclude
-    private int[] qryParts;
+    @Order(4)
+    int[] qryParts;
 
     /** */
-    private int pageSize;
+    @Order(5)
+    int pageSize;
 
     /** */
     @GridToStringInclude
-    @GridDirectCollection(Message.class)
-    private List<GridCacheSqlQuery> qrys;
+    @Order(6)
+    List<GridCacheSqlQuery> qrys;
 
     /** */
-    private byte flags;
+    @Order(7)
+    byte flags;
 
     /** */
     @GridToStringInclude
-    @GridDirectCollection(Message.class)
-    private Collection<QueryTable> tbls;
+    @Order(8)
+    Collection<QueryTable> tbls;
 
     /** */
-    private int timeout;
+    @Order(9)
+    int timeout;
 
     /** */
     @GridToStringInclude(sensitive = true)
-    @GridDirectTransient
-    private Object[] params;
+    Object[] params;
 
     /** */
-    private byte[] paramsBytes;
+    @Order(10)
+    byte[] paramsBytes;
 
     /** Schema name. */
-    private String schemaName;
+    @Order(11)
+    String schemaName;
 
     /** Query initiator id. */
-    private String qryInitiatorId;
+    @Order(12)
+    String qryInitiatorId;
 
     /** Id of the query assigned by {@link RunningQueryManager} on originator 
node. */
-    private long qryId;
+    @Order(13)
+    long qryId;
 
     /** */
-    private boolean explicitTimeout;
+    @Order(14)
+    boolean explicitTimeout;
 
     /**
      * Empty constructor.
@@ -547,241 +549,6 @@ public class GridH2QueryRequest implements Message, 
GridCacheQueryMarshallable {
         params = 
BinaryUtils.rawArrayFromBinary(ctx.marshaller().binaryMarshaller().unmarshal(paramsBytes,
 ldr));
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeCollection(caches, 
MessageCollectionItemType.INT))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeByte(flags))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeInt(pageSize))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeByteArray(paramsBytes))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeMap(parts, MessageCollectionItemType.UUID, 
MessageCollectionItemType.INT_ARR))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeCollection(qrys, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-            case 6:
-                if (!writer.writeLong(reqId))
-                    return false;
-
-                writer.incrementState();
-
-            case 7:
-                if (!writer.writeCollection(tbls, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-            case 8:
-                if (!writer.writeInt(timeout))
-                    return false;
-
-                writer.incrementState();
-
-            case 9:
-                if (!writer.writeAffinityTopologyVersion(topVer))
-                    return false;
-
-                writer.incrementState();
-
-            case 10:
-                if (!writer.writeIntArray(qryParts))
-                    return false;
-
-                writer.incrementState();
-
-            case 11:
-                if (!writer.writeString(schemaName))
-                    return false;
-
-                writer.incrementState();
-
-            case 12:
-                if (!writer.writeBoolean(explicitTimeout))
-                    return false;
-
-                writer.incrementState();
-
-            case 13:
-                if (!writer.writeLong(qryId))
-                    return false;
-
-                writer.incrementState();
-
-            case 14:
-                if (!writer.writeString(qryInitiatorId))
-                    return false;
-
-                writer.incrementState();
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                caches = reader.readCollection(MessageCollectionItemType.INT);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                flags = reader.readByte();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                pageSize = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                paramsBytes = reader.readByteArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                parts = reader.readMap(MessageCollectionItemType.UUID, 
MessageCollectionItemType.INT_ARR, false);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 5:
-                qrys = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 6:
-                reqId = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 7:
-                tbls = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 8:
-                timeout = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 9:
-                topVer = reader.readAffinityTopologyVersion();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 10:
-                qryParts = reader.readIntArray();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 11:
-                schemaName = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 12:
-                explicitTimeout = reader.readBoolean();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 13:
-                qryId = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 14:
-                qryInitiatorId = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -33;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowMessage.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowMessage.java
index 67654c0df70..b87d8f42bd7 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowMessage.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowMessage.java
@@ -17,24 +17,20 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.List;
-import org.apache.ignite.internal.GridDirectCollection;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * SQL Row message.
  */
 public class GridH2RowMessage implements Message {
     /** */
-    @GridDirectCollection(Message.class)
     @GridToStringInclude
-    private List<GridH2ValueMessage> vals;
+    @Order(0)
+    List<GridH2ValueMessage> vals;
 
     /**
      * @return Values of row.
@@ -50,47 +46,6 @@ public class GridH2RowMessage implements Message {
         this.vals = vals;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeCollection(vals, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                vals = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -32;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRange.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRange.java
index 579a00e0f90..469dc0b37a6 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRange.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRange.java
@@ -17,15 +17,11 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import java.util.List;
-import org.apache.ignite.internal.GridDirectCollection;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import 
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Range of rows.
@@ -35,15 +31,17 @@ public class GridH2RowRange implements Message {
     private static final int FLAG_PARTIAL = 1;
 
     /** */
-    private int rangeId;
+    @Order(0)
+    int rangeId;
 
     /** */
-    @GridDirectCollection(Message.class)
     @GridToStringInclude
-    private List<GridH2RowMessage> rows;
+    @Order(1)
+    List<GridH2RowMessage> rows;
 
     /** */
-    private byte flags;
+    @Order(2)
+    byte flags;
 
     /**
      * @param rangeId Range ID.
@@ -87,75 +85,6 @@ public class GridH2RowRange implements Message {
         return (flags & FLAG_PARTIAL) == FLAG_PARTIAL;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByte(flags))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeInt(rangeId))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeCollection(rows, 
MessageCollectionItemType.MSG))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                flags = reader.readByte();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                rangeId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                rows = reader.readCollection(MessageCollectionItemType.MSG);
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -34;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRangeBounds.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRangeBounds.java
index 1f85aa1a179..980de604d92 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRangeBounds.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2RowRangeBounds.java
@@ -17,24 +17,25 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Bounds of row range.
  */
 public class GridH2RowRangeBounds implements Message {
     /** */
-    private int rangeId;
+    @Order(0)
+    int rangeId;
 
     /** */
-    private GridH2RowMessage first;
+    @Order(1)
+    GridH2RowMessage first;
 
     /** */
-    private GridH2RowMessage last;
+    @Order(2)
+    GridH2RowMessage last;
 
     /**
      * @param rangeId Range ID.
@@ -94,75 +95,6 @@ public class GridH2RowRangeBounds implements Message {
         return last;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeMessage(first))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeMessage(last))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeInt(rangeId))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                first = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                last = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                rangeId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -35;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Short.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Short.java
index 2e482c26d78..e3f1fd0ecdf 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Short.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Short.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueShort;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueShort;
  */
 public class GridH2Short extends GridH2ValueMessage {
     /** */
-    private short x;
+    @Order(0)
+    short x;
 
     /**
      *
@@ -52,53 +51,6 @@ public class GridH2Short extends GridH2ValueMessage {
         return ValueShort.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeShort(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readShort();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -7;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2String.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2String.java
index a6e22da10e2..bf51be0cb0f 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2String.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2String.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueString;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueString;
  */
 public class GridH2String extends GridH2ValueMessage {
     /** */
-    private String x;
+    @Order(0)
+    String x;
 
     /**
      *
@@ -54,53 +53,6 @@ public class GridH2String extends GridH2ValueMessage {
         return ValueString.get(x);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeString(x))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                x = reader.readString();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -17;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Time.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Time.java
index 26801e7912a..2311b223c44 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Time.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Time.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueTime;
 
@@ -29,7 +27,8 @@ import org.h2.value.ValueTime;
  */
 public class GridH2Time extends GridH2ValueMessage {
     /** */
-    private long nanos;
+    @Order(0)
+    long nanos;
 
     /**
      *
@@ -55,53 +54,6 @@ public class GridH2Time extends GridH2ValueMessage {
         return ValueTime.fromNanos(nanos);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeLong(nanos))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                nanos = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -13;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Timestamp.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Timestamp.java
index 28e43bb6320..fbe95c79f9c 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Timestamp.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Timestamp.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueTimestamp;
 
@@ -29,10 +27,12 @@ import org.h2.value.ValueTimestamp;
  */
 public class GridH2Timestamp extends GridH2ValueMessage {
     /** */
-    private long date;
+    @Order(0)
+    long date;
 
     /** */
-    private long nanos;
+    @Order(1)
+    long nanos;
 
     /**
      *
@@ -58,67 +58,6 @@ public class GridH2Timestamp extends GridH2ValueMessage {
         return ValueTimestamp.fromDateValueAndNanos(date, nanos);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeLong(date))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeLong(nanos))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                date = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                nanos = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -15;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Uuid.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Uuid.java
index 771f5aa9539..9c0ba8f5934 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Uuid.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2Uuid.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.apache.ignite.internal.Order;
 import org.h2.value.Value;
 import org.h2.value.ValueUuid;
 
@@ -29,10 +27,12 @@ import org.h2.value.ValueUuid;
  */
 public class GridH2Uuid extends GridH2ValueMessage {
     /** */
-    private long high;
+    @Order(0)
+    long high;
 
     /** */
-    private long low;
+    @Order(1)
+    long low;
 
     /**
      *
@@ -58,67 +58,6 @@ public class GridH2Uuid extends GridH2ValueMessage {
         return ValueUuid.get(high, low);
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!super.writeTo(buf, writer))
-            return false;
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeLong(high))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeLong(low))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!super.readFrom(buf, reader))
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                high = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                low = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return -20;
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessage.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessage.java
index 38c4ac254bc..c24857ef13a 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessage.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessage.java
@@ -17,19 +17,14 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep.msg;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.IgniteCodeGeneratingFail;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 import org.h2.value.Value;
 
 /**
  * Abstract message wrapper for H2 values.
  */
-@IgniteCodeGeneratingFail
 public abstract class GridH2ValueMessage implements Message {
     /**
      * Gets H2 value.
@@ -39,14 +34,4 @@ public abstract class GridH2ValueMessage implements Message {
      * @throws IgniteCheckedException If failed.
      */
     public abstract Value value(GridKernalContext ctx) throws 
IgniteCheckedException;
-
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        return true;
-    }
 }
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessageFactory.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessageFactory.java
index b0f77127a3a..a10653c3744 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessageFactory.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2ValueMessageFactory.java
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.processors.query.h2.QueryTable;
+import org.apache.ignite.internal.processors.query.h2.QueryTableSerializer;
 import 
org.apache.ignite.internal.processors.query.h2.opt.GridH2ValueCacheObject;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.plugin.extensions.communication.MessageFactory;
@@ -36,34 +37,34 @@ import org.h2.value.Value;
 public class GridH2ValueMessageFactory implements MessageFactoryProvider {
     /** {@inheritDoc} */
     @Override public void registerAll(MessageFactory factory) {
-        factory.register((short)-4, () -> GridH2Null.INSTANCE);
-        factory.register((short)-5, GridH2Boolean::new);
-        factory.register((short)-6, GridH2Byte::new);
-        factory.register((short)-7, GridH2Short::new);
-        factory.register((short)-8, GridH2Integer::new);
-        factory.register((short)-9, GridH2Long::new);
-        factory.register((short)-10, GridH2Decimal::new);
-        factory.register((short)-11, GridH2Double::new);
-        factory.register((short)-12, GridH2Float::new);
-        factory.register((short)-13, GridH2Time::new);
-        factory.register((short)-14, GridH2Date::new);
-        factory.register((short)-15, GridH2Timestamp::new);
-        factory.register((short)-16, GridH2Bytes::new);
-        factory.register((short)-17, GridH2String::new);
-        factory.register((short)-18, GridH2Array::new);
-        factory.register((short)-19, GridH2JavaObject::new);
-        factory.register((short)-20, GridH2Uuid::new);
-        factory.register((short)-21, GridH2Geometry::new);
-        factory.register((short)-22, GridH2CacheObject::new);
-        factory.register((short)-30, GridH2IndexRangeRequest::new);
-        factory.register((short)-31, GridH2IndexRangeResponse::new);
-        factory.register((short)-32, GridH2RowMessage::new);
-        factory.register((short)-33, GridH2QueryRequest::new);
-        factory.register((short)-34, GridH2RowRange::new);
-        factory.register((short)-35, GridH2RowRangeBounds::new);
-        factory.register((short)-54, QueryTable::new);
-        factory.register((short)-55, GridH2DmlRequest::new);
-        factory.register((short)-56, GridH2DmlResponse::new);
+        factory.register((short)-4, () -> GridH2Null.INSTANCE, new 
GridH2NullSerializer());
+        factory.register((short)-5, GridH2Boolean::new, new 
GridH2BooleanSerializer());
+        factory.register((short)-6, GridH2Byte::new, new 
GridH2ByteSerializer());
+        factory.register((short)-7, GridH2Short::new, new 
GridH2ShortSerializer());
+        factory.register((short)-8, GridH2Integer::new, new 
GridH2IntegerSerializer());
+        factory.register((short)-9, GridH2Long::new, new 
GridH2LongSerializer());
+        factory.register((short)-10, GridH2Decimal::new, new 
GridH2DecimalSerializer());
+        factory.register((short)-11, GridH2Double::new, new 
GridH2DoubleSerializer());
+        factory.register((short)-12, GridH2Float::new, new 
GridH2FloatSerializer());
+        factory.register((short)-13, GridH2Time::new, new 
GridH2TimeSerializer());
+        factory.register((short)-14, GridH2Date::new, new 
GridH2DateSerializer());
+        factory.register((short)-15, GridH2Timestamp::new, new 
GridH2TimestampSerializer());
+        factory.register((short)-16, GridH2Bytes::new, new 
GridH2BytesSerializer());
+        factory.register((short)-17, GridH2String::new, new 
GridH2StringSerializer());
+        factory.register((short)-18, GridH2Array::new, new 
GridH2ArraySerializer());
+        factory.register((short)-19, GridH2JavaObject::new, new 
GridH2JavaObjectSerializer());
+        factory.register((short)-20, GridH2Uuid::new, new 
GridH2UuidSerializer());
+        factory.register((short)-21, GridH2Geometry::new, new 
GridH2GeometrySerializer());
+        factory.register((short)-22, GridH2CacheObject::new, new 
GridH2CacheObjectSerializer());
+        factory.register((short)-30, GridH2IndexRangeRequest::new, new 
GridH2IndexRangeRequestSerializer());
+        factory.register((short)-31, GridH2IndexRangeResponse::new, new 
GridH2IndexRangeResponseSerializer());
+        factory.register((short)-32, GridH2RowMessage::new, new 
GridH2RowMessageSerializer());
+        factory.register((short)-33, GridH2QueryRequest::new, new 
GridH2QueryRequestSerializer());
+        factory.register((short)-34, GridH2RowRange::new, new 
GridH2RowRangeSerializer());
+        factory.register((short)-35, GridH2RowRangeBounds::new, new 
GridH2RowRangeBoundsSerializer());
+        factory.register((short)-54, QueryTable::new, new 
QueryTableSerializer());
+        factory.register((short)-55, GridH2DmlRequest::new, new 
GridH2DmlRequestSerializer());
+        factory.register((short)-56, GridH2DmlResponse::new, new 
GridH2DmlResponseSerializer());
     }
 
     /**

Reply via email to