GG-9900 - Portable marshaller refactoring

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d838a9db
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d838a9db
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d838a9db

Branch: refs/heads/ignite-471
Commit: d838a9db947931c88fa4464053fdb80baa070c96
Parents: 6c4282a
Author: Valentin Kulichenko <vkuliche...@gridgain.com>
Authored: Wed Mar 11 18:08:53 2015 -0700
Committer: Valentin Kulichenko <vkuliche...@gridgain.com>
Committed: Wed Mar 11 18:08:53 2015 -0700

----------------------------------------------------------------------
 .../processors/rest/TestMemcacheClient.java     |  6 +-
 .../CacheRendezvousAffinityFunction.java        | 15 ++--
 .../cache/store/jdbc/CacheJdbcBlobStore.java    |  5 +-
 .../internal/GridEventConsumeHandler.java       | 14 +--
 .../ignite/internal/GridJobExecuteRequest.java  | 48 +++++------
 .../ignite/internal/GridJobExecuteResponse.java | 36 ++++----
 .../ignite/internal/GridJobSiblingsRequest.java | 12 +--
 .../internal/GridJobSiblingsResponse.java       | 11 +--
 .../internal/GridMessageListenHandler.java      | 14 +--
 .../ignite/internal/GridTaskSessionRequest.java | 12 +--
 .../GridClientOptimizedMarshaller.java          | 14 +--
 .../apache/ignite/internal/jdbc/JdbcUtils.java  |  5 +-
 .../checkpoint/GridCheckpointManager.java       |  7 +-
 .../managers/communication/GridIoManager.java   |  7 +-
 .../managers/communication/GridIoMessage.java   | 12 +--
 .../communication/GridIoUserMessage.java        | 24 +++---
 .../deployment/GridDeploymentRequest.java       | 12 +--
 .../eventstorage/GridEventStorageManager.java   |  3 +-
 .../eventstorage/GridEventStorageMessage.java   | 48 +++++------
 .../swapspace/GridSwapSpaceManager.java         |  5 +-
 .../affinity/GridAffinityMessage.java           | 11 +--
 .../cache/CacheEntrySerializablePredicate.java  |  8 +-
 .../cache/CacheInvokeDirectResult.java          |  8 +-
 .../internal/processors/cache/CacheObject.java  |  4 +-
 .../processors/cache/CacheObjectAdapter.java    | 12 +--
 .../cache/CacheObjectByteArrayImpl.java         |  4 +-
 .../processors/cache/CacheObjectImpl.java       |  6 +-
 .../processors/cache/GridCacheContext.java      |  5 +-
 .../processors/cache/GridCacheEntryInfo.java    | 18 ++--
 .../processors/cache/GridCacheMapEntry.java     | 34 ++++----
 .../processors/cache/GridCacheMessage.java      | 65 ++------------
 .../processors/cache/GridCacheSwapManager.java  | 56 ++++++------
 .../processors/cache/GridCacheUtils.java        |  3 +-
 .../processors/cache/KeyCacheObjectImpl.java    |  6 +-
 .../distributed/GridDistributedBaseMessage.java | 16 ++--
 .../GridDistributedLockResponse.java            |  8 +-
 .../GridDistributedTxPrepareRequest.java        | 16 ++--
 .../GridDistributedTxPrepareResponse.java       | 16 ++--
 .../dht/GridDhtAffinityAssignmentResponse.java  |  8 +-
 .../distributed/dht/GridDhtLockRequest.java     |  8 +-
 .../dht/atomic/GridDhtAtomicUpdateRequest.java  | 12 +--
 .../dht/atomic/GridDhtAtomicUpdateResponse.java |  8 +-
 .../dht/atomic/GridNearAtomicUpdateRequest.java | 16 ++--
 .../atomic/GridNearAtomicUpdateResponse.java    |  8 +-
 .../GridDhtPartitionDemandMessage.java          |  8 +-
 .../preloader/GridDhtPartitionSupplyPool.java   |  3 +-
 .../preloader/GridDhtPartitionsFullMessage.java |  8 +-
 .../GridDhtPartitionsSingleMessage.java         |  8 +-
 .../distributed/near/GridNearGetResponse.java   |  8 +-
 .../near/GridNearTxFinishResponse.java          |  8 +-
 .../cache/query/GridCacheQueryManager.java      | 32 ++++---
 .../cache/query/GridCacheQueryRequest.java      | 32 +++----
 .../cache/query/GridCacheQueryResponse.java     | 16 ++--
 .../continuous/CacheContinuousQueryHandler.java |  7 +-
 .../jdbc/GridCacheQueryJdbcMetadataTask.java    |  4 +-
 .../query/jdbc/GridCacheQueryJdbcTask.java      |  7 +-
 .../cache/transactions/IgniteTxEntry.java       | 16 ++--
 .../version/GridCacheRawVersionedEntry.java     | 23 +++--
 .../cacheobject/IgniteCacheObjectProcessor.java |  8 +-
 .../IgniteCacheObjectProcessorImpl.java         | 14 +--
 .../closure/GridClosureProcessor.java           |  3 +-
 .../continuous/GridContinuousMessage.java       | 12 +--
 .../continuous/GridContinuousProcessor.java     |  7 +-
 .../dataload/GridDataLoadRequest.java           | 24 +++---
 .../dataload/GridDataLoadResponse.java          | 12 +--
 .../dataload/GridDataLoaderProcessor.java       |  3 +-
 .../dataload/IgniteDataLoaderImpl.java          |  7 +-
 .../processors/igfs/IgfsAckMessage.java         |  8 +-
 .../processors/igfs/IgfsDeleteMessage.java      |  8 +-
 .../internal/processors/job/GridJobWorker.java  |  5 +-
 .../offheap/GridOffHeapProcessor.java           |  6 +-
 .../processors/query/GridQueryProcessor.java    |  6 +-
 .../handlers/task/GridTaskCommandHandler.java   |  3 +-
 .../handlers/task/GridTaskResultRequest.java    | 12 +--
 .../handlers/task/GridTaskResultResponse.java   | 12 +--
 .../rest/protocols/tcp/GridTcpRestParser.java   |  2 +-
 .../service/GridServiceProcessor.java           |  3 +-
 .../streamer/GridStreamerExecutionRequest.java  | 12 +--
 .../streamer/GridStreamerResponse.java          | 12 +--
 .../processors/streamer/IgniteStreamerImpl.java |  5 +-
 .../ignite/internal/util/GridByteArrayList.java |  2 +-
 .../ignite/internal/util/IgniteUtils.java       | 54 ++++++++++++
 .../util/io/GridByteBufferInputStream.java      | 91 ++++++++++++++++++++
 .../ignite/internal/util/io/GridDataInput.java  |  3 +-
 .../internal/util/io/GridUnsafeDataInput.java   |  5 --
 .../ignite/marshaller/AbstractMarshaller.java   | 13 +--
 .../apache/ignite/marshaller/Marshaller.java    | 14 +--
 .../optimized/OptimizedMarshaller.java          | 12 +--
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  5 +-
 .../TcpDiscoveryMulticastIpFinder.java          | 25 ++++--
 .../spi/swapspace/file/FileSwapSpaceSpi.java    |  2 +-
 .../java/org/apache/ignite/GridTestIoUtils.java |  3 +-
 .../internal/ClusterNodeMetricsSelfTest.java    |  3 +-
 .../cache/GridCacheEntryMemorySizeSelfTest.java |  6 +-
 .../cache/GridCacheVersionSelfTest.java         |  5 +-
 .../internal/util/nio/GridNioSelfTest.java      | 10 +--
 .../marshaller/GridMarshallerAbstractTest.java  | 47 +++++-----
 .../GridMarshallerPerformanceTest.java          |  2 +-
 .../OptimizedMarshallerEnumSelfTest.java        |  4 +-
 .../optimized/OptimizedMarshallerSelfTest.java  | 17 ++--
 .../optimized/OptimizedMarshallerTest.java      | 13 ++-
 .../OptimizedObjectStreamSelfTest.java          |  6 +-
 .../GridSessionCheckpointAbstractSelfTest.java  |  7 +-
 .../GridSwapSpaceSpiAbstractSelfTest.java       |  5 +-
 .../communication/HadoopMarshallerFilter.java   |  5 +-
 .../HadoopConcurrentHashMultimapSelftest.java   |  4 +-
 .../collections/HadoopSkipListSelfTest.java     |  2 +-
 .../testsuites/IgniteHadoopTestSuite.java       |  4 +-
 .../hibernate/CacheHibernateBlobStore.java      |  5 +-
 .../processors/query/h2/IgniteH2Indexing.java   |  9 +-
 .../query/h2/opt/GridLuceneIndex.java           | 25 ++++--
 .../cache/GridCacheOffHeapAndSwapSelfTest.java  |  4 +-
 112 files changed, 802 insertions(+), 640 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/TestMemcacheClient.java
----------------------------------------------------------------------
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/TestMemcacheClient.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/TestMemcacheClient.java
index 5f4ae8f..485e759 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/TestMemcacheClient.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/TestMemcacheClient.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.processors.rest;
 
 import org.apache.ignite.*;
-import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.logger.java.*;
 import org.apache.ignite.marshaller.*;
@@ -27,6 +26,7 @@ import org.jetbrains.annotations.*;
 
 import java.io.*;
 import java.net.*;
+import java.nio.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
@@ -679,7 +679,7 @@ final class TestMemcacheClient {
             flags |= BYTE_ARR_FLAG;
         }
         else {
-            bytes = jdkMarshaller.marshal(obj);
+            bytes = U.toArray(jdkMarshaller.marshal(obj));
 
             flags |= SERIALIZED_FLAG;
         }
@@ -698,7 +698,7 @@ final class TestMemcacheClient {
         assert flags >= 0;
 
         if ((flags & SERIALIZED_FLAG) != 0)
-            return jdkMarshaller.unmarshal(bytes, getClass().getClassLoader());
+            return jdkMarshaller.unmarshal(ByteBuffer.wrap(bytes), 
getClass().getClassLoader());
 
         int masked = flags & 0xff00;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/CacheRendezvousAffinityFunction.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/CacheRendezvousAffinityFunction.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/CacheRendezvousAffinityFunction.java
index ac0ac5e..1e257c8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/CacheRendezvousAffinityFunction.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/CacheRendezvousAffinityFunction.java
@@ -28,6 +28,7 @@ import org.apache.ignite.resources.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
+import java.nio.*;
 import java.security.*;
 import java.util.*;
 
@@ -289,16 +290,20 @@ public class CacheRendezvousAffinityFunction implements 
CacheAffinityFunction, E
             Object nodeHash = hashIdRslvr.resolve(node);
 
             try {
-                ByteArrayOutputStream out = new ByteArrayOutputStream();
+                ByteBuffer nodeHashBytes = 
ignite.configuration().getMarshaller().marshal(nodeHash);
 
-                byte[] nodeHashBytes = 
ignite.configuration().getMarshaller().marshal(nodeHash);
+                int len = 4 + nodeHashBytes.remaining();
 
-                out.write(U.intToBytes(part), 0, 4); // Avoid IOException.
-                out.write(nodeHashBytes, 0, nodeHashBytes.length); // Avoid 
IOException.
+                ByteBuffer buf = ByteBuffer.allocate(len);
+
+                buf.putInt(part);
+                buf.put(nodeHashBytes);
+
+                assert buf.array().length == len;
 
                 d.reset();
 
-                byte[] bytes = d.digest(out.toByteArray());
+                byte[] bytes = d.digest(buf.array());
 
                 long hash =
                       (bytes[0] & 0xFFL)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStore.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStore.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStore.java
index 08ad789..76179d4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStore.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcBlobStore.java
@@ -31,6 +31,7 @@ import org.jetbrains.annotations.*;
 import javax.cache.*;
 import javax.cache.integration.*;
 import javax.sql.*;
+import java.nio.*;
 import java.sql.*;
 import java.util.*;
 import java.util.concurrent.*;
@@ -560,7 +561,7 @@ public class CacheJdbcBlobStore<K, V> extends 
CacheStoreAdapter<K, V> {
      * @throws IgniteCheckedException If failed to convert.
      */
     protected byte[] toBytes(Object obj) throws IgniteCheckedException {
-        return ignite.configuration().getMarshaller().marshal(obj);
+        return U.toArray(ignite.configuration().getMarshaller().marshal(obj));
     }
 
     /**
@@ -575,7 +576,7 @@ public class CacheJdbcBlobStore<K, V> extends 
CacheStoreAdapter<K, V> {
         if (bytes == null || bytes.length == 0)
             return null;
 
-        return ignite.configuration().getMarshaller().unmarshal(bytes, 
getClass().getClassLoader());
+        return 
ignite.configuration().getMarshaller().unmarshal(ByteBuffer.wrap(bytes), 
getClass().getClassLoader());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
index d746e5e..caccb6f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
@@ -31,6 +31,7 @@ import org.apache.ignite.marshaller.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 
 import static org.apache.ignite.events.EventType.*;
@@ -57,7 +58,7 @@ class GridEventConsumeHandler implements 
GridContinuousHandler {
     private IgnitePredicate<Event> filter;
 
     /** Serialized filter. */
-    private byte[] filterBytes;
+    private ByteBuffer filterBytes;
 
     /** Deployment class name. */
     private String clsName;
@@ -298,7 +299,7 @@ class GridEventConsumeHandler implements 
GridContinuousHandler {
         out.writeBoolean(b);
 
         if (b) {
-            U.writeByteArray(out, filterBytes);
+            U.writeByteBuffer(out, filterBytes);
             U.writeString(out, clsName);
             out.writeObject(depInfo);
         }
@@ -309,11 +310,12 @@ class GridEventConsumeHandler implements 
GridContinuousHandler {
     }
 
     /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
     @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
         boolean b = in.readBoolean();
 
         if (b) {
-            filterBytes = U.readByteArray(in);
+            filterBytes = U.readByteBuffer(in);
             clsName = U.readString(in);
             depInfo = (GridDeploymentInfo)in.readObject();
         }
@@ -334,7 +336,7 @@ class GridEventConsumeHandler implements 
GridContinuousHandler {
         private Event evt;
 
         /** Serialized event. */
-        private byte[] bytes;
+        private ByteBuffer bytes;
 
         /** Cache name (for cache events only). */
         private String cacheName;
@@ -401,7 +403,7 @@ class GridEventConsumeHandler implements 
GridContinuousHandler {
             out.writeBoolean(b);
 
             if (b) {
-                U.writeByteArray(out, bytes);
+                U.writeByteBuffer(out, bytes);
                 U.writeString(out, cacheName);
                 out.writeObject(depInfo);
             }
@@ -414,7 +416,7 @@ class GridEventConsumeHandler implements 
GridContinuousHandler {
             boolean b = in.readBoolean();
 
             if (b) {
-                bytes = U.readByteArray(in);
+                bytes = U.readByteBuffer(in);
                 cacheName = U.readString(in);
                 depInfo = (GridDeploymentInfo)in.readObject();
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java
index f5b8824..18f942b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java
@@ -47,7 +47,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
 
     /** */
     @GridToStringExclude
-    private byte[] jobBytes;
+    private ByteBuffer jobBytes;
 
     /** */
     @GridToStringExclude
@@ -76,7 +76,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
 
     /** */
     @GridToStringExclude
-    private byte[] sesAttrsBytes;
+    private ByteBuffer sesAttrsBytes;
 
     /** */
     @GridToStringExclude
@@ -85,7 +85,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
 
     /** */
     @GridToStringExclude
-    private byte[] jobAttrsBytes;
+    private ByteBuffer jobAttrsBytes;
 
     /** */
     @GridToStringExclude
@@ -100,7 +100,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
     private Collection<ComputeJobSibling> siblings;
 
     /** */
-    private byte[] siblingsBytes;
+    private ByteBuffer siblingsBytes;
 
     /** Transient since needs to hold local creation time. */
     @GridDirectTransient
@@ -168,16 +168,16 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
             String taskName,
             String userVer,
             String taskClsName,
-            byte[] jobBytes,
+            ByteBuffer jobBytes,
             ComputeJob job,
             long startTaskTime,
             long timeout,
             @Nullable Collection<UUID> top,
-            byte[] siblingsBytes,
+            ByteBuffer siblingsBytes,
             Collection<ComputeJobSibling> siblings,
-            byte[] sesAttrsBytes,
+            ByteBuffer sesAttrsBytes,
             Map<Object, Object> sesAttrs,
-            byte[] jobAttrsBytes,
+            ByteBuffer jobAttrsBytes,
             Map<? extends Serializable, ? extends Serializable> jobAttrs,
             String cpSpi,
             IgniteUuid clsLdrId,
@@ -264,7 +264,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
     /**
      * @return Serialized job bytes.
      */
-    public byte[] getJobBytes() {
+    public ByteBuffer getJobBytes() {
         return jobBytes;
     }
 
@@ -301,7 +301,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
     /**
      * @return Serialized collection of split siblings.
      */
-    public byte[] getSiblingsBytes() {
+    public ByteBuffer getSiblingsBytes() {
         return siblingsBytes;
     }
 
@@ -315,7 +315,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
     /**
      * @return Session attributes.
      */
-    public byte[] getSessionAttributesBytes() {
+    public ByteBuffer getSessionAttributesBytes() {
         return sesAttrsBytes;
     }
 
@@ -329,7 +329,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
     /**
      * @return Job attributes.
      */
-    public byte[] getJobAttributesBytes() {
+    public ByteBuffer getJobAttributesBytes() {
         return jobAttrsBytes;
     }
 
@@ -460,14 +460,14 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 writer.incrementState();
 
             case 6:
-                if (!writer.writeByteArray("jobAttrsBytes", jobAttrsBytes))
-                    return false;
+//                if (!writer.writeByteArray("jobAttrsBytes", jobAttrsBytes))
+//                    return false;
 
                 writer.incrementState();
 
             case 7:
-                if (!writer.writeByteArray("jobBytes", jobBytes))
-                    return false;
+//                if (!writer.writeByteArray("jobBytes", jobBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -484,8 +484,8 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 writer.incrementState();
 
             case 10:
-                if (!writer.writeByteArray("sesAttrsBytes", sesAttrsBytes))
-                    return false;
+//                if (!writer.writeByteArray("sesAttrsBytes", sesAttrsBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -502,8 +502,8 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 writer.incrementState();
 
             case 13:
-                if (!writer.writeByteArray("siblingsBytes", siblingsBytes))
-                    return false;
+//                if (!writer.writeByteArray("siblingsBytes", siblingsBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -615,7 +615,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 reader.incrementState();
 
             case 6:
-                jobAttrsBytes = reader.readByteArray("jobAttrsBytes");
+//                jobAttrsBytes = reader.readByteArray("jobAttrsBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -623,7 +623,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 reader.incrementState();
 
             case 7:
-                jobBytes = reader.readByteArray("jobBytes");
+//                jobBytes = reader.readByteArray("jobBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -647,7 +647,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 reader.incrementState();
 
             case 10:
-                sesAttrsBytes = reader.readByteArray("sesAttrsBytes");
+//                sesAttrsBytes = reader.readByteArray("sesAttrsBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -671,7 +671,7 @@ public class GridJobExecuteRequest implements Message, 
GridTaskMessage {
                 reader.incrementState();
 
             case 13:
-                siblingsBytes = reader.readByteArray("siblingsBytes");
+//                siblingsBytes = reader.readByteArray("siblingsBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteResponse.java
index 45c916a..daa602d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteResponse.java
@@ -45,21 +45,21 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
     private IgniteUuid jobId;
 
     /** */
-    private byte[] gridExBytes;
+    private ByteBuffer gridExBytes;
 
     /** */
     @GridDirectTransient
     private IgniteException gridEx;
 
     /** */
-    private byte[] resBytes;
+    private ByteBuffer resBytes;
 
     /** */
     @GridDirectTransient
     private Object res;
 
     /** */
-    private byte[] jobAttrsBytes;
+    private ByteBuffer jobAttrsBytes;
 
     /** */
     @GridDirectTransient
@@ -96,11 +96,11 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
     public GridJobExecuteResponse(UUID nodeId,
         IgniteUuid sesId,
         IgniteUuid jobId,
-        byte[] gridExBytes,
+        ByteBuffer gridExBytes,
         IgniteException gridEx,
-        byte[] resBytes,
+        ByteBuffer resBytes,
         Object res,
-        byte[] jobAttrsBytes,
+        ByteBuffer jobAttrsBytes,
         Map<Object, Object> jobAttrs,
         boolean isCancelled)
     {
@@ -137,7 +137,7 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
     /**
      * @return Serialized job result.
      */
-    @Nullable public byte[] getJobResultBytes() {
+    @Nullable public ByteBuffer getJobResultBytes() {
         return resBytes;
     }
 
@@ -151,7 +151,7 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
     /**
      * @return Serialized job exception.
      */
-    @Nullable public byte[] getExceptionBytes() {
+    @Nullable public ByteBuffer getExceptionBytes() {
         return gridExBytes;
     }
 
@@ -165,7 +165,7 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
     /**
      * @return Serialized job attributes.
      */
-    @Nullable public byte[] getJobAttributesBytes() {
+    @Nullable public ByteBuffer getJobAttributesBytes() {
         return jobAttrsBytes;
     }
 
@@ -217,8 +217,8 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("gridExBytes", gridExBytes))
-                    return false;
+//                if (!writer.writeByteArray("gridExBytes", gridExBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -229,8 +229,8 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
                 writer.incrementState();
 
             case 2:
-                if (!writer.writeByteArray("jobAttrsBytes", jobAttrsBytes))
-                    return false;
+//                if (!writer.writeByteArray("jobAttrsBytes", jobAttrsBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -247,8 +247,8 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
                 writer.incrementState();
 
             case 5:
-                if (!writer.writeByteArray("resBytes", resBytes))
-                    return false;
+//                if (!writer.writeByteArray("resBytes", resBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -272,7 +272,7 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
 
         switch (reader.state()) {
             case 0:
-                gridExBytes = reader.readByteArray("gridExBytes");
+//                gridExBytes = reader.readByteArray("gridExBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -288,7 +288,7 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
                 reader.incrementState();
 
             case 2:
-                jobAttrsBytes = reader.readByteArray("jobAttrsBytes");
+//                jobAttrsBytes = reader.readByteArray("jobAttrsBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -312,7 +312,7 @@ public class GridJobExecuteResponse implements Message, 
GridTaskMessage {
                 reader.incrementState();
 
             case 5:
-                resBytes = reader.readByteArray("resBytes");
+//                resBytes = reader.readByteArray("resBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsRequest.java
index 36fc1dd..cb90583 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsRequest.java
@@ -39,7 +39,7 @@ public class GridJobSiblingsRequest implements Message {
     private Object topic;
 
     /** */
-    private byte[] topicBytes;
+    private ByteBuffer topicBytes;
 
     /**
      * Empty constructor required by {@link Externalizable}.
@@ -53,7 +53,7 @@ public class GridJobSiblingsRequest implements Message {
      * @param topic Topic.
      * @param topicBytes Serialized topic.
      */
-    public GridJobSiblingsRequest(IgniteUuid sesId, Object topic, byte[] 
topicBytes) {
+    public GridJobSiblingsRequest(IgniteUuid sesId, Object topic, ByteBuffer 
topicBytes) {
         assert sesId != null;
         assert topic != null || topicBytes != null;
 
@@ -79,7 +79,7 @@ public class GridJobSiblingsRequest implements Message {
     /**
      * @return Serialized topic.
      */
-    public byte[] topicBytes() {
+    public ByteBuffer topicBytes() {
         return topicBytes;
     }
 
@@ -102,8 +102,8 @@ public class GridJobSiblingsRequest implements Message {
                 writer.incrementState();
 
             case 1:
-                if (!writer.writeByteArray("topicBytes", topicBytes))
-                    return false;
+//                if (!writer.writeByteArray("topicBytes", topicBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -129,7 +129,7 @@ public class GridJobSiblingsRequest implements Message {
                 reader.incrementState();
 
             case 1:
-                topicBytes = reader.readByteArray("topicBytes");
+//                topicBytes = reader.readByteArray("topicBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsResponse.java
index c558f74..98de00e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridJobSiblingsResponse.java
@@ -40,7 +40,7 @@ public class GridJobSiblingsResponse implements Message {
     private Collection<ComputeJobSibling> siblings;
 
     /** */
-    private byte[] siblingsBytes;
+    private ByteBuffer siblingsBytes;
 
     /**
      * Empty constructor required by {@link Externalizable}.
@@ -53,7 +53,8 @@ public class GridJobSiblingsResponse implements Message {
      * @param siblings Siblings.
      * @param siblingsBytes Serialized siblings.
      */
-    public GridJobSiblingsResponse(@Nullable Collection<ComputeJobSibling> 
siblings, @Nullable byte[] siblingsBytes) {
+    public GridJobSiblingsResponse(@Nullable Collection<ComputeJobSibling> 
siblings,
+        @Nullable ByteBuffer siblingsBytes) {
         this.siblings = siblings;
         this.siblingsBytes = siblingsBytes;
     }
@@ -89,8 +90,8 @@ public class GridJobSiblingsResponse implements Message {
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("siblingsBytes", siblingsBytes))
-                    return false;
+//                if (!writer.writeByteArray("siblingsBytes", siblingsBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -108,7 +109,7 @@ public class GridJobSiblingsResponse implements Message {
 
         switch (reader.state()) {
             case 0:
-                siblingsBytes = reader.readByteArray("siblingsBytes");
+//                siblingsBytes = reader.readByteArray("siblingsBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridMessageListenHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridMessageListenHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridMessageListenHandler.java
index 6412b63..07f1766 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridMessageListenHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridMessageListenHandler.java
@@ -26,6 +26,7 @@ import org.apache.ignite.lang.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 
 /**
@@ -42,10 +43,10 @@ public class GridMessageListenHandler implements 
GridContinuousHandler {
     private IgniteBiPredicate<UUID, Object> pred;
 
     /** */
-    private byte[] topicBytes;
+    private ByteBuffer topicBytes;
 
     /** */
-    private byte[] predBytes;
+    private ByteBuffer predBytes;
 
     /** */
     private String clsName;
@@ -176,8 +177,8 @@ public class GridMessageListenHandler implements 
GridContinuousHandler {
         out.writeBoolean(depEnabled);
 
         if (depEnabled) {
-            U.writeByteArray(out, topicBytes);
-            U.writeByteArray(out, predBytes);
+            U.writeByteBuffer(out, topicBytes);
+            U.writeByteBuffer(out, predBytes);
             U.writeString(out, clsName);
             out.writeObject(depInfo);
         }
@@ -188,12 +189,13 @@ public class GridMessageListenHandler implements 
GridContinuousHandler {
     }
 
     /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
     @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
         depEnabled = in.readBoolean();
 
         if (depEnabled) {
-            topicBytes = U.readByteArray(in);
-            predBytes = U.readByteArray(in);
+            topicBytes = U.readByteBuffer(in);
+            predBytes = U.readByteBuffer(in);
             clsName = U.readString(in);
             depInfo = (GridDeploymentInfoBean)in.readObject();
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionRequest.java
index 55546be..c5ea60e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionRequest.java
@@ -39,7 +39,7 @@ public class GridTaskSessionRequest implements Message, 
GridTaskMessage {
     private IgniteUuid jobId;
 
     /** Changed attributes bytes. */
-    private byte[] attrsBytes;
+    private ByteBuffer attrsBytes;
 
     /** Changed attributes. */
     @GridDirectTransient
@@ -58,7 +58,7 @@ public class GridTaskSessionRequest implements Message, 
GridTaskMessage {
      * @param attrsBytes Serialized attributes.
      * @param attrs Attributes.
      */
-    public GridTaskSessionRequest(IgniteUuid sesId, IgniteUuid jobId, byte[] 
attrsBytes, Map<?, ?> attrs) {
+    public GridTaskSessionRequest(IgniteUuid sesId, IgniteUuid jobId, 
ByteBuffer attrsBytes, Map<?, ?> attrs) {
         assert sesId != null;
         assert attrsBytes != null;
         assert attrs != null;
@@ -72,7 +72,7 @@ public class GridTaskSessionRequest implements Message, 
GridTaskMessage {
     /**
      * @return Changed attributes (serialized).
      */
-    public byte[] getAttributesBytes() {
+    public ByteBuffer getAttributesBytes() {
         return attrsBytes;
     }
 
@@ -110,8 +110,8 @@ public class GridTaskSessionRequest implements Message, 
GridTaskMessage {
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("attrsBytes", attrsBytes))
-                    return false;
+//                if (!writer.writeByteArray("attrsBytes", attrsBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -141,7 +141,7 @@ public class GridTaskSessionRequest implements Message, 
GridTaskMessage {
 
         switch (reader.state()) {
             case 0:
-                attrsBytes = reader.readByteArray("attrsBytes");
+//                attrsBytes = reader.readByteArray("attrsBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
index 254962a..00f96b8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
@@ -70,17 +70,7 @@ public class GridClientOptimizedMarshaller implements 
GridClientMarshaller {
                 throw new IOException("Message serialization of given type is 
not supported: " +
                     obj.getClass().getName());
 
-            byte[] bytes = opMarsh.marshal(obj);
-
-            ByteBuffer buf = ByteBuffer.allocate(off + bytes.length);
-
-            buf.position(off);
-
-            buf.put(bytes);
-
-            buf.flip();
-
-            return buf;
+            return opMarsh.marshal(obj);
         }
         catch (IgniteCheckedException e) {
             throw new IOException(e);
@@ -90,7 +80,7 @@ public class GridClientOptimizedMarshaller implements 
GridClientMarshaller {
     /** {@inheritDoc} */
     @Override public <T> T unmarshal(byte[] bytes) throws IOException {
         try {
-            return opMarsh.unmarshal(bytes, null);
+            return opMarsh.unmarshal(ByteBuffer.wrap(bytes), null);
         }
         catch (IgniteCheckedException e) {
             throw new IOException(e);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcUtils.java 
b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcUtils.java
index 19575b2..b47942e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/JdbcUtils.java
@@ -22,6 +22,7 @@ import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.marshaller.*;
 import org.apache.ignite.marshaller.jdk.*;
 
+import java.nio.*;
 import java.sql.*;
 import java.util.*;
 import java.util.Date;
@@ -46,7 +47,7 @@ class JdbcUtils {
         assert args != null;
 
         try {
-            return MARSHALLER.marshal(args);
+            return U.toArray(MARSHALLER.marshal(args));
         }
         catch (IgniteCheckedException e) {
             throw new SQLException("Failed to unmarshal result.", e);
@@ -75,7 +76,7 @@ class JdbcUtils {
         assert bytes != null;
 
         try {
-            return MARSHALLER.unmarshal(bytes, null);
+            return MARSHALLER.unmarshal(ByteBuffer.wrap(bytes), null);
         }
         catch (IgniteCheckedException e) {
             throw new SQLException("Failed to unmarshal result.", e);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java
index d811a51..2cd9306 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java
@@ -36,6 +36,7 @@ import org.jdk8.backport.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 import java.util.concurrent.*;
 
@@ -137,7 +138,7 @@ public class GridCheckpointManager extends 
GridManagerAdapter<CheckpointSpi> {
         try {
             switch (scope) {
                 case GLOBAL_SCOPE: {
-                    byte[] data = state == null ? null : marsh.marshal(state);
+                    byte[] data = state == null ? null : 
U.toArray(marsh.marshal(state));
 
                     saved = getSpi(ses.getCheckpointSpi()).saveCheckpoint(key, 
data, timeout, override);
 
@@ -168,7 +169,7 @@ public class GridCheckpointManager extends 
GridManagerAdapter<CheckpointSpi> {
                         timeout = ses.getEndTime() - now;
 
                     // Save it first to avoid getting null value on another 
node.
-                    byte[] data = state == null ? null : marsh.marshal(state);
+                    byte[] data = state == null ? null : 
U.toArray(marsh.marshal(state));
 
                     Set<String> keys = keyMap.get(ses.getId());
 
@@ -293,7 +294,7 @@ public class GridCheckpointManager extends 
GridManagerAdapter<CheckpointSpi> {
 
             // Always deserialize with task/session class loader.
             if (data != null)
-                state = marsh.unmarshal(data, ses.getClassLoader());
+                state = marsh.unmarshal(ByteBuffer.wrap(data), 
ses.getClassLoader());
 
             record(EVT_CHECKPOINT_LOADED, key);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 392aa39..2e97cf1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -39,6 +39,7 @@ import org.jdk8.backport.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 import java.util.Map.*;
 import java.util.concurrent.*;
@@ -1120,8 +1121,8 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
         @Nullable Object topic, boolean ordered, long timeout) throws 
IgniteCheckedException {
         boolean loc = nodes.size() == 1 && 
F.first(nodes).id().equals(locNodeId);
 
-        byte[] serMsg = null;
-        byte[] serTopic = null;
+        ByteBuffer serMsg = null;
+        ByteBuffer serTopic = null;
 
         if (!loc) {
             serMsg = marsh.marshal(msg);
@@ -1667,7 +1668,7 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
             assert msgBody != null || ioMsg.bodyBytes() != null;
 
             try {
-                byte[] msgTopicBytes = ioMsg.topicBytes();
+                ByteBuffer msgTopicBytes = ioMsg.topicBytes();
 
                 Object msgTopic = ioMsg.topic();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
index 5c1122b..a0a411b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
@@ -41,7 +41,7 @@ public class GridIoMessage implements Message {
     private Object topic;
 
     /** Topic bytes. */
-    private byte[] topicBytes;
+    private ByteBuffer topicBytes;
 
     /** Topic ordinal. */
     private int topicOrd = -1;
@@ -122,14 +122,14 @@ public class GridIoMessage implements Message {
     /**
      * @return Topic bytes.
      */
-    byte[] topicBytes() {
+    ByteBuffer topicBytes() {
         return topicBytes;
     }
 
     /**
      * @param topicBytes Topic bytes.
      */
-    void topicBytes(byte[] topicBytes) {
+    void topicBytes(ByteBuffer topicBytes) {
         this.topicBytes = topicBytes;
     }
 
@@ -221,8 +221,8 @@ public class GridIoMessage implements Message {
                 writer.incrementState();
 
             case 5:
-                if (!writer.writeByteArray("topicBytes", topicBytes))
-                    return false;
+//                if (!writer.writeByteArray("topicBytes", topicBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -290,7 +290,7 @@ public class GridIoMessage implements Message {
                 reader.incrementState();
 
             case 5:
-                topicBytes = reader.readByteArray("topicBytes");
+//                topicBytes = reader.readByteArray("topicBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoUserMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoUserMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoUserMessage.java
index 05b9181..3ad4db1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoUserMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoUserMessage.java
@@ -42,7 +42,7 @@ public class GridIoUserMessage implements Message {
     private Object body;
 
     /** Serialized message body. */
-    private byte[] bodyBytes;
+    private ByteBuffer bodyBytes;
 
     /** Class loader ID. */
     private IgniteUuid clsLdrId;
@@ -52,7 +52,7 @@ public class GridIoUserMessage implements Message {
     private Object topic;
 
     /** Serialized message topic. */
-    private byte[] topicBytes;
+    private ByteBuffer topicBytes;
 
     /** Deployment mode. */
     private DeploymentMode depMode;
@@ -85,10 +85,10 @@ public class GridIoUserMessage implements Message {
      */
     GridIoUserMessage(
         Object body,
-        @Nullable byte[] bodyBytes,
+        @Nullable ByteBuffer bodyBytes,
         @Nullable String depClsName,
         @Nullable Object topic,
-        @Nullable byte[] topicBytes,
+        @Nullable ByteBuffer topicBytes,
         @Nullable IgniteUuid clsLdrId,
         @Nullable DeploymentMode depMode,
         @Nullable String userVer,
@@ -114,7 +114,7 @@ public class GridIoUserMessage implements Message {
     /**
      * @return Serialized message body.
      */
-    @Nullable public byte[] bodyBytes() {
+    @Nullable public ByteBuffer bodyBytes() {
         return bodyBytes;
     }
 
@@ -156,7 +156,7 @@ public class GridIoUserMessage implements Message {
     /**
      * @return Serialized message topic.
      */
-    @Nullable public byte[] topicBytes() {
+    @Nullable public ByteBuffer topicBytes() {
         return topicBytes;
     }
 
@@ -215,8 +215,8 @@ public class GridIoUserMessage implements Message {
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("bodyBytes", bodyBytes))
-                    return false;
+//                if (!writer.writeByteArray("bodyBytes", bodyBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -245,8 +245,8 @@ public class GridIoUserMessage implements Message {
                 writer.incrementState();
 
             case 5:
-                if (!writer.writeByteArray("topicBytes", topicBytes))
-                    return false;
+//                if (!writer.writeByteArray("topicBytes", topicBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -270,7 +270,7 @@ public class GridIoUserMessage implements Message {
 
         switch (reader.state()) {
             case 0:
-                bodyBytes = reader.readByteArray("bodyBytes");
+//                bodyBytes = reader.readByteArray("bodyBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -314,7 +314,7 @@ public class GridIoUserMessage implements Message {
                 reader.incrementState();
 
             case 5:
-                topicBytes = reader.readByteArray("topicBytes");
+//                topicBytes = reader.readByteArray("topicBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
index a6d80bb..1db8401 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentRequest.java
@@ -39,7 +39,7 @@ public class GridDeploymentRequest implements Message {
     private Object resTopic;
 
     /** Serialized topic. */
-    private byte[] resTopicBytes;
+    private ByteBuffer resTopicBytes;
 
     /** Requested class name. */
     private String rsrcName;
@@ -101,14 +101,14 @@ public class GridDeploymentRequest implements Message {
     /**
      * @return Serialized topic.
      */
-    byte[] responseTopicBytes() {
+    ByteBuffer responseTopicBytes() {
         return resTopicBytes;
     }
 
     /**
      * @param resTopicBytes Serialized topic.
      */
-    void responseTopicBytes(byte[] resTopicBytes) {
+    void responseTopicBytes(ByteBuffer resTopicBytes) {
         this.resTopicBytes = resTopicBytes;
     }
 
@@ -186,8 +186,8 @@ public class GridDeploymentRequest implements Message {
                 writer.incrementState();
 
             case 3:
-                if (!writer.writeByteArray("resTopicBytes", resTopicBytes))
-                    return false;
+//                if (!writer.writeByteArray("resTopicBytes", resTopicBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -235,7 +235,7 @@ public class GridDeploymentRequest implements Message {
                 reader.incrementState();
 
             case 3:
-                resTopicBytes = reader.readByteArray("resTopicBytes");
+//                resTopicBytes = reader.readByteArray("resTopicBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
index 39f266c..ed91690 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
@@ -36,6 +36,7 @@ import org.apache.ignite.spi.eventstorage.*;
 import org.jdk8.backport.*;
 import org.jetbrains.annotations.*;
 
+import java.nio.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
@@ -881,7 +882,7 @@ public class GridEventStorageManager extends 
GridManagerAdapter<EventStorageSpi>
 
             ioMgr.addMessageListener(resTopic, resLsnr);
 
-            byte[] serFilter = marsh.marshal(p);
+            ByteBuffer serFilter = marsh.marshal(p);
 
             GridDeployment dep = ctx.deploy().deploy(p.getClass(), 
U.detectClassLoader(p.getClass()));
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java
index 6f18aa6..065d1ff 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageMessage.java
@@ -41,24 +41,24 @@ public class GridEventStorageMessage implements Message {
     private Object resTopic;
 
     /** */
-    private byte[] resTopicBytes;
+    private ByteBuffer resTopicBytes;
 
     /** */
-    private byte[] filter;
+    private ByteBuffer filter;
 
     /** */
     @GridDirectTransient
     private Collection<Event> evts;
 
     /** */
-    private byte[] evtsBytes;
+    private ByteBuffer evtsBytes;
 
     /** */
     @GridDirectTransient
     private Throwable ex;
 
     /** */
-    private byte[] exBytes;
+    private ByteBuffer exBytes;
 
     /** */
     private IgniteUuid clsLdrId;
@@ -93,7 +93,7 @@ public class GridEventStorageMessage implements Message {
      */
     GridEventStorageMessage(
         Object resTopic,
-        byte[] filter,
+        ByteBuffer filter,
         String filterClsName,
         IgniteUuid clsLdrId,
         DeploymentMode depMode,
@@ -144,21 +144,21 @@ public class GridEventStorageMessage implements Message {
     /**
      * @return Serialized response topic.
      */
-    byte[] responseTopicBytes() {
+    ByteBuffer responseTopicBytes() {
         return resTopicBytes;
     }
 
     /**
      * @param resTopicBytes Serialized response topic.
      */
-    void responseTopicBytes(byte[] resTopicBytes) {
+    void responseTopicBytes(ByteBuffer resTopicBytes) {
         this.resTopicBytes = resTopicBytes;
     }
 
     /**
      * @return Filter.
      */
-    byte[] filter() {
+    ByteBuffer filter() {
         return filter;
     }
 
@@ -179,14 +179,14 @@ public class GridEventStorageMessage implements Message {
     /**
      * @return Serialized events.
      */
-    byte[] eventsBytes() {
+    ByteBuffer eventsBytes() {
         return evtsBytes;
     }
 
     /**
      * @param evtsBytes Serialized events.
      */
-    void eventsBytes(byte[] evtsBytes) {
+    void eventsBytes(ByteBuffer evtsBytes) {
         this.evtsBytes = evtsBytes;
     }
 
@@ -249,14 +249,14 @@ public class GridEventStorageMessage implements Message {
     /**
      * @return Serialized exception.
      */
-    byte[] exceptionBytes() {
+    ByteBuffer exceptionBytes() {
         return exBytes;
     }
 
     /**
      * @param exBytes Serialized exception.
      */
-    void exceptionBytes(byte[] exBytes) {
+    void exceptionBytes(ByteBuffer exBytes) {
         this.exBytes = exBytes;
     }
 
@@ -285,20 +285,20 @@ public class GridEventStorageMessage implements Message {
                 writer.incrementState();
 
             case 2:
-                if (!writer.writeByteArray("evtsBytes", evtsBytes))
-                    return false;
+//                if (!writer.writeByteArray("evtsBytes", evtsBytes))
+//                    return false;
 
                 writer.incrementState();
 
             case 3:
-                if (!writer.writeByteArray("exBytes", exBytes))
-                    return false;
+//                if (!writer.writeByteArray("exBytes", exBytes))
+//                    return false;
 
                 writer.incrementState();
 
             case 4:
-                if (!writer.writeByteArray("filter", filter))
-                    return false;
+//                if (!writer.writeByteArray("filter", filter))
+//                    return false;
 
                 writer.incrementState();
 
@@ -315,8 +315,8 @@ public class GridEventStorageMessage implements Message {
                 writer.incrementState();
 
             case 7:
-                if (!writer.writeByteArray("resTopicBytes", resTopicBytes))
-                    return false;
+//                if (!writer.writeByteArray("resTopicBytes", resTopicBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -360,7 +360,7 @@ public class GridEventStorageMessage implements Message {
                 reader.incrementState();
 
             case 2:
-                evtsBytes = reader.readByteArray("evtsBytes");
+//                evtsBytes = reader.readByteArray("evtsBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -368,7 +368,7 @@ public class GridEventStorageMessage implements Message {
                 reader.incrementState();
 
             case 3:
-                exBytes = reader.readByteArray("exBytes");
+//                exBytes = reader.readByteArray("exBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -376,7 +376,7 @@ public class GridEventStorageMessage implements Message {
                 reader.incrementState();
 
             case 4:
-                filter = reader.readByteArray("filter");
+//                filter = reader.readByteArray("filter");
 
                 if (!reader.isLastRead())
                     return false;
@@ -400,7 +400,7 @@ public class GridEventStorageMessage implements Message {
                 reader.incrementState();
 
             case 7:
-                resTopicBytes = reader.readByteArray("resTopicBytes");
+//                resTopicBytes = reader.readByteArray("resTopicBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/managers/swapspace/GridSwapSpaceManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/swapspace/GridSwapSpaceManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/swapspace/GridSwapSpaceManager.java
index ec50578..62aeb16 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/swapspace/GridSwapSpaceManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/swapspace/GridSwapSpaceManager.java
@@ -30,6 +30,7 @@ import org.apache.ignite.spi.*;
 import org.apache.ignite.spi.swapspace.*;
 import org.jetbrains.annotations.*;
 
+import java.nio.*;
 import java.util.*;
 
 import static org.apache.ignite.events.EventType.*;
@@ -413,7 +414,7 @@ public class GridSwapSpaceManager extends 
GridManagerAdapter<SwapSpaceSpi> {
         if (swapBytes == null)
             return null;
 
-        return marsh.unmarshal(swapBytes, ldr != null ? ldr : 
U.gridClassLoader());
+        return marsh.unmarshal(ByteBuffer.wrap(swapBytes), ldr != null ? ldr : 
U.gridClassLoader());
     }
 
     /**
@@ -424,7 +425,7 @@ public class GridSwapSpaceManager extends 
GridManagerAdapter<SwapSpaceSpi> {
      * @throws IgniteCheckedException If failed.
      */
     private byte[] marshal(Object obj) throws IgniteCheckedException {
-        return ctx.config().getMarshaller().marshal(obj);
+        return U.toArray(ctx.config().getMarshaller().marshal(obj));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityMessage.java
index 8378553..83caebf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityMessage.java
@@ -23,6 +23,7 @@ import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
 
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 
 /**
@@ -33,7 +34,7 @@ class GridAffinityMessage implements Externalizable {
     private static final long serialVersionUID = 0L;
 
     /** */
-    private byte[] src;
+    private ByteBuffer src;
 
     /** */
     private IgniteUuid clsLdrId;
@@ -60,7 +61,7 @@ class GridAffinityMessage implements Externalizable {
      * @param ldrParties Node loader participant map.
      */
     GridAffinityMessage(
-        byte[] src,
+        ByteBuffer src,
         String srcClsName,
         IgniteUuid clsLdrId,
         DeploymentMode depMode,
@@ -84,7 +85,7 @@ class GridAffinityMessage implements Externalizable {
     /**
      * @return Source object.
      */
-    public byte[] source() {
+    public ByteBuffer source() {
         return src;
     }
 
@@ -125,7 +126,7 @@ class GridAffinityMessage implements Externalizable {
 
     /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
-        U.writeByteArray(out, src);
+        U.writeByteBuffer(out, src);
 
         out.writeInt(depMode.ordinal());
 
@@ -137,7 +138,7 @@ class GridAffinityMessage implements Externalizable {
 
     /** {@inheritDoc} */
     @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
-        src = U.readByteArray(in);
+        src = U.readByteBuffer(in);
 
         depMode = DeploymentMode.fromOrdinal(in.readInt());
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntrySerializablePredicate.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntrySerializablePredicate.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntrySerializablePredicate.java
index 0c07bfd..b007465 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntrySerializablePredicate.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntrySerializablePredicate.java
@@ -37,7 +37,7 @@ public class CacheEntrySerializablePredicate implements 
CacheEntryPredicate {
     private CacheEntryPredicate p;
 
     /** */
-    private byte[] bytes;
+    private ByteBuffer bytes;
 
     /**
      * Required by {@link 
org.apache.ignite.plugin.extensions.communication.Message}.
@@ -109,8 +109,8 @@ public class CacheEntrySerializablePredicate implements 
CacheEntryPredicate {
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("bytes", bytes))
-                    return false;
+//                if (!writer.writeByteArray("bytes", bytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -128,7 +128,7 @@ public class CacheEntrySerializablePredicate implements 
CacheEntryPredicate {
 
         switch (reader.state()) {
             case 0:
-                bytes = reader.readByteArray("bytes");
+//                bytes = reader.readByteArray("bytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeDirectResult.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeDirectResult.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeDirectResult.java
index 7b153d3..d7b697c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeDirectResult.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeDirectResult.java
@@ -47,7 +47,7 @@ public class CacheInvokeDirectResult implements Message {
     private Exception err;
 
     /** */
-    private byte[] errBytes;
+    private ByteBuffer errBytes;
 
     /**
      * Required for {@link Message}.
@@ -142,8 +142,8 @@ public class CacheInvokeDirectResult implements Message {
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("errBytes", errBytes))
-                    return false;
+//                if (!writer.writeByteArray("errBytes", errBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -173,7 +173,7 @@ public class CacheInvokeDirectResult implements Message {
 
         switch (reader.state()) {
             case 0:
-                errBytes = reader.readByteArray("errBytes");
+//                errBytes = reader.readByteArray("errBytes");
 
                 if (!reader.isLastRead())
                     return false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
index 2f77e86..506583e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
@@ -21,6 +21,8 @@ import org.apache.ignite.*;
 import org.apache.ignite.plugin.extensions.communication.*;
 import org.jetbrains.annotations.*;
 
+import java.nio.*;
+
 /**
  *
  */
@@ -43,7 +45,7 @@ public interface CacheObject extends Message {
      * @return Value bytes.
      * @throws IgniteCheckedException If failed.
      */
-    public byte[] valueBytes(CacheObjectContext ctx) throws 
IgniteCheckedException;
+    public ByteBuffer valueBytes(CacheObjectContext ctx) throws 
IgniteCheckedException;
 
     /**
      * @return Object type.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index 173483d..c6dc767 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -35,7 +35,7 @@ public abstract class CacheObjectAdapter implements 
CacheObject, Externalizable
     protected Object val;
 
     /** */
-    protected byte[] valBytes;
+    protected ByteBuffer valBytes;
 
     /**
      * @param ctx Context.
@@ -54,12 +54,12 @@ public abstract class CacheObjectAdapter implements 
CacheObject, Externalizable
     @Override public void writeExternal(ObjectOutput out) throws IOException {
         assert valBytes != null;
 
-        U.writeByteArray(out, valBytes);
+        U.writeByteBuffer(out, valBytes);
     }
 
     /** {@inheritDoc} */
     @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
-        valBytes = U.readByteArray(in);
+        valBytes = U.readByteBuffer(in);
     }
 
     /** {@inheritDoc} */
@@ -71,7 +71,7 @@ public abstract class CacheObjectAdapter implements 
CacheObject, Externalizable
 
         switch (reader.state()) {
             case 0:
-                valBytes = reader.readByteArray("valBytes");
+//                valBytes = reader.readByteArray("valBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -96,8 +96,8 @@ public abstract class CacheObjectAdapter implements 
CacheObject, Externalizable
 
         switch (writer.state()) {
             case 0:
-                if (!writer.writeByteArray("valBytes", valBytes))
-                    return false;
+//                if (!writer.writeByteArray("valBytes", valBytes))
+//                    return false;
 
                 writer.incrementState();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
index 3f9d1dd..059eccf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
@@ -66,8 +66,8 @@ public class CacheObjectByteArrayImpl implements CacheObject, 
Externalizable {
     }
 
     /** {@inheritDoc} */
-    @Override public byte[] valueBytes(CacheObjectContext ctx) throws 
IgniteCheckedException {
-        return val;
+    @Override public ByteBuffer valueBytes(CacheObjectContext ctx) throws 
IgniteCheckedException {
+        return ByteBuffer.wrap(val);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
index 828d886..20e3efa 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.processors.cache;
 import org.apache.ignite.*;
 import org.jetbrains.annotations.*;
 
+import java.nio.*;
+
 /**
  *
  */
@@ -38,7 +40,7 @@ public class CacheObjectImpl extends CacheObjectAdapter {
      * @param val Value.
      * @param valBytes Value bytes.
      */
-    public CacheObjectImpl(Object val, byte[] valBytes) {
+    public CacheObjectImpl(Object val, ByteBuffer valBytes) {
         assert val != null || valBytes != null;
 
         this.val = val;
@@ -71,7 +73,7 @@ public class CacheObjectImpl extends CacheObjectAdapter {
     }
 
     /** {@inheritDoc} */
-    @Override public byte[] valueBytes(CacheObjectContext ctx) throws 
IgniteCheckedException {
+    @Override public ByteBuffer valueBytes(CacheObjectContext ctx) throws 
IgniteCheckedException {
         if (valBytes == null)
             valBytes = ctx.processor().marshal(ctx, val);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 1d30d81..04aeaee 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -58,6 +58,7 @@ import javax.cache.*;
 import javax.cache.configuration.*;
 import javax.cache.expiry.*;
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 import java.util.concurrent.*;
 
@@ -1769,7 +1770,7 @@ public class GridCacheContext<K, V> implements 
Externalizable {
      * @return Cache key object.
      * @throws IgniteCheckedException If failed.
      */
-    public KeyCacheObject toCacheKeyObject(byte[] bytes) throws 
IgniteCheckedException {
+    public KeyCacheObject toCacheKeyObject(ByteBuffer bytes) throws 
IgniteCheckedException {
         Object obj = ctx.cacheObjects().unmarshal(cacheObjCtx, bytes, 
deploy().localLoader());
 
         return cacheObjects().toCacheKeyObject(cacheObjCtx, obj, false);
@@ -1782,7 +1783,7 @@ public class GridCacheContext<K, V> implements 
Externalizable {
      * @return Cache object.
      * @throws IgniteCheckedException If failed.
      */
-    @Nullable public CacheObject unswapCacheObject(byte type, byte[] bytes, 
@Nullable IgniteUuid clsLdrId)
+    @Nullable public CacheObject unswapCacheObject(byte type, ByteBuffer 
bytes, @Nullable IgniteUuid clsLdrId)
         throws IgniteCheckedException
     {
         if (ctx.config().isPeerClassLoadingEnabled() && type != 
CacheObject.TYPE_BYTE_ARR) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
index 4845635..69ff9ff 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
@@ -41,7 +41,7 @@ public class GridCacheEntryInfo implements Message {
     private KeyCacheObject key;
 
     /** Key bytes, set when entry is read from swap and there is no key 
instance. */
-    private byte[] keyBytes;
+    private ByteBuffer keyBytes;
 
     /** Cache ID. */
     private int cacheId;
@@ -90,14 +90,14 @@ public class GridCacheEntryInfo implements Message {
     /**
      * @param bytes Key bytes.
      */
-    public void keyBytes(byte[] bytes) {
+    public void keyBytes(ByteBuffer bytes) {
         this.keyBytes = bytes;
     }
 
     /**
      * @return Key bytes.
      */
-    public byte[] keyBytes() {
+    public ByteBuffer keyBytes() {
         return keyBytes;
     }
 
@@ -223,8 +223,8 @@ public class GridCacheEntryInfo implements Message {
                 writer.incrementState();
 
             case 3:
-                if (!writer.writeByteArray("keyBytes", keyBytes))
-                    return false;
+//                if (!writer.writeByteArray("keyBytes", keyBytes))
+//                    return false;
 
                 writer.incrementState();
 
@@ -284,7 +284,7 @@ public class GridCacheEntryInfo implements Message {
                 reader.incrementState();
 
             case 3:
-                keyBytes = reader.readByteArray("keyBytes");
+//                keyBytes = reader.readByteArray("keyBytes");
 
                 if (!reader.isLastRead())
                     return false;
@@ -349,15 +349,15 @@ public class GridCacheEntryInfo implements Message {
         CacheObjectContext cacheObjCtx = ctx.cacheObjectContext();
 
         if (val != null)
-            size += val.valueBytes(cacheObjCtx).length;
+            size += U.toArray(val.valueBytes(cacheObjCtx)).length;
 
         if (key == null) {
             assert keyBytes != null;
 
-            size += keyBytes.length;
+            size += U.toArray(keyBytes).length;
         }
         else
-            size += key.valueBytes(cacheObjCtx).length;
+            size += U.toArray(key.valueBytes(cacheObjCtx)).length;
 
         return SIZE_OVERHEAD + size;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 04b2745..c60cfea 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -42,7 +42,6 @@ import javax.cache.processor.*;
 import java.io.*;
 import java.nio.*;
 import java.util.*;
-import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
 
 import static org.apache.ignite.events.EventType.*;
@@ -233,7 +232,7 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
                 if (val != null) {
                     byte type = val.type();
 
-                    valPtr = mem.putOffHeap(valPtr, 
val.valueBytes(cctx.cacheObjectContext()), type);
+                    valPtr = mem.putOffHeap(valPtr, 
U.toArray(val.valueBytes(cctx.cacheObjectContext())), type);
                 }
                 else {
                     mem.removeOffHeap(valPtr);
@@ -256,7 +255,7 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
      * @param valBytes Value bytes.
      * @return Length of value.
      */
-    private int valueLength0(@Nullable CacheObject val, @Nullable 
IgniteBiTuple<byte[], Byte> valBytes) {
+    private int valueLength0(@Nullable CacheObject val, @Nullable 
IgniteBiTuple<ByteBuffer, Byte> valBytes) {
         byte[] bytes = val != null ? 
(byte[])val.value(cctx.cacheObjectContext(), false) : null;
 
         if (bytes != null)
@@ -265,7 +264,7 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
         if (valBytes == null)
             return 0;
 
-        return valBytes.get1().length - (((valBytes.get2() == 
CacheObject.TYPE_BYTE_ARR) ? 0 : 6));
+        return U.toArray(valBytes.get1()).length - (((valBytes.get2() == 
CacheObject.TYPE_BYTE_ARR) ? 0 : 6));
     }
 
     /**
@@ -277,7 +276,7 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
         CacheObject val0 = val;
 
         if (val0 == null && valPtr != 0) {
-            IgniteBiTuple<byte[], Byte> t = valueBytes0();
+            IgniteBiTuple<ByteBuffer, Byte> t = valueBytes0();
 
             return 
cctx.cacheObjects().toCacheObject(cctx.cacheObjectContext(), t.get2(), 
t.get1());
         }
@@ -295,12 +294,12 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
         synchronized (this) {
             key.prepareMarshal(cctx.cacheObjectContext());
 
-            kb = key.valueBytes(cctx.cacheObjectContext());
+            kb = U.toArray(key.valueBytes(cctx.cacheObjectContext()));
 
             if (val != null) {
                 val.prepareMarshal(cctx.cacheObjectContext());
 
-                vb = val.valueBytes(cctx.cacheObjectContext());
+                vb = U.toArray(val.valueBytes(cctx.cacheObjectContext()));
             }
 
            extrasSize = extrasSize();
@@ -525,10 +524,10 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
                     val.value(cctx.cacheObjectContext(), 
false).getClass().getClassLoader());
             }
 
-            IgniteBiTuple<byte[], Byte> valBytes = valueBytes0();
+            IgniteBiTuple<ByteBuffer, Byte> valBytes = valueBytes0();
 
             cctx.swap().write(key(),
-                ByteBuffer.wrap(valBytes.get1()),
+                valBytes.get1(),
                 valBytes.get2(),
                 ver,
                 ttlExtras(),
@@ -544,19 +543,22 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
     /**
      * @return Value bytes and flag indicating whether value is byte array.
      */
-    protected IgniteBiTuple<byte[], Byte> valueBytes0() {
+    // TODO: IGNITE-471 - Switch to other class here???
+    protected IgniteBiTuple<ByteBuffer, Byte> valueBytes0() {
         assert Thread.holdsLock(this);
 
         if (valPtr != 0) {
             assert isOffHeapValuesOnly() || cctx.offheapTiered();
 
-            return cctx.unsafeMemory().get(valPtr);
+            IgniteBiTuple<byte[], Byte> t = cctx.unsafeMemory().get(valPtr);
+
+            return F.t(ByteBuffer.wrap(t.get1()), t.get2());
         }
         else {
             assert val != null;
 
             try {
-                byte[] bytes = val.valueBytes(cctx.cacheObjectContext());
+                ByteBuffer bytes = val.valueBytes(cctx.cacheObjectContext());
 
                 return new IgniteBiTuple<>(bytes, val.type());
             }
@@ -3678,8 +3680,8 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
             GridCacheQueryManager qryMgr = cctx.queries();
 
             if (qryMgr != null) {
-                qryMgr.store(key.value(cctx.cacheObjectContext(), false),
-                    null,
+                qryMgr.store(
+                    key.value(cctx.cacheObjectContext(), false),
                     CU.value(val, cctx, false),
                     null,
                     ver,
@@ -3915,11 +3917,11 @@ public abstract class GridCacheMapEntry implements 
GridCacheEntryEx {
                         valClsLdrId = cctx.deploy().getClassLoaderId(
                             
U.detectObjectClassLoader(val.value(cctx.cacheObjectContext(), false)));
 
-                    IgniteBiTuple<byte[], Byte> valBytes = valueBytes0();
+                    IgniteBiTuple<ByteBuffer, Byte> valBytes = valueBytes0();
 
                     ret = new GridCacheBatchSwapEntry(key(),
                         partition(),
-                        ByteBuffer.wrap(valBytes.get1()),
+                        valBytes.get1(),
                         valBytes.get2(),
                         ver,
                         ttlExtras(),

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
index c0cae2c..bbf1caf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java
@@ -366,14 +366,14 @@ public abstract class GridCacheMessage implements Message 
{
      * @return Marshalled collection.
      * @throws IgniteCheckedException If failed.
      */
-    @Nullable protected final byte[][] marshalInvokeArguments(@Nullable 
Object[] args,
+    @Nullable protected final ByteBuffer[] marshalInvokeArguments(@Nullable 
Object[] args,
         GridCacheSharedContext ctx) throws IgniteCheckedException {
         assert ctx != null;
 
         if (args == null || args.length == 0)
             return null;
 
-        byte[][] argsBytes = new byte[args.length][];
+        ByteBuffer[] argsBytes = new ByteBuffer[args.length];
 
         for (int i = 0; i < args.length; i++) {
             Object arg = args[i];
@@ -395,7 +395,7 @@ public abstract class GridCacheMessage implements Message {
      * @return Unmarshalled collection.
      * @throws IgniteCheckedException If failed.
      */
-    @Nullable protected final Object[] unmarshalInvokeArguments(@Nullable 
byte[][] byteCol,
+    @Nullable protected final Object[] unmarshalInvokeArguments(@Nullable 
ByteBuffer[] byteCol,
         GridCacheSharedContext ctx,
         ClassLoader ldr) throws IgniteCheckedException {
         assert ldr != null;
@@ -420,14 +420,14 @@ public abstract class GridCacheMessage implements Message 
{
      * @return Marshalled collection.
      * @throws IgniteCheckedException If failed.
      */
-    @Nullable protected List<byte[]> marshalCollection(@Nullable Collection<?> 
col,
+    @Nullable protected List<ByteBuffer> marshalCollection(@Nullable 
Collection<?> col,
         GridCacheSharedContext ctx) throws IgniteCheckedException {
         assert ctx != null;
 
         if (col == null)
             return null;
 
-        List<byte[]> byteCol = new ArrayList<>(col.size());
+        List<ByteBuffer> byteCol = new ArrayList<>(col.size());
 
         for (Object o : col) {
             if (ctx.deploymentEnabled())
@@ -540,7 +540,7 @@ public abstract class GridCacheMessage implements Message {
      * @return Unmarshalled collection.
      * @throws IgniteCheckedException If failed.
      */
-    @Nullable protected <T> List<T> unmarshalCollection(@Nullable 
Collection<byte[]> byteCol,
+    @Nullable protected <T> List<T> unmarshalCollection(@Nullable 
Collection<ByteBuffer> byteCol,
         GridCacheSharedContext ctx, ClassLoader ldr) throws 
IgniteCheckedException {
         assert ldr != null;
         assert ctx != null;
@@ -552,63 +552,12 @@ public abstract class GridCacheMessage implements Message 
{
 
         Marshaller marsh = ctx.marshaller();
 
-        for (byte[] bytes : byteCol)
+        for (ByteBuffer bytes : byteCol)
             col.add(bytes == null ? null : marsh.<T>unmarshal(bytes, ldr));
 
         return col;
     }
 
-    /**
-     * @param map Map to marshal.
-     * @param ctx Context.
-     * @return Marshalled map.
-     * @throws IgniteCheckedException If failed.
-     */
-    @SuppressWarnings("TypeMayBeWeakened") // Don't weaken type to clearly see 
that it's linked hash map.
-    @Nullable protected final LinkedHashMap<byte[], Boolean> 
marshalBooleanLinkedMap(
-        @Nullable LinkedHashMap<?, Boolean> map, GridCacheSharedContext ctx) 
throws IgniteCheckedException {
-        assert ctx != null;
-
-        if (map == null)
-            return null;
-
-        LinkedHashMap<byte[], Boolean> byteMap = 
U.newLinkedHashMap(map.size());
-
-        for (Map.Entry<?, Boolean> e : map.entrySet()) {
-            if (ctx.deploymentEnabled())
-                prepareObject(e.getKey(), ctx);
-
-            byteMap.put(CU.marshal(ctx, e.getKey()), e.getValue());
-        }
-
-        return byteMap;
-    }
-
-    /**
-     * @param byteMap Map to unmarshal.
-     * @param ctx Context.
-     * @param ldr Loader.
-     * @return Unmarshalled map.
-     * @throws IgniteCheckedException If failed.
-     */
-    @Nullable protected final <K1> LinkedHashMap<K1, Boolean> 
unmarshalBooleanLinkedMap(
-        @Nullable Map<byte[], Boolean> byteMap, GridCacheSharedContext ctx, 
ClassLoader ldr) throws IgniteCheckedException {
-        assert ldr != null;
-        assert ctx != null;
-
-        if (byteMap == null)
-            return null;
-
-        LinkedHashMap<K1, Boolean> map = U.newLinkedHashMap(byteMap.size());
-
-        Marshaller marsh = ctx.marshaller();
-
-        for (Map.Entry<byte[], Boolean> e : byteMap.entrySet())
-            map.put(marsh.<K1>unmarshal(e.getKey(), ldr), e.getValue());
-
-        return map;
-    }
-
     /** {@inheritDoc} */
     @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
         writer.setBuffer(buf);

Reply via email to