This is an automated email from the ASF dual-hosted git repository.
shishkovilja pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new a957edc6f6f IGNITE-25991 Refactor GridLongList (#12335)
a957edc6f6f is described below
commit a957edc6f6f7f017ae4831f223e427df83b74f32
Author: Ilya Shishkov <[email protected]>
AuthorDate: Tue Sep 16 20:53:49 2025 +0300
IGNITE-25991 Refactor GridLongList (#12335)
---
.../internal/MessageSerializerGenerator.java | 9 +
.../commandline/indexreader/IgniteIndexReader.java | 2 +-
.../ignite/internal/IgniteCodeGeneratingFail.java | 2 +
.../internal/direct/DirectMessageReader.java | 12 +
.../internal/direct/DirectMessageWriter.java | 10 +
.../direct/stream/DirectByteBufferStream.java | 29 ++
.../communication/GridIoMessageFactory.java | 2 -
.../GridDhtAtomicDeferredUpdateResponse.java | 4 +-
.../dht/atomic/GridDhtAtomicUpdateRequest.java | 20 +-
.../atomic/GridNearAtomicFullUpdateRequest.java | 8 +-
.../cache/persistence/CacheDataRowAdapter.java | 2 +-
.../cache/persistence/freelist/PagesList.java | 2 +-
.../cache/persistence/tree/BPlusTree.java | 2 +-
.../apache/ignite/internal/util/GridLongList.java | 143 +--------
.../communication/MessageCollectionItemType.java | 5 +-
.../extensions/communication/MessageReader.java | 8 +
.../extensions/communication/MessageWriter.java | 10 +
...tractCommunicationMessageSerializationTest.java | 14 +
.../apache/ignite/util/GridLongListSelfTest.java | 340 ++++-----------------
.../resources/codegen/TestCollectionsMessage.java | 14 +-
.../codegen/TestCollectionsMessageSerializer.java | 14 +
.../src/test/resources/codegen/TestMapMessage.java | 25 +-
.../codegen/TestMapMessageSerializer.java | 28 ++
.../src/test/resources/codegen/TestMessage.java | 16 +-
.../resources/codegen/TestMessageSerializer.java | 14 +
25 files changed, 298 insertions(+), 437 deletions(-)
diff --git
a/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
b/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
index 73dff879e1a..f34346da3b0 100644
---
a/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
+++
b/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
@@ -370,6 +370,9 @@ class MessageSerializerGenerator {
else if (assignableFrom(type,
type("org.apache.ignite.internal.processors.cache.CacheObject")))
returnFalseIfWriteFailed(write, "writer.writeCacheObject",
getExpr);
+ else if (assignableFrom(type,
type("org.apache.ignite.internal.util.GridLongList")))
+ returnFalseIfWriteFailed(write, "writer.writeGridLongList",
getExpr);
+
else if (assignableFrom(type, type(MESSAGE_INTERFACE)))
returnFalseIfWriteFailed(write, "writer.writeMessage",
getExpr);
@@ -499,6 +502,9 @@ class MessageSerializerGenerator {
else if (assignableFrom(type,
type("org.apache.ignite.internal.processors.cache.CacheObject")))
returnFalseIfReadFailed(name, "reader.readCacheObject");
+ else if (assignableFrom(type,
type("org.apache.ignite.internal.util.GridLongList")))
+ returnFalseIfReadFailed(name, "reader.readGridLongList");
+
else if (assignableFrom(type, type(MESSAGE_INTERFACE)))
returnFalseIfReadFailed(name, "reader.readMessage");
@@ -565,6 +571,9 @@ class MessageSerializerGenerator {
if (sameType(type,
"org.apache.ignite.internal.processors.cache.CacheObject"))
return "CACHE_OBJECT";
+ if (sameType(type, "org.apache.ignite.internal.util.GridLongList"))
+ return "GRID_LONG_LIST";
+
PrimitiveType primitiveType = unboxedType(type);
if (primitiveType != null)
diff --git
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/indexreader/IgniteIndexReader.java
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/indexreader/IgniteIndexReader.java
index e877e509ad5..1391755b3e5 100644
---
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/indexreader/IgniteIndexReader.java
+++
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/indexreader/IgniteIndexReader.java
@@ -492,7 +492,7 @@ public class IgniteIndexReader implements AutoCloseable {
io.getBucketsData(addr, data);
for (Map.Entry<Integer, GridLongList> e : data.entrySet())
{
- List<Long> listIds =
LongStream.of(e.getValue().array())
+ List<Long> listIds =
LongStream.of(e.getValue().arrayCopy())
.map(IgniteIndexReader::normalizePageId)
.boxed()
.collect(toList());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteCodeGeneratingFail.java
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteCodeGeneratingFail.java
index 578f0b8e6f1..4938dd48688 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteCodeGeneratingFail.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteCodeGeneratingFail.java
@@ -24,9 +24,11 @@ import java.lang.annotation.Target;
/**
* Annotates fields that code generator should not be override.
+ * Deprecated, see {@link MessageProcessor} and {@link
MessageSerializerGenerator} for details.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
+@Deprecated
public @interface IgniteCodeGeneratingFail {
// No-op.
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
index 77d8a10f8d1..5528e42e1b9 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
@@ -29,6 +29,7 @@ import
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteOutClosure;
@@ -331,6 +332,17 @@ public class DirectMessageReader implements MessageReader {
return key;
}
+ /** {@inheritDoc} */
+ @Override public GridLongList readGridLongList() {
+ DirectByteBufferStream stream = state.item().stream;
+
+ GridLongList ll = stream.readGridLongList();
+
+ lastRead = stream.lastFinished();
+
+ return ll;
+ }
+
/** {@inheritDoc} */
@Override public <T> T[] readObjectArray(MessageCollectionItemType
itemType, Class<T> itemCls) {
DirectByteBufferStream stream = state.item().stream;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
index 0b68dbd3fd5..fb51a2e5d56 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
@@ -28,6 +28,7 @@ import
org.apache.ignite.internal.direct.stream.DirectByteBufferStream;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteOutClosure;
@@ -303,6 +304,15 @@ public class DirectMessageWriter implements MessageWriter {
return stream.lastFinished();
}
+ /** {@inheritDoc} */
+ @Override public boolean writeGridLongList(@Nullable GridLongList ll) {
+ DirectByteBufferStream stream = state.item().stream;
+
+ stream.writeGridLongList(ll);
+
+ return stream.lastFinished();
+ }
+
/** {@inheritDoc} */
@Override public <T> boolean writeObjectArray(T[] arr,
MessageCollectionItemType itemType) {
DirectByteBufferStream stream = state.item().stream;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
index c6da5fe96da..2c6a99b61c3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
@@ -33,6 +33,7 @@ import
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import
org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -43,6 +44,7 @@ import
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemTy
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
import org.apache.ignite.plugin.extensions.communication.MessageReader;
import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.util.GridUnsafe.BIG_ENDIAN;
import static org.apache.ignite.internal.util.GridUnsafe.BYTE_ARR_OFF;
@@ -862,6 +864,16 @@ public class DirectByteBufferStream {
}
}
+ /**
+ * @param val Value.
+ */
+ public void writeGridLongList(@Nullable GridLongList val) {
+ if (val != null)
+ writeLongArray(val.array(), val.size());
+ else
+ writeInt(-1);
+ }
+
/**
* @param msg Message.
* @param writer Writer.
@@ -1492,6 +1504,15 @@ public class DirectByteBufferStream {
return cacheObjProc.toCacheObject(null, cacheObjType, cacheObjArr);
}
+ /**
+ * @return Value.
+ */
+ public GridLongList readGridLongList() {
+ long[] arr = readLongArray();
+
+ return arr != null ? new GridLongList(arr) : null;
+ }
+
/**
* @param reader Reader.
* @return Message.
@@ -2052,6 +2073,11 @@ public class DirectByteBufferStream {
break;
+ case GRID_LONG_LIST:
+ writeGridLongList((GridLongList)val);
+
+ break;
+
case MSG:
try {
if (val != null)
@@ -2147,6 +2173,9 @@ public class DirectByteBufferStream {
case CACHE_OBJECT:
return readCacheObject();
+ case GRID_LONG_LIST:
+ return readGridLongList();
+
case MSG:
return readMessage(reader);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 804df58ac83..b0f1f0e62ad 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -196,7 +196,6 @@ import
org.apache.ignite.internal.processors.service.ServiceSingleNodeDeployment
import
org.apache.ignite.internal.processors.service.ServiceSingleNodeDeploymentResultBatch;
import org.apache.ignite.internal.util.GridByteArrayList;
import org.apache.ignite.internal.util.GridIntList;
-import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.UUIDCollectionMessage;
import org.apache.ignite.internal.util.distributed.SingleNodeMessage;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
@@ -302,7 +301,6 @@ public class GridIoMessageFactory implements
MessageFactoryProvider {
factory.register((short)81, MetadataResponseMessage::new);
factory.register((short)82, JobStealingRequest::new, new
JobStealingRequestSerializer());
factory.register((short)84, GridByteArrayList::new);
- factory.register((short)85, GridLongList::new);
factory.register((short)86, GridCacheVersion::new, new
GridCacheVersionSerializer());
factory.register((short)87, GridDhtPartitionExchangeId::new, new
GridDhtPartitionExchangeIdSerializer());
factory.register((short)88, GridCacheReturn::new);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
index 5742604ccfc..cd4fcc2ae5a 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
@@ -116,7 +116,7 @@ public class GridDhtAtomicDeferredUpdateResponse extends
GridCacheIdMessage impl
switch (writer.state()) {
case 4:
- if (!writer.writeMessage(futIds))
+ if (!writer.writeGridLongList(futIds))
return false;
writer.incrementState();
@@ -135,7 +135,7 @@ public class GridDhtAtomicDeferredUpdateResponse extends
GridCacheIdMessage impl
switch (reader.state()) {
case 4:
- futIds = reader.readMessage();
+ futIds = reader.readGridLongList();
if (!reader.isLastRead())
return false;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
index 9c56300a83b..40393bf68b0 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
@@ -555,7 +555,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
switch (writer.state()) {
case 12:
- if (!writer.writeMessage(conflictExpireTimes))
+ if (!writer.writeGridLongList(conflictExpireTimes))
return false;
writer.incrementState();
@@ -597,7 +597,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
writer.incrementState();
case 19:
- if (!writer.writeMessage(nearExpireTimes))
+ if (!writer.writeGridLongList(nearExpireTimes))
return false;
writer.incrementState();
@@ -609,7 +609,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
writer.incrementState();
case 21:
- if (!writer.writeMessage(nearTtls))
+ if (!writer.writeGridLongList(nearTtls))
return false;
writer.incrementState();
@@ -633,13 +633,13 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
writer.incrementState();
case 25:
- if (!writer.writeMessage(ttls))
+ if (!writer.writeGridLongList(ttls))
return false;
writer.incrementState();
case 26:
- if (!writer.writeMessage(updateCntrs))
+ if (!writer.writeGridLongList(updateCntrs))
return false;
writer.incrementState();
@@ -664,7 +664,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
switch (reader.state()) {
case 12:
- conflictExpireTimes = reader.readMessage();
+ conflictExpireTimes = reader.readGridLongList();
if (!reader.isLastRead())
return false;
@@ -720,7 +720,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
reader.incrementState();
case 19:
- nearExpireTimes = reader.readMessage();
+ nearExpireTimes = reader.readGridLongList();
if (!reader.isLastRead())
return false;
@@ -736,7 +736,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
reader.incrementState();
case 21:
- nearTtls = reader.readMessage();
+ nearTtls = reader.readGridLongList();
if (!reader.isLastRead())
return false;
@@ -768,7 +768,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
reader.incrementState();
case 25:
- ttls = reader.readMessage();
+ ttls = reader.readGridLongList();
if (!reader.isLastRead())
return false;
@@ -776,7 +776,7 @@ public class GridDhtAtomicUpdateRequest extends
GridDhtAtomicAbstractUpdateReque
reader.incrementState();
case 26:
- updateCntrs = reader.readMessage();
+ updateCntrs = reader.readGridLongList();
if (!reader.isLastRead())
return false;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
index fdb25125b2c..557b0e5a3f6 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicFullUpdateRequest.java
@@ -427,13 +427,13 @@ public class GridNearAtomicFullUpdateRequest extends
GridNearAtomicAbstractUpdat
switch (writer.state()) {
case 10:
- if (!writer.writeMessage(conflictExpireTimes))
+ if (!writer.writeGridLongList(conflictExpireTimes))
return false;
writer.incrementState();
case 11:
- if (!writer.writeMessage(conflictTtls))
+ if (!writer.writeGridLongList(conflictTtls))
return false;
writer.incrementState();
@@ -494,7 +494,7 @@ public class GridNearAtomicFullUpdateRequest extends
GridNearAtomicAbstractUpdat
switch (reader.state()) {
case 10:
- conflictExpireTimes = reader.readMessage();
+ conflictExpireTimes = reader.readGridLongList();
if (!reader.isLastRead())
return false;
@@ -502,7 +502,7 @@ public class GridNearAtomicFullUpdateRequest extends
GridNearAtomicAbstractUpdat
reader.incrementState();
case 11:
- conflictTtls = reader.readMessage();
+ conflictTtls = reader.readGridLongList();
if (!reader.isLastRead())
return false;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
index 583322858f2..77579fe144f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
@@ -813,7 +813,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
pageIds.add(pageId);
- return pageIds.array();
+ return pageIds.arrayCopy();
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
index 348ae7ce42f..98fe0a47ade 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
@@ -283,7 +283,7 @@ public abstract class PagesList extends DataStructure {
Stripe[] old = getBucket(bucket);
assert old == null;
- long[] upd = e.getValue().array();
+ long[] upd = e.getValue().arrayCopy();
Stripe[] tails = new Stripe[upd.length];
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
index 060d357b025..782724dd5f4 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
@@ -6036,7 +6036,7 @@ public abstract class BPlusTree<L, T extends L> extends
DataStructure implements
* @return Array of page ids.
*/
private long[] pages(boolean empty, Supplier<long[]> pages) {
- return empty ? GridLongList.EMPTY_ARRAY : pages.get();
+ return empty ? U.EMPTY_LONGS : pages.get();
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
index 20551186e6a..27f5dfc13b5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
@@ -21,29 +21,21 @@ import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.NoSuchElementException;
-import org.apache.ignite.internal.IgniteCodeGeneratingFail;
-import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.SB;
-import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
+
+import static org.apache.ignite.internal.util.IgniteUtils.EMPTY_LONGS;
/**
* Minimal list API to work with primitive longs. This list exists
* to avoid boxing/unboxing when using standard list from Java.
*/
-@IgniteCodeGeneratingFail
-public class GridLongList implements Message, Externalizable {
+public class GridLongList implements Externalizable {
/** */
private static final long serialVersionUID = 0L;
- /** Empty array. */
- public static final long[] EMPTY_ARRAY = new long[0];
-
/** */
private long[] arr;
@@ -74,26 +66,6 @@ public class GridLongList implements Message, Externalizable
{
idx = arr.length;
}
- /**
- * @param vals Values.
- * @return List from values.
- */
- public static GridLongList asList(long... vals) {
- if (F.isEmpty(vals))
- return new GridLongList();
-
- return new GridLongList(vals);
- }
-
- /**
- * @param arr Array.
- * @param size Size.
- */
- private GridLongList(long[] arr, int size) {
- this.arr = arr;
- idx = size;
- }
-
/** {@inheritDoc} */
@Override public boolean equals(Object o) {
if (this == o)
@@ -188,44 +160,6 @@ public class GridLongList implements Message,
Externalizable {
return arr[--idx];
}
- /**
- * Returns (possibly reordered) copy of this list, excluding all elements
of given list.
- *
- * @param l List of elements to remove.
- * @return New list without all elements from {@code l}.
- */
- public GridLongList copyWithout(GridLongList l) {
- assert l != null;
-
- if (idx == 0)
- return new GridLongList();
-
- if (l.idx == 0)
- return new GridLongList(Arrays.copyOf(arr, idx));
-
- long[] newArr = Arrays.copyOf(arr, idx);
- int newIdx = idx;
-
- for (int i = 0; i < l.size(); i++) {
- long rmVal = l.get(i);
-
- for (int j = 0; j < newIdx; j++) {
- if (newArr[j] == rmVal) {
-
- while (newIdx > 0 && newArr[newIdx - 1] == rmVal)
- newIdx--;
-
- if (newIdx > 0) {
- newArr[j] = newArr[newIdx - 1];
- newIdx--;
- }
- }
- }
- }
-
- return new GridLongList(newArr, newIdx);
- }
-
/**
* @param i Index.
* @return Value.
@@ -243,6 +177,13 @@ public class GridLongList implements Message,
Externalizable {
return idx;
}
+ /**
+ * @return Array.
+ */
+ public long[] array() {
+ return arr;
+ }
+
/**
* @return {@code True} if this list has no elements.
*/
@@ -325,9 +266,9 @@ public class GridLongList implements Message,
Externalizable {
/**
* @return Array copy.
*/
- public long[] array() {
+ public long[] arrayCopy() {
if (arr == null)
- return EMPTY_ARRAY;
+ return EMPTY_LONGS;
long[] res = new long[idx];
@@ -382,64 +323,4 @@ public class GridLongList implements Message,
Externalizable {
return this;
}
-
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- writer.setBuffer(buf);
-
- if (!writer.isHeaderWritten()) {
- if (!writer.writeHeader(directType()))
- return false;
-
- writer.onHeaderWritten();
- }
-
- switch (writer.state()) {
- case 0:
- if (!writer.writeLongArray(arr, idx))
- return false;
-
- writer.incrementState();
-
- case 1:
- if (!writer.writeInt(idx))
- return false;
-
- writer.incrementState();
-
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- reader.setBuffer(buf);
-
- switch (reader.state()) {
- case 0:
- arr = reader.readLongArray();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 1:
- idx = reader.readInt();
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public short directType() {
- return 85;
- }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
index 90e7c81d18a..b994809b77d 100644
---
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
+++
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
@@ -93,7 +93,10 @@ public enum MessageCollectionItemType {
KEY_CACHE_OBJECT,
/** Cache object. */
- CACHE_OBJECT;
+ CACHE_OBJECT,
+
+ /** GridLongList */
+ GRID_LONG_LIST;
/** Enum values. */
private static final MessageCollectionItemType[] VALS = values();
diff --git
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
index b0f55d1a851..e1622b60c41 100644
---
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
+++
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
@@ -26,6 +26,7 @@ import java.util.UUID;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteUuid;
/**
@@ -210,6 +211,13 @@ public interface MessageReader {
*/
public KeyCacheObject readKeyCacheObject();
+ /**
+ * Reads {@link GridLongList}.
+ *
+ * @return Grid long list.
+ */
+ public GridLongList readGridLongList();
+
/**
* Reads array of objects.
*
diff --git
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
index 356766bdfc0..c0a2c8fc744 100644
---
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
+++
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
@@ -25,7 +25,9 @@ import java.util.UUID;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteUuid;
+import org.jetbrains.annotations.Nullable;
/**
* Communication message writer.
@@ -259,6 +261,14 @@ public interface MessageWriter {
*/
public boolean writeKeyCacheObject(KeyCacheObject obj);
+ /**
+ * Writes {@link GridLongList}.
+ *
+ * @param ll Grid long list.
+ * @return Whether value was fully written.
+ */
+ public boolean writeGridLongList(@Nullable GridLongList ll);
+
/**
* Writes array of objects.
*
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/AbstractCommunicationMessageSerializationTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/AbstractCommunicationMessageSerializationTest.java
index 6665d64a507..d30c93514cf 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/AbstractCommunicationMessageSerializationTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/AbstractCommunicationMessageSerializationTest.java
@@ -26,6 +26,7 @@ import java.util.UUID;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
import
org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
@@ -34,6 +35,7 @@ import
org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
import org.apache.ignite.plugin.extensions.communication.MessageReader;
import org.apache.ignite.plugin.extensions.communication.MessageWriter;
import org.apache.ignite.spi.communication.tcp.messages.HandshakeMessage;
+import org.jetbrains.annotations.Nullable;
import org.junit.Test;
import static java.lang.Integer.MAX_VALUE;
@@ -284,6 +286,11 @@ public abstract class
AbstractCommunicationMessageSerializationTest {
return writeField(KeyCacheObject.class);
}
+ /** {@inheritDoc} */
+ @Override public boolean writeGridLongList(@Nullable GridLongList ll) {
+ return writeField(GridLongList.class);
+ }
+
/** {@inheritDoc} */
@Override public boolean writeMessage(Message val) {
return writeField(Message.class);
@@ -537,6 +544,13 @@ public abstract class
AbstractCommunicationMessageSerializationTest {
return null;
}
+ /** {@inheritDoc} */
+ @Override public GridLongList readGridLongList() {
+ readField(GridLongList.class);
+
+ return null;
+ }
+
/** {@inheritDoc} */
@Override public <T> T[] readObjectArray(MessageCollectionItemType
itemType, Class<T> itemCls) {
readField(Object[].class);
diff --git
a/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
index 63e2edf6778..981653bbb52 100644
---
a/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
@@ -20,62 +20,18 @@ package org.apache.ignite.util;
import java.nio.ByteBuffer;
import org.apache.ignite.internal.direct.DirectMessageWriter;
import org.apache.ignite.internal.util.GridLongList;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.plugin.extensions.communication.MessageWriter;
import org.junit.Assert;
import org.junit.Test;
-import static org.apache.ignite.internal.util.GridLongList.asList;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
/**
*
*/
public class GridLongListSelfTest {
- /** Size of the header when list is written with message writer. */
- private static final int HEADER_SIZE = 2;
-
- /**
- * @throws Exception If failed.
- */
- @SuppressWarnings("ZeroLengthArrayAllocation")
- @Test
- public void testCopyWithout() throws Exception {
- assertCopy(
- new GridLongList(new long[] {}),
- new GridLongList(new long[] {}));
-
- assertCopy(
- new GridLongList(new long[] {}),
- new GridLongList(new long[] {1}));
-
- assertCopy(
- new GridLongList(new long[] {1}),
- new GridLongList(new long[] {}));
-
- assertCopy(
- new GridLongList(new long[] {1, 2, 3}),
- new GridLongList(new long[] {4, 5, 6}));
-
- assertCopy(
- new GridLongList(new long[] {1, 2, 3}),
- new GridLongList(new long[] {1, 2, 3}));
-
- assertCopy(
- new GridLongList(new long[] {1, 2, 3, 4, 5, 1}),
- new GridLongList(new long[] {1, 1}));
-
- assertCopy(
- new GridLongList(new long[] {1, 1, 1, 2, 3, 4, 5, 1, 1, 1}),
- new GridLongList(new long[] {1, 1}));
-
- assertCopy(
- new GridLongList(new long[] {1, 2, 3}),
- new GridLongList(new long[] {1, 1, 2, 2, 3, 3}));
- }
-
/**
*
*/
@@ -99,25 +55,6 @@ public class GridLongListSelfTest {
assertEquals(new GridLongList(), list);
}
- /**
- * Assert {@link GridLongList#copyWithout(GridLongList)} on given lists.
- *
- * @param lst Source lists.
- * @param rmv Exclude list.
- */
- private void assertCopy(GridLongList lst, GridLongList rmv) {
- GridLongList res = lst.copyWithout(rmv);
-
- for (int i = 0; i < lst.size(); i++) {
- long v = lst.get(i);
-
- if (rmv.contains(v))
- assertFalse(res.contains(v));
- else
- assertTrue(res.contains(v));
- }
- }
-
/**
*
*/
@@ -170,10 +107,10 @@ public class GridLongListSelfTest {
*
*/
@Test
- public void testArray() {
+ public void testArrayCopy() {
GridLongList list = new GridLongList();
- long[] arr = list.array();
+ long[] arr = list.arrayCopy();
assertNotNull(arr);
@@ -181,7 +118,7 @@ public class GridLongListSelfTest {
list.add(1L);
- arr = list.array();
+ arr = list.arrayCopy();
assertNotNull(arr);
@@ -193,166 +130,46 @@ public class GridLongListSelfTest {
/** */
@Test
public void testSerializationDefaultConstructor() {
- MessageWriter writer = new DirectMessageWriter(null);
-
- ByteBuffer buf = ByteBuffer.allocate(4096);
-
- GridLongList ll = new GridLongList();
-
- {
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.add(2L);
- ll.add(4L);
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 17 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.remove();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 9 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.remove();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- for (int i = 0; i < 300; i++)
- ll.add(i);
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(300, ll.size());
-
- Assert.assertEquals(HEADER_SIZE + 2402 /* array */ + 2 /* index
*/, buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.clear();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
+ testSerialization(new GridLongList(), 0);
}
/** */
@Test
public void testSerializationConstructorWithSize() {
- MessageWriter writer = new DirectMessageWriter(null);
-
- ByteBuffer buf = ByteBuffer.allocate(4096);
-
- GridLongList ll = new GridLongList(5);
-
- {
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.add(2L);
- ll.add(4L);
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 17 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.remove();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 9 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.remove();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- for (int i = 0; i < 300; i++)
- ll.add(i);
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(300, ll.size());
-
- Assert.assertEquals(HEADER_SIZE + 2402 /* array */ + 2 /* index
*/, buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.clear();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
+ testSerialization(new GridLongList(5), 0);
}
/** */
@Test
public void testSerializationConstructorWithZeroSize() {
+ testSerialization(new GridLongList(0), 0);
+ }
+
+ /** */
+ @Test
+ public void testSerializationCopyConstructor() {
+ testSerialization(asList(1L, 2L, 3L), 3);
+ }
+
+ /**
+ * @param ll Grid long list.
+ * @param initSz Initial size of list.
+ */
+ private static void testSerialization(GridLongList ll, int initSz) {
MessageWriter writer = new DirectMessageWriter(null);
ByteBuffer buf = ByteBuffer.allocate(4096);
- GridLongList ll = new GridLongList(0);
+ writer.setBuffer(buf);
+
+ // Items size in bytes + length (1 byte for up to Byte.MAX_VALUE
elements,
+ // 2 bytes up to Short.MAX_VALUE elements), etc.
+ int sz = initSz * 8 + 1;
{
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(ll));
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
+ Assert.assertEquals(sz /* array */, buf.position());
}
{
@@ -362,9 +179,9 @@ public class GridLongListSelfTest {
ll.add(2L);
ll.add(4L);
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(ll));
- Assert.assertEquals(HEADER_SIZE + 17 /* array */ + 1 /* index */,
buf.position());
+ Assert.assertEquals(sz += 16 /* array */, buf.position());
}
{
@@ -373,9 +190,9 @@ public class GridLongListSelfTest {
ll.remove();
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(ll));
- Assert.assertEquals(HEADER_SIZE + 9 /* array */ + 1 /* index */,
buf.position());
+ Assert.assertEquals(sz -= 8 /* array */, buf.position());
}
{
@@ -384,9 +201,9 @@ public class GridLongListSelfTest {
ll.remove();
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(ll));
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
+ Assert.assertEquals(sz -= 8 /* array */, buf.position());
}
{
@@ -396,11 +213,13 @@ public class GridLongListSelfTest {
for (int i = 0; i < 300; i++)
ll.add(i);
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(ll));
+
+ Assert.assertEquals(300 + initSz, ll.size());
- Assert.assertEquals(300, ll.size());
+ sz += 8 * 300 + 1;
- Assert.assertEquals(HEADER_SIZE + 2402 /* array */ + 2 /* index
*/, buf.position());
+ Assert.assertEquals(sz /* array */, buf.position());
}
{
@@ -409,85 +228,50 @@ public class GridLongListSelfTest {
ll.clear();
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(ll));
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
+ Assert.assertEquals(1 /* array */, buf.position());
}
}
/** */
@Test
- public void testSerializationCopyConstructor() {
+ public void testSerializationInsufficientBuffer() {
MessageWriter writer = new DirectMessageWriter(null);
- ByteBuffer buf = ByteBuffer.allocate(4096);
-
- GridLongList ll = new GridLongList(new long[]{1L, 2L, 3L});
-
- {
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 25 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.add(2L);
- ll.add(4L);
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 41 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- ll.remove();
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 33 /* array */ + 1 /* index */,
buf.position());
- }
-
- {
- writer.reset();
- buf.clear();
-
- for (int i = 0; i < 300; i++)
- ll.add(i);
-
- Assert.assertTrue(ll.writeTo(buf, writer));
-
- Assert.assertEquals(HEADER_SIZE + 2434 /* array */ + 2 /* index
*/, buf.position());
- }
+ ByteBuffer buf = ByteBuffer.allocate(10);
- {
- writer.reset();
- buf.clear();
+ writer.setBuffer(buf);
- ll.clear();
+ GridLongList ll = asList(1L, 2L, 3L);
- Assert.assertTrue(ll.writeTo(buf, writer));
+ Assert.assertFalse(writer.writeGridLongList(ll));
- Assert.assertEquals(HEADER_SIZE + 1 /* array */ + 1 /* index */,
buf.position());
- }
+ Assert.assertEquals(10, buf.position());
}
/** */
@Test
- public void testSerializationInsufficientBuffer() {
+ public void testSerializationOfNullValue() {
MessageWriter writer = new DirectMessageWriter(null);
- ByteBuffer buf = ByteBuffer.allocate(10);
+ ByteBuffer buf = ByteBuffer.allocate(4096);
- GridLongList ll = new GridLongList(new long[]{1L, 2L, 3L});
+ writer.setBuffer(buf);
- Assert.assertFalse(ll.writeTo(buf, writer));
+ Assert.assertTrue(writer.writeGridLongList(null));
- Assert.assertEquals(10, buf.position());
+ Assert.assertEquals(1, buf.position());
+ }
+
+ /**
+ * @param vals Values.
+ * @return List from values.
+ */
+ private static GridLongList asList(long... vals) {
+ if (F.isEmpty(vals))
+ return new GridLongList();
+
+ return new GridLongList(vals);
}
}
diff --git
a/modules/core/src/test/resources/codegen/TestCollectionsMessage.java
b/modules/core/src/test/resources/codegen/TestCollectionsMessage.java
index 597e61b0f02..c7c6ddc287d 100644
--- a/modules/core/src/test/resources/codegen/TestCollectionsMessage.java
+++ b/modules/core/src/test/resources/codegen/TestCollectionsMessage.java
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.UUID;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -92,6 +93,9 @@ public class TestCollectionsMessage implements Message {
@Order(21)
private List<GridCacheVersion> messageList;
+ @Order(22)
+ private List<GridLongList> gridLongListList;
+
public List<boolean[]> booleanArrayList() {
return booleanArrayList;
}
@@ -265,7 +269,15 @@ public class TestCollectionsMessage implements Message {
}
public void messageList(List<GridCacheVersion> messageList) {
- messageList = messageList;
+ this.messageList = messageList;
+ }
+
+ public List<GridLongList> gridLongListList() {
+ return gridLongListList;
+ }
+
+ public void gridLongListList(List<GridLongList> gridLongListList) {
+ this.gridLongListList = gridLongListList;
}
public short directType() {
diff --git
a/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
b/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
index 96855ef1a97..ad88dec2e06 100644
---
a/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
+++
b/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
@@ -178,6 +178,12 @@ public class TestCollectionsMessageSerializer implements
MessageSerializer {
writer.incrementState();
+ case 22:
+ if (!writer.writeCollection(msg.gridLongListList(),
MessageCollectionItemType.GRID_LONG_LIST))
+ return false;
+
+ writer.incrementState();
+
}
return true;
@@ -366,6 +372,14 @@ public class TestCollectionsMessageSerializer implements
MessageSerializer {
reader.incrementState();
+ case 22:
+
msg.gridLongListList(reader.readCollection(MessageCollectionItemType.GRID_LONG_LIST));
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
}
return true;
diff --git a/modules/core/src/test/resources/codegen/TestMapMessage.java
b/modules/core/src/test/resources/codegen/TestMapMessage.java
index 6b45de7e3fb..dfd99916a4b 100644
--- a/modules/core/src/test/resources/codegen/TestMapMessage.java
+++ b/modules/core/src/test/resources/codegen/TestMapMessage.java
@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.UUID;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -92,6 +93,12 @@ public class TestMapMessage implements Message {
@Order(21)
private Map<GridCacheVersion, Double> messageBoxedDoubleMap;
+ @Order(22)
+ private Map<Integer, GridLongList> integerGridLongListMap;
+
+ @Order(23)
+ private Map<GridLongList, Integer> gridLongListIntegerMap;
+
public Map<boolean[], Long> booleanArrayBoxedLongMap() {
return booleanArrayBoxedLongMap;
}
@@ -265,7 +272,23 @@ public class TestMapMessage implements Message {
}
public void messageBoxedDoubleMap(Map<GridCacheVersion, Double>
messageBoxedDoubleMap) {
- messageBoxedDoubleMap = messageBoxedDoubleMap;
+ this.messageBoxedDoubleMap = messageBoxedDoubleMap;
+ }
+
+ public Map<Integer, GridLongList> integerGridLongListMap() {
+ return integerGridLongListMap;
+ }
+
+ public void integerGridLongListMap(Map<Integer, GridLongList>
integerGridLongListMap) {
+ this.integerGridLongListMap = integerGridLongListMap;
+ }
+
+ public Map<GridLongList, Integer> gridLongListIntegerMap() {
+ return gridLongListIntegerMap;
+ }
+
+ public void gridLongListIntegerMap(Map<GridLongList, Integer>
gridLongListIntegerMap) {
+ this.gridLongListIntegerMap = gridLongListIntegerMap;
}
public short directType() {
diff --git
a/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
b/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
index d782b5088f1..b88f75d364f 100644
--- a/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
+++ b/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
@@ -178,6 +178,18 @@ public class TestMapMessageSerializer implements
MessageSerializer {
writer.incrementState();
+ case 22:
+ if (!writer.writeMap(msg.integerGridLongListMap(),
MessageCollectionItemType.INT, MessageCollectionItemType.GRID_LONG_LIST))
+ return false;
+
+ writer.incrementState();
+
+ case 23:
+ if (!writer.writeMap(msg.gridLongListIntegerMap(),
MessageCollectionItemType.GRID_LONG_LIST, MessageCollectionItemType.INT))
+ return false;
+
+ writer.incrementState();
+
}
return true;
@@ -366,6 +378,22 @@ public class TestMapMessageSerializer implements
MessageSerializer {
reader.incrementState();
+ case 22:
+
msg.integerGridLongListMap(reader.readMap(MessageCollectionItemType.INT,
MessageCollectionItemType.GRID_LONG_LIST, false));
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
+ case 23:
+
msg.gridLongListIntegerMap(reader.readMap(MessageCollectionItemType.GRID_LONG_LIST,
MessageCollectionItemType.INT, false));
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
}
return true;
diff --git a/modules/core/src/test/resources/codegen/TestMessage.java
b/modules/core/src/test/resources/codegen/TestMessage.java
index ab501772c77..edc66e73e9b 100644
--- a/modules/core/src/test/resources/codegen/TestMessage.java
+++ b/modules/core/src/test/resources/codegen/TestMessage.java
@@ -20,15 +20,13 @@ package org.apache.ignite.internal;
import java.lang.String;
import java.util.UUID;
import java.util.BitSet;
-import java.nio.ByteBuffer;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
public class TestMessage implements Message {
@Order(0)
@@ -73,6 +71,9 @@ public class TestMessage implements Message {
@Order(value = 13)
private CacheObject cacheObject;
+ @Order(value = 14)
+ private GridLongList gridLongList;
+
public int id() {
return id;
}
@@ -185,6 +186,15 @@ public class TestMessage implements Message {
this.cacheObject = cacheObject;
}
+ public GridLongList gridLongList() {
+ return gridLongList;
+ }
+
+ public void gridLongList(GridLongList gridLongList) {
+ this.gridLongList = gridLongList;
+ }
+
+
public short directType() {
return 0;
}
diff --git a/modules/core/src/test/resources/codegen/TestMessageSerializer.java
b/modules/core/src/test/resources/codegen/TestMessageSerializer.java
index 8ca1f2be5d6..b05b4a519c9 100644
--- a/modules/core/src/test/resources/codegen/TestMessageSerializer.java
+++ b/modules/core/src/test/resources/codegen/TestMessageSerializer.java
@@ -130,6 +130,12 @@ public class TestMessageSerializer implements
MessageSerializer {
writer.incrementState();
+ case 14:
+ if (!writer.writeGridLongList(msg.gridLongList()))
+ return false;
+
+ writer.incrementState();
+
}
return true;
@@ -249,6 +255,14 @@ public class TestMessageSerializer implements
MessageSerializer {
case 13:
msg.cacheObject(reader.readCacheObject());
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
+
+ case 14:
+ msg.gridLongList(reader.readGridLongList());
+
if (!reader.isLastRead())
return false;