T
- The type of element in the list.@Internal public final class ListSerializer<T> extends TypeSerializer<List<T>>
Lists
. The serializer relies on an element serializer
for teh serialization of the list's elements.
The serialization format for the list is as follows: four bytes for the length of the lost, followed by the serialized representation of each element.
Constructor and Description |
---|
ListSerializer(TypeSerializer<T> elementSerializer)
Creates a list serializer that uses the given serializer to serialize the list's elements.
|
Modifier and Type | Method and Description |
---|---|
boolean |
canEqual(Object obj)
Returns true if the given object can be equaled with this object.
|
void |
copy(DataInputView source,
DataOutputView target)
Copies exactly one record from the source input view to the target output view.
|
List<T> |
copy(List<T> from)
Creates a deep copy of the given element in a new element.
|
List<T> |
copy(List<T> from,
List<T> reuse)
Creates a copy from the given element.
|
List<T> |
createInstance()
Creates a new instance of the data type.
|
List<T> |
deserialize(DataInputView source)
De-serializes a record from the given source input view.
|
List<T> |
deserialize(List<T> reuse,
DataInputView source)
De-serializes a record from the given source input view into the given reuse record instance if mutable.
|
TypeSerializer<List<T>> |
duplicate()
Creates a deep copy of this serializer if it is necessary, i.e.
|
CompatibilityResult<List<T>> |
ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot)
Ensure compatibility of this serializer with a preceding serializer that was registered for serialization of
the same managed state (if any - this method is only relevant if this serializer is registered for
serialization of managed state).
|
boolean |
equals(Object obj) |
TypeSerializer<T> |
getElementSerializer()
Gets the serializer for the elements of the list.
|
int |
getLength()
Gets the length of the data type, if it is a fix length data type.
|
int |
hashCode() |
boolean |
isImmutableType()
Gets whether the type is an immutable type.
|
void |
serialize(List<T> list,
DataOutputView target)
Serializes the given record to the given target output view.
|
CollectionSerializerConfigSnapshot |
snapshotConfiguration()
Create a snapshot of the serializer's current configuration to be stored along with the managed state it is
registered to (if any - this method is only relevant if this serializer is registered for serialization of
managed state).
|
public ListSerializer(TypeSerializer<T> elementSerializer)
elementSerializer
- The serializer for the elements of the listpublic TypeSerializer<T> getElementSerializer()
public boolean isImmutableType()
TypeSerializer
isImmutableType
in class TypeSerializer<List<T>>
public TypeSerializer<List<T>> duplicate()
TypeSerializer
duplicate
in class TypeSerializer<List<T>>
public List<T> createInstance()
TypeSerializer
createInstance
in class TypeSerializer<List<T>>
public List<T> copy(List<T> from)
TypeSerializer
copy
in class TypeSerializer<List<T>>
from
- The element reuse be copied.public List<T> copy(List<T> from, List<T> reuse)
TypeSerializer
copy
in class TypeSerializer<List<T>>
from
- The element to be copied.reuse
- The element to be reused. May or may not be used.public int getLength()
TypeSerializer
getLength
in class TypeSerializer<List<T>>
-1
for variable length data types.public void serialize(List<T> list, DataOutputView target) throws IOException
TypeSerializer
serialize
in class TypeSerializer<List<T>>
list
- The record to serialize.target
- The output view to write the serialized data to.IOException
- Thrown, if the serialization encountered an I/O related error. Typically raised by the
output view, which may have an underlying I/O channel to which it delegates.public List<T> deserialize(DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<List<T>>
source
- The input view from which to read the data.IOException
- Thrown, if the de-serialization encountered an I/O related error. Typically raised by the
input view, which may have an underlying I/O channel from which it reads.public List<T> deserialize(List<T> reuse, DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<List<T>>
reuse
- The record instance into which to de-serialize the data.source
- The input view from which to read the data.IOException
- Thrown, if the de-serialization encountered an I/O related error. Typically raised by the
input view, which may have an underlying I/O channel from which it reads.public void copy(DataInputView source, DataOutputView target) throws IOException
TypeSerializer
target.write(source, 8);
.copy
in class TypeSerializer<List<T>>
source
- The input view from which to read the record.target
- The target output view to which to write the record.IOException
- Thrown if any of the two views raises an exception.public boolean equals(Object obj)
equals
in class TypeSerializer<List<T>>
public boolean canEqual(Object obj)
TypeSerializer
canEqual
in class TypeSerializer<List<T>>
obj
- Object which wants to take part in the equality relationpublic int hashCode()
hashCode
in class TypeSerializer<List<T>>
public CollectionSerializerConfigSnapshot snapshotConfiguration()
TypeSerializer
The configuration snapshot should contain information about the serializer's parameter settings and its serialization format. When a new serializer is registered to serialize the same managed state that this serializer was registered to, the returned configuration snapshot can be used to ensure compatibility of the new serializer and determine if state migration is required.
snapshotConfiguration
in class TypeSerializer<List<T>>
null
).TypeSerializerConfigSnapshot
public CompatibilityResult<List<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot)
TypeSerializer
The result can be one of the following:
CompatibilityResult.compatible()
: this signals Flink that this serializer is compatible, or
has been reconfigured to be compatible, to continue reading previous data, and that the
serialization schema remains the same. No migration needs to be performed.CompatibilityResult.requiresMigration(TypeDeserializer)
: this signals Flink that
migration needs to be performed, because this serializer is not compatible, or cannot be reconfigured to be
compatible, for previous data. Furthermore, in the case that the preceding serializer cannot be found or
restored to read the previous data to perform the migration, the provided convert deserializer can be
used as a fallback resort.CompatibilityResult.requiresMigration()
: this signals Flink that migration needs to be
performed, because this serializer is not compatible, or cannot be reconfigured to be compatible, for
previous data. If the preceding serializer cannot be found (either its implementation changed or it was
removed from the classpath) then the migration will fail due to incapability to read previous data.ensureCompatibility
in class TypeSerializer<List<T>>
configSnapshot
- configuration snapshot of a preceding serializer for the same managed statenull
).CompatibilityResult
Copyright © 2014–2018 The Apache Software Foundation. All rights reserved.