Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-51 2f43d32d1 -> 7f9a6630b


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 167c2e9..7f39503 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -366,7 +366,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                 return new GridFinishedFuture<>(cctx.kernalContext(), e);
             }
         }
-        else
+        else {
             return cctx.kernalContext().closure().callLocalSafe(
                 new GPC<Boolean>() {
                     @Override public Boolean call() throws Exception {
@@ -381,6 +381,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                     }
                 },
                 true);
+        }
     }
 
     /**
@@ -502,8 +503,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                         if (intercept || !F.isEmpty(e.entryProcessors()))
                             e.cached().unswap(true, false);
 
-                        // TODO IGNITE-51 (do not need convert to CacheObject 
to pass to store?).
-                        GridTuple3<GridCacheOperation, CacheObject, byte[]> 
res = applyTransformClosures(e, false);
+                        IgniteBiTuple<GridCacheOperation, CacheObject> res = 
applyTransformClosures(e, false);
 
                         GridCacheContext cacheCtx = e.context();
 
@@ -716,7 +716,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                     if (!F.isEmpty(txEntry.entryProcessors()) 
|| !F.isEmpty(txEntry.filters()))
                                         txEntry.cached().unswap(true, false);
 
-                                    GridTuple3<GridCacheOperation, 
CacheObject, byte[]> res = applyTransformClosures(txEntry,
+                                    IgniteBiTuple<GridCacheOperation, 
CacheObject> res = applyTransformClosures(txEntry,
                                         true);
 
                                     // For near local transactions we must 
record DHT version
@@ -740,7 +740,6 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
 
                                     GridCacheOperation op = res.get1();
                                     CacheObject val = res.get2();
-                                    byte[] valBytes = res.get3();
 
                                     // Deal with conflicts.
                                     GridCacheVersion explicitVer = 
txEntry.conflictVersion() != null ?
@@ -814,7 +813,6 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                             eventNodeId(),
                                             txEntry.nodeId(),
                                             val,
-                                            valBytes,
                                             false,
                                             false,
                                             txEntry.ttl(),
@@ -834,7 +832,6 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                                 eventNodeId(),
                                                 nodeId,
                                                 val,
-                                                valBytes,
                                                 false,
                                                 false,
                                                 txEntry.ttl(),
@@ -1101,7 +1098,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
 
     /**
      * Checks if there is a cached or swapped value for
-     * {@link #getAllAsync(GridCacheContext, Collection, GridCacheEntryEx, 
boolean, boolean)} method.
+     * {@link #getAllAsync(GridCacheContext, Collection, GridCacheEntryEx, 
boolean, boolean, boolean)} method.
      *
      * @param cacheCtx Cache context.
      * @param keys Key to enlist.
@@ -1112,20 +1109,22 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
      * @param keysCnt Keys count (to avoid call to {@code Collection.size()}).
      * @param deserializePortable Deserialize portable flag.
      * @param skipVals Skip values flag.
+     * @param keepCacheObjects Keep cache objects flag.
      * @throws IgniteCheckedException If failed.
      * @return Enlisted keys.
      */
     @SuppressWarnings({"RedundantTypeArguments"})
     private <K, V> Collection<KeyCacheObject> enlistRead(
         final GridCacheContext cacheCtx,
-        Collection<? extends K> keys,
+        Collection<KeyCacheObject> keys,
         @Nullable GridCacheEntryEx cached,
         @Nullable ExpiryPolicy expiryPlc,
         Map<K, V> map,
         Map<KeyCacheObject, GridCacheVersion> missed,
         int keysCnt,
         boolean deserializePortable,
-        boolean skipVals
+        boolean skipVals,
+        boolean keepCacheObjects
     ) throws IgniteCheckedException {
         assert !F.isEmpty(keys);
         assert keysCnt == keys.size();
@@ -1144,16 +1143,11 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
         // In this loop we cover only read-committed or optimistic 
transactions.
         // Transactions that are pessimistic and not read-committed are covered
         // outside of this loop.
-        for (K key : keys) {
-            if (key == null)
-                continue;
-
+        for (KeyCacheObject key : keys) {
             if (pessimistic() && !readCommitted() && !skipVals)
                 addActiveCache(cacheCtx);
 
-            KeyCacheObject cacheKey = cacheCtx.toCacheKeyObject(key);
-
-            IgniteTxKey txKey = cacheCtx.txKey(cacheKey);
+            IgniteTxKey txKey = cacheCtx.txKey(key);
 
             // Check write map (always check writes first).
             IgniteTxEntry txEntry = entry(txKey);
@@ -1167,14 +1161,8 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                     if (!F.isEmpty(txEntry.entryProcessors()))
                         val = txEntry.applyEntryProcessors(val);
 
-                    if (val != null) {
-                        Object val0 = val.value(cacheCtx, true);
-
-                        if (cacheCtx.portableEnabled())
-                            val0 = cacheCtx.unwrapPortableIfNeeded(val0, 
!deserializePortable);
-
-                        map.put(key, (V)CU.skipValue(val0, skipVals));
-                    }
+                    if (val != null)
+                        cacheCtx.addResult(map, key, val, skipVals, 
keepCacheObjects, deserializePortable, false);
                 }
                 else {
                     assert txEntry.op() == TRANSFORM || (groupLock() && 
!txEntry.groupLockEntry());
@@ -1205,15 +1193,16 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                 if (!F.isEmpty(txEntry.entryProcessors()))
                                     val = txEntry.applyEntryProcessors(val);
 
-                                Object val0 = val.value(cacheCtx, !skipVals);
-
-                                if (cacheCtx.portableEnabled())
-                                    val0 = 
cacheCtx.unwrapPortableIfNeeded(val0, !deserializePortable);
-
-                                map.put(key, (V)CU.skipValue(val0, skipVals));
+                                cacheCtx.addResult(map,
+                                    key,
+                                    val,
+                                    skipVals,
+                                    keepCacheObjects,
+                                    deserializePortable,
+                                    false);
                             }
                             else
-                                missed.put(cacheKey, 
txEntry.cached().version());
+                                missed.put(key, txEntry.cached().version());
 
                             break;
                         }
@@ -1233,10 +1222,10 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
             // First time access within transaction.
             else {
                 if (lockKeys == null && !skipVals)
-                    lockKeys = single ? Collections.singleton(cacheKey) : new 
ArrayList<KeyCacheObject>(keysCnt);
+                    lockKeys = single ? Collections.singleton(key) : new 
ArrayList<KeyCacheObject>(keysCnt);
 
                 if (!single && !skipVals)
-                    lockKeys.add(cacheKey);
+                    lockKeys.add(key);
 
                 while (true) {
                     GridCacheEntryEx entry;
@@ -1273,19 +1262,20 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                 accessPlc);
 
                             if (val != null) {
-                                Object val0 = val.value(cacheCtx, false);
-
-                                if (cacheCtx.portableEnabled())
-                                    val0 = 
cacheCtx.unwrapPortableIfNeeded(val0, !deserializePortable);
-
-                                map.put(key, (V)CU.skipValue(val0, skipVals));
+                                cacheCtx.addResult(map,
+                                    key,
+                                    val,
+                                    skipVals,
+                                    keepCacheObjects,
+                                    deserializePortable,
+                                    false);
                             }
                             else
-                                missed.put(cacheKey, ver);
+                                missed.put(key, ver);
                         }
                         else
                             // We must wait for the lock in pessimistic mode.
-                            missed.put(cacheKey, ver);
+                            missed.put(key, ver);
 
                         if (!readCommitted() && !skipVals) {
                             txEntry = addEntry(READ,
@@ -1392,22 +1382,24 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
 
     /**
      * Loads all missed keys for
-     * {@link #getAllAsync(GridCacheContext, Collection, GridCacheEntryEx, 
boolean, boolean)} method.
+     * {@link #getAllAsync(GridCacheContext, Collection, GridCacheEntryEx, 
boolean, boolean, boolean)} method.
      *
      * @param cacheCtx Cache context.
      * @param map Return map.
      * @param missedMap Missed keys.
      * @param redos Keys to retry.
      * @param deserializePortable Deserialize portable flag.
+     * @param keepCacheObjects Keep cache objects flag.
      * @return Loaded key-value pairs.
      */
     private <K, V> IgniteInternalFuture<Map<K, V>> checkMissed(
         final GridCacheContext cacheCtx,
         final Map<K, V> map,
         final Map<KeyCacheObject, GridCacheVersion> missedMap,
-        @Nullable final Collection<K> redos,
+        @Nullable final Collection<KeyCacheObject> redos,
         final boolean deserializePortable,
-        final boolean skipVals
+        final boolean skipVals,
+        final boolean keepCacheObjects
     ) {
         assert redos != null || pessimistic();
 
@@ -1443,7 +1435,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
 
                     CacheObject cacheVal = cacheCtx.toCacheObject(val);
 
-                    Object visibleVal = val;
+                    CacheObject visibleVal = cacheVal;
 
                     IgniteTxKey txKey = cacheCtx.txKey(key);
 
@@ -1506,16 +1498,30 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                             if (readCommitted() || groupLock() || skipVals) {
                                 cacheCtx.evicts().touch(e, topologyVersion());
 
-                                if (visibleVal != null)
-                                    map.put(key.<K>value(cacheCtx, false), 
(V)CU.skipValue(visibleVal, skipVals));
+                                if (visibleVal != null) {
+                                    cacheCtx.addResult(map,
+                                        key,
+                                        visibleVal,
+                                        skipVals,
+                                        keepCacheObjects,
+                                        deserializePortable,
+                                        false);
+                                }
                             }
                             else {
                                 assert txEntry != null;
 
                                 txEntry.setAndMarkValid(cacheVal);
 
-                                if (visibleVal != null)
-                                    map.put(key.<K>value(cacheCtx, false), 
(V)visibleVal);
+                                if (visibleVal != null) {
+                                    cacheCtx.addResult(map,
+                                        key,
+                                        visibleVal,
+                                        skipVals,
+                                        keepCacheObjects,
+                                        deserializePortable,
+                                        false);
+                                }
                             }
 
                             loaded.add(key);
@@ -1575,10 +1581,11 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
     /** {@inheritDoc} */
     @Override public <K, V> IgniteInternalFuture<Map<K, V>> getAllAsync(
         final GridCacheContext cacheCtx,
-        Collection<? extends K> keys,
+        Collection<KeyCacheObject> keys,
         @Nullable GridCacheEntryEx cached,
         final boolean deserializePortable,
-        final boolean skipVals) {
+        final boolean skipVals,
+        final boolean keepCacheObjects) {
         if (F.isEmpty(keys))
             return new GridFinishedFuture<>(cctx.kernalContext(), 
Collections.<K, V>emptyMap());
 
@@ -1595,7 +1602,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
 
             final Map<KeyCacheObject, GridCacheVersion> missed = new 
GridLeanMap<>(pessimistic() ? keysCnt : 0);
 
-            GridCacheProjectionImpl<K, V> prj = cacheCtx.projectionPerCall();
+            GridCacheProjectionImpl prj = cacheCtx.projectionPerCall();
 
             ExpiryPolicy expiryPlc = prj != null ? prj.expiry() : null;
 
@@ -1607,7 +1614,8 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                 missed,
                 keysCnt,
                 deserializePortable,
-                skipVals);
+                skipVals,
+                keepCacheObjects);
 
             if (single && missed.isEmpty())
                 return new GridFinishedFuture<>(cctx.kernalContext(), retMap);
@@ -1636,7 +1644,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
 
                         // Load keys only after the locks have been acquired.
                         for (KeyCacheObject cacheKey : lockKeys) {
-                            K keyVal = cacheKey.<K>value(cacheCtx, false);
+                            K keyVal = (K)(keepCacheObjects ? cacheKey : 
cacheKey.value(cacheCtx, false));
 
                             if (retMap.containsKey(keyVal))
                                 // We already have a return value.
@@ -1682,10 +1690,13 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                         if 
(!F.isEmpty(txEntry.entryProcessors()))
                                             val0 = 
txEntry.applyEntryProcessors(val0);
 
-                                        if (cacheCtx.portableEnabled())
-                                            val0 = 
cacheCtx.unwrapPortableIfNeeded(val0, !deserializePortable);
-
-                                        retMap.put(keyVal, (V)val0);
+                                        cacheCtx.addResult(retMap,
+                                            cacheKey,
+                                            val,
+                                            skipVals,
+                                            keepCacheObjects,
+                                            deserializePortable,
+                                            false);
                                     }
 
                                     // Even though we bring the value back 
from lock acquisition,
@@ -1718,8 +1729,15 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                             }
                         }
 
-                        if (!missed.isEmpty() && (cacheCtx.isReplicated() || 
cacheCtx.isLocal()))
-                            return checkMissed(cacheCtx, retMap, missed, null, 
deserializePortable, skipVals);
+                        if (!missed.isEmpty() && (cacheCtx.isReplicated() || 
cacheCtx.isLocal())) {
+                            return checkMissed(cacheCtx,
+                                retMap,
+                                missed,
+                                null,
+                                deserializePortable,
+                                skipVals,
+                                keepCacheObjects);
+                        }
 
                         return new GridFinishedFuture<>(cctx.kernalContext(), 
Collections.<K, V>emptyMap());
                     }
@@ -1764,12 +1782,14 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
             else {
                 assert optimistic() || readCommitted() || groupLock() || 
skipVals;
 
-                final Collection<K> redos = new ArrayList<>();
+                final Collection<KeyCacheObject> redos = new ArrayList<>();
 
                 if (!missed.isEmpty()) {
                     if (!readCommitted())
                         for (Iterator<KeyCacheObject> it = 
missed.keySet().iterator(); it.hasNext(); ) {
-                            K keyVal = it.next().value(cacheCtx, false);
+                            KeyCacheObject cacheKey = it.next();
+
+                            K keyVal = (K)(keepCacheObjects ? cacheKey : 
cacheKey.value(cacheCtx, false));
 
                             if (retMap.containsKey(keyVal))
                                 it.remove();
@@ -1781,7 +1801,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                     return new GridEmbeddedFuture<>(
                         cctx.kernalContext(),
                         // First future.
-                        checkMissed(cacheCtx, retMap, missed, redos, 
deserializePortable, skipVals),
+                        checkMissed(cacheCtx, retMap, missed, redos, 
deserializePortable, skipVals, keepCacheObjects),
                         // Closure that returns another future, based on 
result from first.
                         new PMC<Map<K, V>>() {
                             @Override public IgniteInternalFuture<Map<K, V>> 
postMiss(Map<K, V> map) {
@@ -1793,27 +1813,37 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                                     log.debug("Starting to future-recursively 
get values for keys: " + redos);
 
                                 // Future recursion.
-                                return getAllAsync(cacheCtx, redos, null, 
deserializePortable, skipVals);
+                                return getAllAsync(cacheCtx,
+                                    redos,
+                                    null,
+                                    deserializePortable,
+                                    skipVals,
+                                    true);
                             }
                         },
                         // Finalize.
                         new FinishClosure<Map<K, V>>() {
                             @Override Map<K, V> finish(Map<K, V> loaded) {
                                 for (Map.Entry<K, V> entry : 
loaded.entrySet()) {
-                                    // TODO IGNITE-51.
-                                    KeyCacheObject cacheKey = 
cacheCtx.toCacheKeyObject(entry.getKey());
+                                    KeyCacheObject cacheKey = 
(KeyCacheObject)entry.getKey();
 
                                     IgniteTxEntry txEntry = 
entry(cacheCtx.txKey(cacheKey));
 
-                                    V val = entry.getValue();
+                                    CacheObject val = 
(CacheObject)entry.getValue();
 
                                     if (!readCommitted())
-                                        
txEntry.readValue(cacheCtx.toCacheObject(val));
+                                        txEntry.readValue(val);
 
                                     if (!F.isEmpty(txEntry.entryProcessors()))
                                         val = 
txEntry.applyEntryProcessors(val);
 
-                                    retMap.put(entry.getKey(), val);
+                                    cacheCtx.addResult(retMap,
+                                        cacheKey,
+                                        val,
+                                        skipVals,
+                                        keepCacheObjects,
+                                        deserializePortable,
+                                        false);
                                 }
 
                                 return retMap;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
index 0391e58..43737e4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalEx.java
@@ -69,14 +69,17 @@ public interface IgniteTxLocalEx extends IgniteInternalTx {
      * @param cached Cached entry if this method is called from entry wrapper.
      *      Cached entry is passed if and only if there is only one key in 
collection of keys.
      * @param deserializePortable Deserialize portable flag.
+     * @param skipVals Skip values flag.
+     * @param keepCacheObjects Keep cache objects
      * @return Future for this get.
      */
     public <K, V> IgniteInternalFuture<Map<K, V>> getAllAsync(
         GridCacheContext cacheCtx,
-        Collection<? extends K> keys,
+        Collection<KeyCacheObject> keys,
         @Nullable GridCacheEntryEx cached,
         boolean deserializePortable,
-        boolean skipVals);
+        boolean skipVals,
+        boolean keepCacheObjects);
 
     /**
      * @param cacheCtx Cache context.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
index e7c401c..f9cb4cd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
@@ -367,8 +367,8 @@ public class IgniteDataLoaderImpl<K, V> implements 
IgniteDataLoader<K, V>, Delay
         // TODO IGNITE-51.
         Collection<? extends IgniteDataLoaderEntry> entries0 = 
F.viewReadOnly(entries, new C1<Entry<K, V>, IgniteDataLoaderEntry>() {
             @Override public IgniteDataLoaderEntry apply(Entry<K, V> e) {
-                KeyCacheObject key = cacheObjProc.toCacheKeyObject(null, 
e.getKey());
-                CacheObject val = cacheObjProc.toCacheObject(null, 
e.getValue());
+                KeyCacheObject key = 
cacheObjProc.toCacheKeyObject(cacheObjCtx, e.getKey());
+                CacheObject val = cacheObjProc.toCacheObject(cacheObjCtx, 
e.getValue(), null);
 
                 return new IgniteDataLoaderEntry(key, val);
             }
@@ -461,8 +461,8 @@ public class IgniteDataLoaderImpl<K, V> implements 
IgniteDataLoader<K, V>, Delay
     @Override public IgniteFuture<?> addData(K key, V val) {
         A.notNull(key, "key");
 
-        KeyCacheObject key0 = cacheObjProc.toCacheKeyObject(null, key);
-        CacheObject val0 = cacheObjProc.toCacheObject(null, val);
+        KeyCacheObject key0 = cacheObjProc.toCacheKeyObject(cacheObjCtx, key);
+        CacheObject val0 = cacheObjProc.toCacheObject(cacheObjCtx, val, null);
 
         return addDataInternal(Collections.singleton(new 
IgniteDataLoaderEntry(key0, val0)));
     }
@@ -1332,7 +1332,6 @@ public class IgniteDataLoaderImpl<K, V> implements 
IgniteDataLoader<K, V>, Delay
                     entry.unswap(true, false);
 
                     entry.initialValue(e.getValue(),
-                        null,
                         ver,
                         CU.TTL_ETERNAL,
                         CU.EXPIRE_TIME_ETERNAL,

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java
index 880445f..5da5ee9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/GridPortableProcessor.java
@@ -158,7 +158,7 @@ public interface GridPortableProcessor extends 
GridProcessor {
      * @param obj Object.
      * @return Cache object.
      */
-    @Nullable public CacheObject toCacheObject(CacheObjectContext ctx, 
@Nullable Object obj);
+    @Nullable public CacheObject toCacheObject(CacheObjectContext ctx, 
@Nullable Object obj, byte[] bytes);
 
     /**
      * @param obj Key value.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/os/GridOsPortableProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/os/GridOsPortableProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/os/GridOsPortableProcessor.java
index 8738bf4..414c292 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/os/GridOsPortableProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/portable/os/GridOsPortableProcessor.java
@@ -143,10 +143,13 @@ public class GridOsPortableProcessor extends 
IgniteCacheObjectProcessorAdapter {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public CacheObject toCacheObject(CacheObjectContext 
ctx, @Nullable Object obj) {
-        if (obj == null || obj instanceof CacheObject)
+    @Nullable @Override public CacheObject toCacheObject(CacheObjectContext 
ctx, @Nullable Object obj, byte[] bytes) {
+        if ((obj == null && bytes == null) || obj instanceof CacheObject)
             return (CacheObject)obj;
 
+        if (bytes != null)
+            return new CacheObjectImpl(obj, bytes);
+
         return new UserCacheObjectImpl(obj);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
index 1aa7c96..b53386c 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
@@ -1460,8 +1460,7 @@ public abstract class GridCacheAbstractFullApiSelfTest 
extends GridCacheAbstract
             m.put(null, 2);
 
             GridTestUtils.assertThrows(log, new Callable<Void>() {
-                @Override
-                public Void call() throws Exception {
+                @Override public Void call() throws Exception {
                     cache.putAll(m);
 
                     return null;
@@ -1480,8 +1479,7 @@ public abstract class GridCacheAbstractFullApiSelfTest 
extends GridCacheAbstract
             m.put("key4", null);
 
             GridTestUtils.assertThrows(log, new Callable<Void>() {
-                @Override
-                public Void call() throws Exception {
+                @Override public Void call() throws Exception {
                     cache.putAll(m);
 
                     return null;
@@ -1696,7 +1694,7 @@ public abstract class GridCacheAbstractFullApiSelfTest 
extends GridCacheAbstract
 
             IgniteFuture<Integer> fut1 = cacheAsync.future();
 
-            assert fut1.get() == null;
+            assertNull(fut1.get());
             assertEquals((Integer)1, cache.get("key"));
 
             cacheAsync.getAndPutIfAbsent("key", 2);
@@ -3934,7 +3932,7 @@ public abstract class GridCacheAbstractFullApiSelfTest 
extends GridCacheAbstract
         CacheAffinity<Integer> aff = ignite(0).affinity(null);
 
         boolean near = cfg.getDistributionMode() == 
CacheDistributionMode.NEAR_PARTITIONED ||
-                cfg.getDistributionMode() == CacheDistributionMode.NEAR_ONLY;
+            cfg.getDistributionMode() == CacheDistributionMode.NEAR_ONLY;
 
         ClusterNode locNode = ignite(0).cluster().localNode();
 
@@ -3964,7 +3962,7 @@ public abstract class GridCacheAbstractFullApiSelfTest 
extends GridCacheAbstract
 
             assertEquals(i, getObj1.val);
 
-            if (loc)
+            if (loc && !offHeapValues())
                 assertSame("Same expected [key=" + i + ", primary=" + primary 
+ ", backup=" + backup + ']',
                     putObj1,
                     getObj1);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/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 6cdd97e..40691d8 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
@@ -453,7 +453,6 @@ public class GridCacheTestEntryEx extends 
GridMetadataAwareAdapter implements Gr
         UUID evtNodeId,
         UUID affNodeId,
         @Nullable CacheObject val,
-        @Nullable byte[] valBytes,
         boolean writeThrough,
         boolean retval,
         long ttl,
@@ -467,7 +466,7 @@ public class GridCacheTestEntryEx extends 
GridMetadataAwareAdapter implements Gr
     }
 
     /** {@inheritDoc} */
-    @Override public GridTuple3<Boolean, CacheObject, 
EntryProcessorResult<Object>> innerUpdateLocal(
+    @Override public GridTuple3<Boolean, Object, EntryProcessorResult<Object>> 
innerUpdateLocal(
         GridCacheVersion ver,
         GridCacheOperation op,
         @Nullable Object writeObj,
@@ -492,7 +491,6 @@ public class GridCacheTestEntryEx extends 
GridMetadataAwareAdapter implements Gr
         UUID affNodeId,
         GridCacheOperation op,
         @Nullable Object val,
-        @Nullable byte[] valBytes,
         @Nullable Object[] invokeArgs,
         boolean writeThrough,
         boolean retval,
@@ -653,7 +651,6 @@ public class GridCacheTestEntryEx extends 
GridMetadataAwareAdapter implements Gr
 
     /** @inheritDoc */
     @Override public boolean initialValue(CacheObject val,
-        @Nullable byte[] valBytes,
         GridCacheVersion ver,
         long ttl,
         long expireTime,

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a040311d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFullApiSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFullApiSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFullApiSelfTest.java
index 3336798..4b5a260 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFullApiSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFullApiSelfTest.java
@@ -38,6 +38,7 @@ public class GridCacheReplicatedFullApiSelfTest extends 
GridCacheAbstractFullApi
         return PARTITIONED_ONLY;
     }
 
+    /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String gridName) 
throws Exception {
         IgniteConfiguration c = super.getConfiguration(gridName);
 

Reply via email to