http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/IgniteCacheObjectProcessorImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/IgniteCacheObjectProcessorImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/IgniteCacheObjectProcessorImpl.java
index e1bfaae..6fcc507 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/IgniteCacheObjectProcessorImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/IgniteCacheObjectProcessorImpl.java
@@ -34,6 +34,8 @@ import org.jetbrains.annotations.*;
 import java.math.*;
 import java.util.*;
 
+import static org.apache.ignite.cache.CacheMemoryMode.*;
+
 /**
  *
  */
@@ -94,11 +96,52 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
     }
 
     /** {@inheritDoc} */
-    @Nullable public KeyCacheObject toCacheKeyObject(CacheObjectContext ctx, 
Object obj) {
+    @Nullable public KeyCacheObject toCacheKeyObject(CacheObjectContext ctx, 
Object obj, boolean userObj) {
         if (obj instanceof KeyCacheObject)
             return (KeyCacheObject)obj;
 
-        return new UserKeyCacheObjectImpl(obj, null);
+        return toCacheKeyObject0(obj, userObj);
+    }
+
+    /**
+     * @param obj Object.
+     * @param userObj If {@code true} then given object is object provided by 
user and should be copied
+     *        before stored in cache.
+     * @return Key cache object.
+     */
+    @SuppressWarnings("ExternalizableWithoutPublicNoArgConstructor")
+    protected KeyCacheObject toCacheKeyObject0(Object obj, boolean userObj) {
+        if (!userObj)
+            return new KeyCacheObjectImpl(obj, null);
+
+        return new KeyCacheObjectImpl(obj, null) {
+            @Nullable @Override public <T> T value(CacheObjectContext ctx, 
boolean cpy) {
+                return super.value(ctx, false);  // Do not need copy since 
user value is not in cache.
+            }
+
+            @Override public CacheObject prepareForCache(CacheObjectContext 
ctx) {
+                try {
+                    if (!ctx.processor().immutable(val)) {
+                        if (valBytes == null)
+                            valBytes = ctx.processor().marshal(ctx, val);
+
+                        ClassLoader ldr = ctx.p2pEnabled() ?
+                            IgniteUtils.detectClass(this.val).getClassLoader() 
: val.getClass().getClassLoader();
+
+                        Object val = ctx.processor().unmarshal(ctx,
+                            valBytes,
+                            ldr);
+
+                        return new KeyCacheObjectImpl(val, valBytes);
+                    }
+
+                    return new KeyCacheObjectImpl(val, valBytes);
+                }
+                catch (IgniteCheckedException e) {
+                    throw new IgniteException("Failed to marshal object: " + 
val, e);
+                }
+            }
+        };
     }
 
     /** {@inheritDoc} */
@@ -121,7 +164,7 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
             ClassLoader ldr =
                 valClsLdrId != null ? ctx.deploy().getClassLoader(valClsLdrId) 
: ctx.deploy().localLoader();
 
-            return toCacheObject(ctx.cacheObjectContext(), 
unmarshal(ctx.cacheObjectContext(), bytes, ldr));
+            return toCacheObject(ctx.cacheObjectContext(), 
unmarshal(ctx.cacheObjectContext(), bytes, ldr), false);
         }
         else
             return toCacheObject(ctx.cacheObjectContext(), type, bytes);
@@ -131,7 +174,7 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
     @Override public CacheObject toCacheObject(CacheObjectContext ctx, byte 
type, byte[] bytes) {
         switch (type) {
             case CacheObjectAdapter.TYPE_BYTE_ARR:
-                return new CacheObjectImpl(bytes, null);
+                return new CacheObjectByteArrayImpl(bytes);
 
             case CacheObjectAdapter.TYPE_REGULAR:
                 return new CacheObjectImpl(null, bytes);
@@ -141,11 +184,76 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public CacheObject toCacheObject(CacheObjectContext 
ctx, @Nullable Object obj) {
+    @Nullable @Override public CacheObject toCacheObject(CacheObjectContext 
ctx,
+        @Nullable Object obj,
+        boolean userObj)
+    {
         if (obj == null || obj instanceof CacheObject)
             return (CacheObject)obj;
 
-        return new UserCacheObjectImpl(obj);
+        return toCacheObject0(obj, userObj);
+    }
+
+    /**
+     * @param obj Object.
+     * @param userObj If {@code true} then given object is object provided by 
user and should be copied
+     *        before stored in cache.
+     * @return Cache object.
+     */
+    @SuppressWarnings("ExternalizableWithoutPublicNoArgConstructor")
+    protected CacheObject toCacheObject0(@Nullable Object obj, boolean 
userObj) {
+        assert obj != null;
+
+        if (obj instanceof byte[]) {
+            if (!userObj)
+                return new CacheObjectByteArrayImpl((byte[])obj);
+
+            return new CacheObjectByteArrayImpl((byte[]) obj) {
+                @Nullable @Override public <T> T value(CacheObjectContext ctx, 
boolean cpy) {
+                    return super.value(ctx, false); // Do not need copy since 
user value is not in cache.
+                }
+
+                @Override public CacheObject 
prepareForCache(CacheObjectContext ctx) {
+                    byte[] valCpy = Arrays.copyOf(val, val.length);
+
+                    return new CacheObjectByteArrayImpl(valCpy);
+                }
+            };
+        }
+
+        if (!userObj)
+            new CacheObjectImpl(obj, null);
+
+        return new CacheObjectImpl(obj, null) {
+            @Nullable @Override public <T> T value(CacheObjectContext ctx, 
boolean cpy) {
+                return super.value(ctx, false); // Do not need copy since user 
value is not in cache.
+            }
+
+            @Override public CacheObject prepareForCache(CacheObjectContext 
ctx) {
+                if (!ctx.processor().immutable(val)) {
+                    try {
+                        if (valBytes == null)
+                            valBytes = ctx.processor().marshal(ctx, val);
+
+                        if (ctx.unmarshalValues()) {
+                            ClassLoader ldr = ctx.p2pEnabled() ?
+                                
IgniteUtils.detectClass(this.val).getClassLoader() : 
val.getClass().getClassLoader();
+
+                            Object val = ctx.processor().unmarshal(ctx, 
valBytes, ldr);
+
+                            return new CacheObjectImpl(val, valBytes);
+                        }
+
+                        return new CacheObjectImpl(null, valBytes);
+                    }
+                    catch (IgniteCheckedException e) {
+                        throw new IgniteException("Failed to marshal object: " 
+ val, e);
+                    }
+                }
+                else
+                    return new CacheObjectImpl(val, valBytes);
+            }
+        };
     }
 
     /** {@inheritDoc} */
@@ -160,10 +268,20 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
             }
         }
 
-        return new CacheObjectContext(ctx,
-            new GridCacheDefaultAffinityKeyMapper(),
-            ccfg != null && ccfg.isCopyOnGet(),
-            ctx.config().isPeerClassLoadingEnabled() || (ccfg != null && 
ccfg.isQueryIndexEnabled()));
+        if (ccfg != null) {
+            CacheMemoryMode memMode = ccfg.getMemoryMode();
+
+            return new CacheObjectContext(ctx,
+                new GridCacheDefaultAffinityKeyMapper(),
+                ccfg.isCopyOnGet() && memMode == ONHEAP_TIERED,
+                ctx.config().isPeerClassLoadingEnabled() || 
ccfg.isQueryIndexEnabled());
+        }
+        else
+            return new CacheObjectContext(
+                ctx,
+                new GridCacheDefaultAffinityKeyMapper(),
+                false,
+                ctx.config().isPeerClassLoadingEnabled());
     }
 
     /** {@inheritDoc} */
@@ -209,21 +327,6 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public Object marshalToPortable(@Nullable Object obj) 
throws IgniteException {
-        return obj;
-    }
-
-    /** {@inheritDoc} */
-    @Nullable @Override public GridClientMarshaller portableMarshaller() {
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isPortable(GridClientMarshaller marsh) {
-        return false;
-    }
-
-    /** {@inheritDoc} */
     @Override public boolean isPortableObject(Object obj) {
         return false;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index c63e414..0f45991 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -153,7 +153,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
             switch (cmd) {
                 case CACHE_GET: {
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new GetCommand(key), req.portableMode());
+                        new GetCommand(key));
 
                     break;
                 }
@@ -175,7 +175,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                     }
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new GetAllCommand(keys0), req.portableMode());
+                        new GetAllCommand(keys0));
 
                     break;
                 }
@@ -187,7 +187,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                         throw new 
IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key, new
-                        PutCommand(key, ttl, val), req.portableMode());
+                        PutCommand(key, ttl, val));
 
                     break;
                 }
@@ -199,7 +199,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                         throw new 
IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new AddCommand(key, ttl, val), req.portableMode());
+                        new AddCommand(key, ttl, val));
 
                     break;
                 }
@@ -222,14 +222,14 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                     map = new HashMap<>(map);
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new PutAllCommand(map), req.portableMode());
+                        new PutAllCommand(map));
 
                     break;
                 }
 
                 case CACHE_REMOVE: {
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new RemoveCommand(key), req.portableMode());
+                        new RemoveCommand(key));
 
                     break;
                 }
@@ -241,7 +241,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                     Set<Object> keys = map == null ? null : new 
HashSet<>(map.keySet());
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new RemoveAllCommand(keys), req.portableMode());
+                        new RemoveAllCommand(keys));
 
                     break;
                 }
@@ -253,7 +253,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                         throw new 
IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new ReplaceCommand(key, ttl, val), req.portableMode());
+                        new ReplaceCommand(key, ttl, val));
 
                     break;
                 }
@@ -263,21 +263,21 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
                     final Object val2 = req0.value2();
 
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new CasCommand(val2, val1, key), req.portableMode());
+                        new CasCommand(val2, val1, key));
 
                     break;
                 }
 
                 case CACHE_APPEND: {
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new AppendCommand(key, req0), req.portableMode());
+                        new AppendCommand(key, req0));
 
                     break;
                 }
 
                 case CACHE_PREPEND: {
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, flags, key,
-                        new PrependCommand(key, req0), req.portableMode());
+                        new PrependCommand(key, req0));
 
                     break;
                 }
@@ -321,7 +321,6 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
      * @param flags Cache flags.
      * @param key Key to set affinity mapping in the response.
      * @param op Operation to perform.
-     * @param keepPortable Keep portable flag.
      * @return Operation result in future.
      * @throws IgniteCheckedException If failed
      */
@@ -331,8 +330,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
         final String cacheName,
         final CacheFlag[] flags,
         final Object key,
-        final CacheProjectionCommand op,
-        final boolean keepPortable) throws IgniteCheckedException {
+        final CacheProjectionCommand op) throws IgniteCheckedException {
 
         final boolean locExec =
             destId == null || destId.equals(ctx.localNodeId()) || 
replicatedCacheAvailable(cacheName);
@@ -340,9 +338,6 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
         if (locExec) {
             CacheProjection<?,?> prj = 
localCache(cacheName).forSubjectId(clientId).flagsOn(flags);
 
-            if (keepPortable)
-                prj = prj.keepPortable();
-
             return op.apply((CacheProjection<Object, Object>)prj, ctx).
                 chain(resultWrapper((CacheProjection<Object, Object>)prj, 
key));
         }
@@ -352,7 +347,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
             ctx.task().setThreadContext(TC_NO_FAILOVER, true);
 
             return ctx.closure().callAsync(BALANCE,
-                new FlaggedCacheOperationCallable(clientId, cacheName, flags, 
op, key, keepPortable),
+                new FlaggedCacheOperationCallable(clientId, cacheName, flags, 
op, key),
                 prj.nodes());
         }
     }
@@ -640,9 +635,6 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
         private final Object key;
 
         /** */
-        private final boolean keepPortable;
-
-        /** */
         @IgniteInstanceResource
         private Ignite g;
 
@@ -652,25 +644,23 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
          * @param flags Flags.
          * @param op Operation.
          * @param key Key.
-         * @param keepPortable Keep portable flag.
          */
-        private FlaggedCacheOperationCallable(UUID clientId, String cacheName, 
CacheFlag[] flags,
-            CacheProjectionCommand op, Object key, boolean keepPortable) {
+        private FlaggedCacheOperationCallable(UUID clientId,
+            String cacheName,
+            CacheFlag[] flags,
+            CacheProjectionCommand op,
+            Object key) {
             this.clientId = clientId;
             this.cacheName = cacheName;
             this.flags = flags;
             this.op = op;
             this.key = key;
-            this.keepPortable = keepPortable;
         }
 
         /** {@inheritDoc} */
         @Override public GridRestResponse call() throws Exception {
             CacheProjection<?, ?> prj = cache(g, 
cacheName).forSubjectId(clientId).flagsOn(flags);
 
-            if (keepPortable)
-                prj = prj.keepPortable();
-
             // Need to apply both operation and response transformation 
remotely
             // as cache could be inaccessible on local node and
             // exception processing should be consistent with local execution.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
index e2e230b..e42ae58 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
@@ -256,8 +256,7 @@ public class GridTaskCommandHandler extends 
GridRestCommandHandlerAdapter {
                                 if (desc.error() == null) {
                                     try {
                                         taskRestRes.setFinished(true);
-                                        
taskRestRes.setResult(req.portableMode() ?
-                                            
ctx.cacheObjects().marshalToPortable(desc.result()) : desc.result());
+                                        taskRestRes.setResult(desc.result());
 
                                         res.setResponse(taskRestRes);
                                         fut.onDone(res);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestNioListener.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestNioListener.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestNioListener.java
index 2cd50e5..3da47bb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestNioListener.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestNioListener.java
@@ -252,7 +252,6 @@ public class GridTcpRestNioListener extends 
GridNioServerListenerAdapter<GridCli
             restCacheReq.key(req.key());
             restCacheReq.value(req.value());
             restCacheReq.value2(req.value2());
-            restCacheReq.portableMode(proto.portableMode(ses));
 
             Map vals = req.values();
             if (vals != null)
@@ -295,8 +294,6 @@ public class GridTcpRestNioListener extends 
GridNioServerListenerAdapter<GridCli
 
             restTaskReq.taskName(req.taskName());
             restTaskReq.params(Arrays.asList(req.argument()));
-            restTaskReq.keepPortables(req.keepPortables());
-            restTaskReq.portableMode(proto.portableMode(ses));
 
             restReq = restTaskReq;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
index a0f7264..5645cf5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
@@ -82,14 +82,6 @@ public class GridTcpRestProtocol extends 
GridRestProtocolAdapter {
         return marsh;
     }
 
-    /**
-     * @param ses Session.
-     * @return Whether portable marshaller is used.
-     */
-    boolean portableMode(GridNioSession ses) {
-        return ctx.cacheObjects().isPortable(marshaller(ses));
-    }
-
     /** {@inheritDoc} */
     @Override public String name() {
         return "TCP binary";
@@ -159,7 +151,6 @@ public class GridTcpRestProtocol extends 
GridRestProtocolAdapter {
 
         marshMap.put(GridClientOptimizedMarshaller.ID, new 
GridClientOptimizedMarshaller());
         marshMap.put(GridClientJdkMarshaller.ID, new 
GridClientJdkMarshaller());
-        marshMap.put((byte)0, ctx.cacheObjects().portableMarshaller());
 
         lsnr.marshallers(marshMap);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestRequest.java
index f638703..2a80bbc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestRequest.java
@@ -47,9 +47,6 @@ public class GridRestRequest {
     /** Command. */
     private GridRestCommand cmd;
 
-    /** Portable mode flag. */
-    private boolean portableMode;
-
     /**
      * @return Destination ID.
      */
@@ -146,20 +143,6 @@ public class GridRestRequest {
         this.addr = addr;
     }
 
-    /**
-     * @return Portable mode flag.
-     */
-    public boolean portableMode() {
-        return portableMode;
-    }
-
-    /**
-     * @param portableMode Portable mode flag.
-     */
-    public void portableMode(boolean portableMode) {
-        this.portableMode = portableMode;
-    }
-
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(GridRestRequest.class, this);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestTaskRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestTaskRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestTaskRequest.java
index a8ad183..5b9bfa3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestTaskRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/GridRestTaskRequest.java
@@ -40,9 +40,6 @@ public class GridRestTaskRequest extends GridRestRequest {
     /** Timeout. */
     private long timeout;
 
-    /** Keep portables flag. */
-    private boolean keepPortables;
-
     /**
      * @return Task name, if specified, {@code null} otherwise.
      */
@@ -113,20 +110,6 @@ public class GridRestTaskRequest extends GridRestRequest {
         this.timeout = timeout;
     }
 
-    /**
-     * @return Keep portables flag.
-     */
-    public boolean keepPortables() {
-        return keepPortables;
-    }
-
-    /**
-     * @param keepPortables Keep portables flag.
-     */
-    public void keepPortables(boolean keepPortables) {
-        this.keepPortables = keepPortables;
-    }
-
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(GridRestTaskRequest.class, this, super.toString());

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheCompactTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheCompactTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheCompactTask.java
index 207ba15..d422217 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheCompactTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheCompactTask.java
@@ -56,31 +56,8 @@ public class VisorCacheCompactTask extends 
VisorOneNodeTask<Set<String>, Map<Str
 
         /** {@inheritDoc} */
         @Override protected Map<String, IgniteBiTuple<Integer, Integer>> 
run(Set<String> names) {
-            try {
-                final Map<String, IgniteBiTuple<Integer, Integer>> res = new 
HashMap<>();
-
-                for (GridCache cache : ignite.cachesx()) {
-                    String cacheName = cache.name();
-
-                    if (names.contains(cacheName)) {
-                        final Set keys = cache.keySet();
-
-                        int before = keys.size(), after = before;
-
-                        for (Object key : keys) {
-                            if (cache.compact(key))
-                                after--;
-                        }
-
-                        res.put(cacheName, new IgniteBiTuple<>(before, after));
-                    }
-                }
-
-                return res;
-            }
-            catch (IgniteCheckedException e) {
-                throw U.convertException(e);
-            }
+            // TODO IGNITE-436 remove command.
+            return Collections.emptyMap();
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java
index 20f7f58..4042546 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOnCopyFlagAbstractSelfTest.java
@@ -35,7 +35,7 @@ import static org.apache.ignite.cache.CacheDistributionMode.*;
 import static org.junit.Assert.*;
 
 /**
- * Tests {@link org.apache.ignite.cache.CacheInterceptor}.
+ * Tests that cache value is copied for get, interceptor and invoke closure.
  */
 public abstract class GridCacheOnCopyFlagAbstractSelfTest extends 
GridCacheAbstractSelfTest {
     /** */
@@ -50,6 +50,9 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest 
extends GridCacheAbstr
     /** */
     private static Interceptor interceptor;
 
+    /** */
+    private static boolean noInterceptor;
+
     /** {@inheritDoc} */
     @Override protected int gridCount() {
         return 1;
@@ -65,10 +68,19 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest 
extends GridCacheAbstr
     }
 
     /** {@inheritDoc} */
+    @Override protected void beforeTest() throws Exception {
+        super.beforeTest();
+
+        noInterceptor = false;
+    }
+
+    /** {@inheritDoc} */
     @Override protected void afterTest() throws Exception {
         super.afterTest();
 
-        interceptor.delegate(new CacheInterceptorAdapter<TestKey, 
TestValue>());
+        noInterceptor = true;
+
+        interceptor.delegate(null);
 
         for (int i = 0; i < gridCount(); i++)
             cache(i, null).clearLocally();
@@ -90,6 +102,7 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest 
extends GridCacheAbstr
     }
 
     /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
     @Override protected CacheConfiguration cacheConfiguration(String gridName) 
throws Exception {
         CacheConfiguration ccfg = super.cacheConfiguration(gridName);
 
@@ -251,6 +264,8 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest 
extends GridCacheAbstr
      * @throws Exception If failed.
      */
     public void testPutGet() throws Exception {
+        noInterceptor = true;
+
         IgniteCache<TestKey, TestValue> cache = grid(0).jcache(null);
 
         Map<TestKey, TestValue> map = new HashMap<>();
@@ -292,6 +307,52 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest 
extends GridCacheAbstr
     }
 
     /**
+     * @throws Exception If failed.
+     */
+    public void testPutGetByteArray() throws Exception {
+        noInterceptor = true;
+
+        IgniteCache<TestKey, byte[]> cache = grid(0).jcache(null);
+
+        Map<TestKey, byte[]> map = new HashMap<>();
+
+        for (int i = 0; i < ITER_CNT; i++) {
+            TestKey key = new TestKey(i, i);
+            byte[] val = new byte[10];
+
+            cache.put(key, val);
+
+            map.put(key, val);
+        }
+
+        GridCacheAdapter cache0 = internalCache(cache);
+
+        GridCacheContext cctx = cache0.context();
+
+        for (Map.Entry<TestKey, byte[]> e : map.entrySet()) {
+            GridCacheEntryEx entry = cache0.peekEx(e.getKey());
+
+            assertNotNull("No entry for key: " + e.getKey(), entry);
+
+            TestKey key0 = entry.key().value(cctx.cacheObjectContext(), false);
+
+            assertNotSame(key0, e.getKey());
+
+            TestKey key1 = entry.key().value(cctx.cacheObjectContext(), true);
+
+            assertNotSame(key0, key1);
+
+            byte[] val0 = entry.rawGet().value(cctx.cacheObjectContext(), 
false);
+
+            assertNotSame(val0, e.getValue());
+
+            byte[] val1 = entry.rawGet().value(cctx.cacheObjectContext(), 
true);
+
+            assertNotSame(val0, val1);
+        }
+    }
+
+    /**
      *
      */
     public static class TestKey implements Externalizable {
@@ -444,33 +505,44 @@ public abstract class GridCacheOnCopyFlagAbstractSelfTest 
extends GridCacheAbstr
     /**
      *
      */
-    private class Interceptor implements CacheInterceptor<TestKey, TestValue> {
+    private class Interceptor implements CacheInterceptor<TestKey, Object> {
         /** */
         CacheInterceptor<TestKey, TestValue> delegate = new 
CacheInterceptorAdapter<>();
 
         /** {@inheritDoc} */
-        @Override public TestValue onGet(TestKey key, @Nullable TestValue val) 
{
-            return delegate.onGet(key, val);
+        @Override public Object onGet(TestKey key, @Nullable Object val) {
+            if (!noInterceptor)
+                return delegate.onGet(key, (TestValue)val);
+
+            return val;
         }
 
         /** {@inheritDoc} */
-        @Override public TestValue onBeforePut(Cache.Entry<TestKey, TestValue> 
entry, TestValue newVal) {
-            return delegate.onBeforePut(entry, newVal);
+        @Override public Object onBeforePut(Cache.Entry<TestKey, Object> 
entry, Object newVal) {
+            if (!noInterceptor)
+                return delegate.onBeforePut((Cache.Entry)entry, 
(TestValue)newVal);
+
+            return newVal;
         }
 
         /** {@inheritDoc} */
-        @Override public void onAfterPut(Cache.Entry<TestKey, TestValue> 
entry) {
-            delegate.onAfterPut(entry);
+        @Override public void onAfterPut(Cache.Entry<TestKey, Object> entry) {
+            if (!noInterceptor)
+                delegate.onAfterPut((Cache.Entry)entry);
         }
 
         /** {@inheritDoc} */
-        @Override public IgniteBiTuple<Boolean, TestValue> 
onBeforeRemove(Cache.Entry<TestKey, TestValue> entry) {
-            return delegate.onBeforeRemove(entry);
+        @Override public IgniteBiTuple<Boolean, Object> 
onBeforeRemove(Cache.Entry<TestKey, Object> entry) {
+            if (!noInterceptor)
+                return 
(IgniteBiTuple)delegate.onBeforeRemove((Cache.Entry)entry);
+
+            return new IgniteBiTuple<>(false, entry.getValue());
         }
 
         /** {@inheritDoc} */
-        @Override public void onAfterRemove(Cache.Entry<TestKey, TestValue> 
entry) {
-            delegate.onAfterRemove(entry);
+        @Override public void onAfterRemove(Cache.Entry<TestKey, Object> 
entry) {
+            if (!noInterceptor)
+                delegate.onAfterRemove((Cache.Entry)entry);
         }
 
         /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
index d967a51..bd62b8d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
@@ -396,14 +396,6 @@ public class GridCacheTestEntryEx extends 
GridMetadataAwareAdapter implements Gr
     }
 
     /** @inheritDoc */
-    @Override public boolean compact(@Nullable CacheEntryPredicate[] filter)
-        throws GridCacheEntryRemovedException, IgniteCheckedException {
-        assert false;
-
-        return false;
-    }
-
-    /** @inheritDoc */
     @Override public boolean evictInternal(boolean swap, GridCacheVersion 
obsoleteVer,
         @Nullable CacheEntryPredicate[] filter) {
         assert false;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePartitionedReloadAllAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePartitionedReloadAllAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePartitionedReloadAllAbstractSelfTest.java
index bce3072..8522c81 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePartitionedReloadAllAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePartitionedReloadAllAbstractSelfTest.java
@@ -205,8 +205,7 @@ public abstract class 
GridCachePartitionedReloadAllAbstractSelfTest extends Grid
 
         for (IgniteCache<Integer, String> cache : caches) {
             for (Integer key : map.keySet()) {
-                if 
(aff.isPrimaryOrBackup(grid(caches.indexOf(cache)).localNode(), key) ||
-                    nearEnabled())
+                if 
(aff.isPrimaryOrBackup(grid(caches.indexOf(cache)).localNode(), key))
                     assertEquals(map.get(key), cache.localPeek(key));
                 else
                     assertNull(cache.localPeek(key));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d7dac569/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractQuerySelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractQuerySelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractQuerySelfTest.java
index 6c9ca23..1748fd9 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractQuerySelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractQuerySelfTest.java
@@ -470,25 +470,14 @@ public abstract class GridCacheAbstractQuerySelfTest 
extends GridCommonAbstractT
         cache.putx(1, new ObjectValue("test", 1));
         cache.putx(2, new ObjectValue("test", 2));
 
-        CacheEntryPredicate p = new  CacheEntrySerializablePredicate(new 
CacheEntryPredicateAdapter() {
-            @Override public boolean apply(GridCacheEntryEx e) {
-                ObjectValue val = CU.value(e.rawGet(), e.context(), false);
-
-                return val != null && val.intVal == 1;
-            }
-        });
-
-        CacheProjection<Integer, ObjectValue> cachePrj = 
((IgniteKernal)grid(0))
-            .<Integer, ObjectValue>cache(null).projection(p);
-
         CacheQuery<Map.Entry<Integer, ObjectValue>> qry =
-            cachePrj.queries().createFullTextQuery(ObjectValue.class, "test");
+            cache.queries().createFullTextQuery(ObjectValue.class, "test");
 
         CacheQueryFuture<Map.Entry<Integer, ObjectValue>> iter = qry.execute();
 
         assert iter != null;
 
-        int expCnt = 1;
+        int expCnt = 2;
 
         for (int i = 0; i < expCnt; i++)
             assert iter.next() != null;
@@ -850,36 +839,6 @@ public abstract class GridCacheAbstractQuerySelfTest 
extends GridCommonAbstractT
     /**
      * @throws Exception If failed.
      */
-    public void testReduceQueryOnProjection() throws Exception {
-        CacheProjection<String, Integer> c = 
((IgniteKernal)ignite).cache(null);
-
-        assert c.putx("key1", 1);
-        assert c.putx("key2", 2);
-        assert c.putx("key3", 3);
-        assert c.putx("key4", 4);
-        assert c.putx("key5", 5);
-
-        // Filter values less than 3.
-        CacheEntryPredicate p = new  CacheEntrySerializablePredicate(new 
CacheEntryPredicateAdapter() {
-            @Override public boolean apply(GridCacheEntryEx e) {
-                Integer val = CU.value(e.rawGet(), e.context(), false);
-
-                return val != null && val > 3;
-            }
-        });
-
-        CacheProjection<String, Integer> cachePrj = 
((IgniteKernal)ignite).<String, Integer>cache(null).projection(p);
-
-        CacheQuery<Map.Entry<String, Integer>> q = 
cachePrj.queries().createSqlQuery(Integer.class, "_val > 2");
-
-        Collection<Integer> res = q.execute(new SumRemoteReducer()).get();
-
-        assertEquals(9, F.sumInt(res));
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
     public void testEmptyObject() throws Exception {
         GridCache<EmptyObject, EmptyObject> cache = 
((IgniteKernal)ignite).cache(null);
 

Reply via email to