Package org.apache.cassandra.serializers
Class CollectionSerializer<T>
- java.lang.Object
-
- org.apache.cassandra.serializers.TypeSerializer<T>
-
- org.apache.cassandra.serializers.CollectionSerializer<T>
-
- Direct Known Subclasses:
ListSerializer
,MapSerializer
,SetSerializer
public abstract class CollectionSerializer<T> extends TypeSerializer<T>
-
-
Constructor Summary
Constructors Constructor Description CollectionSerializer()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected java.nio.ByteBuffer
copyAsNewCollection(java.nio.ByteBuffer input, int count, int startPos, int endPos)
Creates a new serialized map composed from the data frominput
betweenstartPos
(inclusive) andendPos
(exclusive), assuming that data holdscount
elements.void
forEach(java.nio.ByteBuffer input, java.util.function.Consumer<java.nio.ByteBuffer> action)
protected abstract int
getElementCount(T value)
abstract com.google.common.collect.Range<java.lang.Integer>
getIndexesRangeFromSerialized(java.nio.ByteBuffer collection, java.nio.ByteBuffer from, java.nio.ByteBuffer to, AbstractType<?> comparator)
Returns the range of indexes corresponding to the specified range of elements in the serialized collection.abstract int
getIndexFromSerialized(java.nio.ByteBuffer collection, java.nio.ByteBuffer key, AbstractType<?> comparator)
Returns the index of an element in a serialized collection.abstract java.nio.ByteBuffer
getSerializedValue(java.nio.ByteBuffer collection, java.nio.ByteBuffer key, AbstractType<?> comparator)
Extract an element from a serialized collection.abstract java.nio.ByteBuffer
getSliceFromSerialized(java.nio.ByteBuffer collection, java.nio.ByteBuffer from, java.nio.ByteBuffer to, AbstractType<?> comparator, boolean frozen)
Returns the slice of a collection directly from its serialized value.static java.nio.ByteBuffer
pack(java.util.Collection<java.nio.ByteBuffer> values, int elements)
static <V> V
pack(java.util.Collection<V> values, ValueAccessor<V> accessor, int elements)
static <V> int
readCollectionSize(V value, ValueAccessor<V> accessor)
static <V> V
readNonNullValue(V input, ValueAccessor<V> accessor, int offset)
static <V> V
readValue(V input, ValueAccessor<V> accessor, int offset)
java.nio.ByteBuffer
serialize(T input)
protected abstract java.util.List<java.nio.ByteBuffer>
serializeValues(T value)
static int
sizeOfCollectionSize()
static <V> int
sizeOfValue(V value, ValueAccessor<V> accessor)
protected static void
skipValue(java.nio.ByteBuffer input)
static <V> int
skipValue(V input, ValueAccessor<V> accessor, int offset)
protected static void
writeCollectionSize(java.nio.ByteBuffer output, int elements)
static <V> void
writeValue(java.nio.ByteBuffer output, V value, ValueAccessor<V> accessor)
-
Methods inherited from class org.apache.cassandra.serializers.TypeSerializer
deserialize, deserialize, getType, isNull, isNull, shouldQuoteCQLLiterals, toCQLLiteral, toCQLLiteralNonNull, toCQLLiteralNoQuote, toString, validate, validate
-
-
-
-
Method Detail
-
serializeValues
protected abstract java.util.List<java.nio.ByteBuffer> serializeValues(T value)
-
getElementCount
protected abstract int getElementCount(T value)
-
serialize
public java.nio.ByteBuffer serialize(T input)
- Specified by:
serialize
in classTypeSerializer<T>
-
pack
public static java.nio.ByteBuffer pack(java.util.Collection<java.nio.ByteBuffer> values, int elements)
-
pack
public static <V> V pack(java.util.Collection<V> values, ValueAccessor<V> accessor, int elements)
-
writeCollectionSize
protected static void writeCollectionSize(java.nio.ByteBuffer output, int elements)
-
readCollectionSize
public static <V> int readCollectionSize(V value, ValueAccessor<V> accessor)
-
sizeOfCollectionSize
public static int sizeOfCollectionSize()
-
writeValue
public static <V> void writeValue(java.nio.ByteBuffer output, V value, ValueAccessor<V> accessor)
-
readValue
public static <V> V readValue(V input, ValueAccessor<V> accessor, int offset)
-
readNonNullValue
public static <V> V readNonNullValue(V input, ValueAccessor<V> accessor, int offset)
-
skipValue
protected static void skipValue(java.nio.ByteBuffer input)
-
skipValue
public static <V> int skipValue(V input, ValueAccessor<V> accessor, int offset)
-
sizeOfValue
public static <V> int sizeOfValue(V value, ValueAccessor<V> accessor)
-
getSerializedValue
public abstract java.nio.ByteBuffer getSerializedValue(java.nio.ByteBuffer collection, java.nio.ByteBuffer key, AbstractType<?> comparator)
Extract an element from a serialized collection.Note that this is only supported to sets and maps. For sets, this mostly ends up being a check for the presence of the provide key: it will return the key if it's present and
null
otherwise.- Parameters:
collection
- the serialized collection. This cannot benull
.key
- the key to extract (This cannot benull
norByteBufferUtil.UNSET_BYTE_BUFFER
).comparator
- the type to use to compare thekey
value to those in the collection.- Returns:
- the value associated with
key
if one exists,null
otherwise
-
getSliceFromSerialized
public abstract java.nio.ByteBuffer getSliceFromSerialized(java.nio.ByteBuffer collection, java.nio.ByteBuffer from, java.nio.ByteBuffer to, AbstractType<?> comparator, boolean frozen)
Returns the slice of a collection directly from its serialized value.If the slice contains no elements an empty collection will be returned for frozen collections, and a
null
one for non-frozen collections.- Parameters:
collection
- the serialized collection. This cannot benull
.from
- the left bound of the slice to extract. This cannot benull
but if this isByteBufferUtil.UNSET_BYTE_BUFFER
, then the returned slice starts at the beginning ofcollection
.comparator
- the type to use to compare thefrom
andto
values to those in the collection.frozen
-true
if the collection is a frozen one,false
otherwise- Returns:
- a serialized collection corresponding to slice
[from, to]
ofcollection
.
-
getIndexFromSerialized
public abstract int getIndexFromSerialized(java.nio.ByteBuffer collection, java.nio.ByteBuffer key, AbstractType<?> comparator)
Returns the index of an element in a serialized collection.Note that this is only supported by sets and maps, but not by lists.
- Parameters:
collection
- The serialized collection. This cannot benull
.key
- The key for which the index must be found. This cannot benull
norByteBufferUtil.UNSET_BYTE_BUFFER
).comparator
- The type to use to compare thekey
value to those in the collection.- Returns:
- The index of the element associated with
key
if one exists,-1
otherwise.
-
getIndexesRangeFromSerialized
public abstract com.google.common.collect.Range<java.lang.Integer> getIndexesRangeFromSerialized(java.nio.ByteBuffer collection, java.nio.ByteBuffer from, java.nio.ByteBuffer to, AbstractType<?> comparator)
Returns the range of indexes corresponding to the specified range of elements in the serialized collection.Note that this is only supported by sets and maps, but not by lists.
- Parameters:
collection
- The serialized collection. This cannot benull
.from
- The left bound of the slice to extract. This cannot benull
but if this isByteBufferUtil.UNSET_BYTE_BUFFER
, then the returned slice starts at the beginning of the collection.to
- The left bound of the slice to extract. This cannot benull
but if this isByteBufferUtil.UNSET_BYTE_BUFFER
, then the returned slice ends at the end of the collection.comparator
- The type to use to compare thefrom
andto
values to those in the collection.- Returns:
- The range of indexes corresponding to specified range of elements.
-
copyAsNewCollection
protected java.nio.ByteBuffer copyAsNewCollection(java.nio.ByteBuffer input, int count, int startPos, int endPos)
Creates a new serialized map composed from the data frominput
betweenstartPos
(inclusive) andendPos
(exclusive), assuming that data holdscount
elements.
-
forEach
public void forEach(java.nio.ByteBuffer input, java.util.function.Consumer<java.nio.ByteBuffer> action)
-
-