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));