T
- type of custom serialized valuepublic abstract class CompositeSerializer<T> extends TypeSerializer<T>
This class serializes a composite type using array of its field serializers. Fields are indexed the same way as their serializers.
Modifier and Type | Class and Description |
---|---|
static class |
CompositeSerializer.ConfigSnapshot
Deprecated.
this snapshot class is no longer in use by any serializers, and is only
kept around for backwards compatibility. All subclass serializers should
have their own serializer snapshot classes.
|
protected static class |
CompositeSerializer.PrecomputedParameters
This class holds composite serializer parameters which can be precomputed in advanced for better performance.
|
Modifier and Type | Field and Description |
---|---|
protected TypeSerializer<Object>[] |
fieldSerializers
Serializers for fields which constitute T.
|
Modifier | Constructor and Description |
---|---|
protected |
CompositeSerializer(boolean immutableTargetType,
TypeSerializer<?>... fieldSerializers)
Can be used for user facing constructor.
|
protected |
CompositeSerializer(CompositeSerializer.PrecomputedParameters precomputed,
TypeSerializer<?>... fieldSerializers)
Can be used in createSerializerInstance for internal operations.
|
Modifier and Type | Method and Description |
---|---|
void |
copy(DataInputView source,
DataOutputView target)
Copies exactly one record from the source input view to the target output view.
|
T |
copy(T from)
Creates a deep copy of the given element in a new element.
|
T |
copy(T from,
T reuse)
Creates a copy from the given element.
|
T |
createInstance()
Creates a new instance of the data type.
|
abstract T |
createInstance(Object... values)
Create new instance from its fields.
|
protected abstract CompositeSerializer<T> |
createSerializerInstance(CompositeSerializer.PrecomputedParameters precomputed,
TypeSerializer<?>... originalSerializers)
Factory for concrete serializer.
|
T |
deserialize(DataInputView source)
De-serializes a record from the given source input view.
|
T |
deserialize(T reuse,
DataInputView source)
De-serializes a record from the given source input view into the given reuse record instance if mutable.
|
CompositeSerializer<T> |
duplicate()
Creates a deep copy of this serializer if it is necessary, i.e.
|
boolean |
equals(Object obj) |
protected abstract Object |
getField(T value,
int index)
Get field of existing instance.
|
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(T record,
DataOutputView target)
Serializes the given record to the given target output view.
|
protected abstract void |
setField(T value,
int index,
Object fieldValue)
Modify field of existing instance.
|
snapshotConfiguration
protected final TypeSerializer<Object>[] fieldSerializers
protected CompositeSerializer(boolean immutableTargetType, TypeSerializer<?>... fieldSerializers)
protected CompositeSerializer(CompositeSerializer.PrecomputedParameters precomputed, TypeSerializer<?>... fieldSerializers)
public abstract T createInstance(@Nonnull Object... values)
protected abstract void setField(@Nonnull T value, int index, Object fieldValue)
protected abstract Object getField(@Nonnull T value, int index)
protected abstract CompositeSerializer<T> createSerializerInstance(CompositeSerializer.PrecomputedParameters precomputed, TypeSerializer<?>... originalSerializers)
public CompositeSerializer<T> duplicate()
TypeSerializer
duplicate
in class TypeSerializer<T>
public boolean isImmutableType()
TypeSerializer
isImmutableType
in class TypeSerializer<T>
public T createInstance()
TypeSerializer
createInstance
in class TypeSerializer<T>
public T copy(T from)
TypeSerializer
copy
in class TypeSerializer<T>
from
- The element reuse be copied.public T copy(T from, T reuse)
TypeSerializer
copy
in class TypeSerializer<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<T>
-1
for variable length data types.public void serialize(T record, DataOutputView target) throws IOException
TypeSerializer
serialize
in class TypeSerializer<T>
record
- 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 T deserialize(DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<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 T deserialize(T reuse, DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<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<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 int hashCode()
hashCode
in class TypeSerializer<T>
public boolean equals(Object obj)
equals
in class TypeSerializer<T>
Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.