Class AbstractContainerSerializer<T>
- java.lang.Object
-
- org.eclipse.yasson.internal.serializer.AbstractItem<T>
-
- org.eclipse.yasson.internal.serializer.AbstractContainerSerializer<T>
-
- Type Parameters:
T
- container value type
- All Implemented Interfaces:
jakarta.json.bind.serializer.JsonbSerializer<T>
,RuntimeTypeInfo
,CurrentItem<T>
- Direct Known Subclasses:
AbstractArraySerializer
,AbstractJsonpSerializer
,CollectionSerializer
,MapSerializer
,ObjectSerializer
public abstract class AbstractContainerSerializer<T> extends AbstractItem<T> implements jakarta.json.bind.serializer.JsonbSerializer<T>
Base class for container serializers (list, array, etc.).
-
-
Constructor Summary
Constructors Modifier Constructor Description AbstractContainerSerializer(CurrentItem<?> wrapper, java.lang.reflect.Type runtimeType, ClassModel classModel)
Creates a new instance.protected
AbstractContainerSerializer(SerializerBuilder builder)
Create instance of current item with its builder.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
addValueSerializer(jakarta.json.bind.serializer.JsonbSerializer<?> valueSerializer, java.lang.Class<?> valueClass)
Cache a serializer and serialized object class for next use.protected void
beforeSerialize(T obj)
Process container before serialization begins.protected jakarta.json.bind.serializer.JsonbSerializer<?>
getValueSerializer(java.lang.Class<?> valueClass)
Return last used serializer if last value class matches.protected java.lang.reflect.Type
getValueType(java.lang.reflect.Type valueType)
Value type of the container.void
serialize(T obj, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
protected abstract void
serializeInternal(T obj, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
Serialize content of provided container.protected void
serializeItem(java.lang.Object item, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
Serializes container object.protected <X> void
serializerCaptor(jakarta.json.bind.serializer.JsonbSerializer<?> serializer, X object, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
Serializes container object item.protected void
writeEnd(jakarta.json.stream.JsonGenerator generator)
Writes end of an object or an array.protected abstract void
writeStart(jakarta.json.stream.JsonGenerator generator)
Write start of an object or an array without a key.protected abstract void
writeStart(java.lang.String key, jakarta.json.stream.JsonGenerator generator)
Write start of an object or an array with a key.-
Methods inherited from class org.eclipse.yasson.internal.serializer.AbstractItem
getClassModel, getRuntimeType, getWrapper
-
-
-
-
Constructor Detail
-
AbstractContainerSerializer
protected AbstractContainerSerializer(SerializerBuilder builder)
Create instance of current item with its builder.- Parameters:
builder
-SerializerBuilder
used to build this instance
-
AbstractContainerSerializer
public AbstractContainerSerializer(CurrentItem<?> wrapper, java.lang.reflect.Type runtimeType, ClassModel classModel)
Creates a new instance.- Parameters:
wrapper
- Item to serialize.runtimeType
- Runtime type of the item.classModel
- Class model.
-
-
Method Detail
-
beforeSerialize
protected void beforeSerialize(T obj)
Process container before serialization begins. Does nothing by default.- Parameters:
obj
- item to be serialized
-
writeStart
protected abstract void writeStart(jakarta.json.stream.JsonGenerator generator)
Write start of an object or an array without a key.- Parameters:
generator
- JSON format generator
-
writeStart
protected abstract void writeStart(java.lang.String key, jakarta.json.stream.JsonGenerator generator)
Write start of an object or an array with a key.- Parameters:
key
- JSON key name.generator
- JSON format generator
-
writeEnd
protected void writeEnd(jakarta.json.stream.JsonGenerator generator)
Writes end of an object or an array.- Parameters:
generator
- JSON format generator
-
serializeInternal
protected abstract void serializeInternal(T obj, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
Serialize content of provided container.- Parameters:
obj
- container to be serializedgenerator
- JSON format generatorctx
- JSON serialization context
-
serialize
public final void serialize(T obj, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
- Specified by:
serialize
in interfacejakarta.json.bind.serializer.JsonbSerializer<T>
-
serializerCaptor
protected <X> void serializerCaptor(jakarta.json.bind.serializer.JsonbSerializer<?> serializer, X object, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
Serializes container object item.- Type Parameters:
X
- type of object- Parameters:
serializer
- serializer of the objectobject
- object to serializegenerator
- json generatorctx
- context
-
getValueSerializer
protected jakarta.json.bind.serializer.JsonbSerializer<?> getValueSerializer(java.lang.Class<?> valueClass)
Return last used serializer if last value class matches.- Parameters:
valueClass
- class of the serialized object- Returns:
- cached serializer or null
-
addValueSerializer
protected void addValueSerializer(jakarta.json.bind.serializer.JsonbSerializer<?> valueSerializer, java.lang.Class<?> valueClass)
Cache a serializer and serialized object class for next use.- Parameters:
valueSerializer
- serializervalueClass
- class of serializer object
-
serializeItem
protected void serializeItem(java.lang.Object item, jakarta.json.stream.JsonGenerator generator, jakarta.json.bind.serializer.SerializationContext ctx)
Serializes container object.- Parameters:
item
- containergenerator
- json generatorctx
- context
-
getValueType
protected java.lang.reflect.Type getValueType(java.lang.reflect.Type valueType)
Value type of the container.- Parameters:
valueType
- value type- Returns:
- raw value type
-
-