Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-471 [created] 5a7254639


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 180ccb5..592f3b3 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -58,6 +58,7 @@ import org.jetbrains.annotations.*;
 import java.io.*;
 import java.lang.reflect.*;
 import java.math.*;
+import java.nio.*;
 import java.sql.*;
 import java.text.*;
 import java.util.*;
@@ -1249,7 +1250,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
                         }
                     }
 
-                    byte[] bytes = marshaller.marshal(obj);
+                    byte[] bytes = U.toArray(marshaller.marshal(obj));
 
                     int len = bytes.length;
 
@@ -1272,16 +1273,16 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 
                     bytes = Arrays.copyOf(bytes, last); // Trim the last byte.
 
-                    return marshaller.unmarshal(bytes, ldr);
+                    return marshaller.unmarshal(ByteBuffer.wrap(bytes), ldr);
                 }
             } :
             new JavaObjectSerializer() {
                 @Override public byte[] serialize(Object obj) throws Exception 
{
-                    return marshaller.marshal(obj);
+                    return U.toArray(marshaller.marshal(obj));
                 }
 
                 @Override public Object deserialize(byte[] bytes) throws 
Exception {
-                    return marshaller.unmarshal(bytes, null);
+                    return marshaller.unmarshal(ByteBuffer.wrap(bytes), null);
                 }
             };
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
index 7fc4843..5d3c51c 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
@@ -37,6 +37,7 @@ import org.apache.lucene.util.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
+import java.nio.*;
 import java.util.*;
 import java.util.concurrent.atomic.*;
 
@@ -173,7 +174,7 @@ public class GridLuceneIndex implements Closeable {
             }
         }
 
-        String keyStr = Base64.encodeBase64String(marshaller.marshal(key));
+        String keyStr = 
Base64.encodeBase64String(U.toArray(marshaller.marshal(key)));
 
         try {
             // Delete first to avoid duplicates.
@@ -184,8 +185,19 @@ public class GridLuceneIndex implements Closeable {
 
             doc.add(new Field(KEY_FIELD_NAME, keyStr, Field.Store.YES, 
Field.Index.NOT_ANALYZED));
 
-            if (storeVal && type.valueClass() != String.class)
-                doc.add(new Field(VAL_FIELD_NAME, marshaller.marshal(val)));
+            if (storeVal && type.valueClass() != String.class) {
+                ByteBuffer buf = marshaller.marshal(val);
+
+                if (buf.hasArray())
+                    doc.add(new Field(VAL_FIELD_NAME, buf.array(), 
buf.position(), buf.remaining()));
+                else {
+                    byte[] bytes = new byte[buf.remaining()];
+
+                    buf.get(bytes);
+
+                    doc.add(new Field(VAL_FIELD_NAME, bytes));
+                }
+            }
 
             doc.add(new Field(VER_FIELD_NAME, ver));
 
@@ -210,7 +222,8 @@ public class GridLuceneIndex implements Closeable {
      */
     public void remove(Object key) throws IgniteCheckedException {
         try {
-            writer.deleteDocuments(new Term(KEY_FIELD_NAME, 
Base64.encodeBase64String(marshaller.marshal(key))));
+            writer.deleteDocuments(new Term(KEY_FIELD_NAME,
+                
Base64.encodeBase64String(U.toArray(marshaller.marshal(key)))));
         }
         catch (IOException e) {
             throw new IgniteCheckedException(e);
@@ -359,11 +372,11 @@ public class GridLuceneIndex implements Closeable {
                 if (ctx != null && ctx.deploy().enabled())
                     ldr = 
ctx.cache().internalCache(spaceName).context().deploy().globalLoader();
 
-                K k = marshaller.unmarshal(Base64.decodeBase64(keyStr), ldr);
+                K k = 
marshaller.unmarshal(ByteBuffer.wrap(Base64.decodeBase64(keyStr)), ldr);
 
                 byte[] valBytes = doc.getBinaryValue(VAL_FIELD_NAME);
 
-                V v = valBytes != null ? marshaller.<V>unmarshal(valBytes, 
ldr) :
+                V v = valBytes != null ? 
marshaller.<V>unmarshal(ByteBuffer.wrap(valBytes), ldr) :
                     type.valueClass() == String.class ?
                     (V)doc.get(VAL_STR_FIELD_NAME): null;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d838a9db/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOffHeapAndSwapSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOffHeapAndSwapSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOffHeapAndSwapSelfTest.java
index 96106c4..53e1e3d 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOffHeapAndSwapSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheOffHeapAndSwapSelfTest.java
@@ -32,6 +32,7 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
 import org.apache.ignite.spi.swapspace.file.*;
 import org.apache.ignite.testframework.junits.common.*;
 
+import java.nio.*;
 import java.util.*;
 import java.util.concurrent.atomic.*;
 
@@ -321,7 +322,8 @@ public class GridCacheOffHeapAndSwapSelfTest extends 
GridCommonAbstractTest {
                 while (it.hasNext()) {
                     Map.Entry<byte[], GridCacheSwapEntry> swapEntry = 
it.next();
 
-                    Long key = ctx.marshaller().unmarshal(swapEntry.getKey(), 
ctx.deploy().globalLoader());
+                    Long key = 
ctx.marshaller().unmarshal(ByteBuffer.wrap(swapEntry.getKey()),
+                        ctx.deploy().globalLoader());
 
                     assertTrue(vals.contains(key));
 

Reply via email to