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:
javax.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 javax.json.bind.serializer.JsonbSerializer<T>
Base class for container serializers (list, array, etc.).
-
Constructor Summary
ConstructorsModifierConstructorDescriptionAbstractContainerSerializer(CurrentItem<?> wrapper, Type runtimeType, ClassModel classModel)
Creates a new instance.protected
AbstractContainerSerializer(SerializerBuilder builder)
Create instance of current item with its builder. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addValueSerializer(javax.json.bind.serializer.JsonbSerializer<?> valueSerializer, Class<?> valueClass)
Cache a serializer and serialized object class for next use.protected void
beforeSerialize(T obj)
Process container before serialization begins.protected javax.json.bind.serializer.JsonbSerializer<?>
getValueSerializer(Class<?> valueClass)
Return last used serializer if last value class matches.protected Type
getValueType(Type valueType)
Value type of the container.void
serialize(T obj, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)
protected abstract void
serializeInternal(T obj, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)
Serialize content of provided container.protected void
serializeItem(Object item, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)
Serializes container object.protected <X> void
serializerCaptor(javax.json.bind.serializer.JsonbSerializer<?> serializer, X object, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)
Serializes container object item.protected void
writeEnd(javax.json.stream.JsonGenerator generator)
Writes end of an object or an array.protected abstract void
writeStart(String key, javax.json.stream.JsonGenerator generator)
Write start of an object or an array with a key.protected abstract void
writeStart(javax.json.stream.JsonGenerator generator)
Write start of an object or an array without a key.Methods inherited from class org.eclipse.yasson.internal.serializer.AbstractItem
getClassModel, getRuntimeType, getWrapper
-
Constructor Details
-
AbstractContainerSerializer
Create instance of current item with its builder.- Parameters:
builder
-SerializerBuilder
used to build this instance
-
AbstractContainerSerializer
public AbstractContainerSerializer(CurrentItem<?> wrapper, Type runtimeType, ClassModel classModel)Creates a new instance.- Parameters:
wrapper
- Item to serialize.runtimeType
- Runtime type of the item.classModel
- Class model.
-
-
Method Details
-
beforeSerialize
Process container before serialization begins. Does nothing by default.- Parameters:
obj
- item to be serialized
-
writeStart
protected abstract void writeStart(javax.json.stream.JsonGenerator generator)Write start of an object or an array without a key.- Parameters:
generator
- JSON format generator
-
writeStart
Write start of an object or an array with a key.- Parameters:
key
- JSON key name.generator
- JSON format generator
-
writeEnd
protected void writeEnd(javax.json.stream.JsonGenerator generator)Writes end of an object or an array.- Parameters:
generator
- JSON format generator
-
serializeInternal
protected abstract void serializeInternal(T obj, javax.json.stream.JsonGenerator generator, javax.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, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)- Specified by:
serialize
in interfacejavax.json.bind.serializer.JsonbSerializer<T>
-
serializerCaptor
protected <X> void serializerCaptor(javax.json.bind.serializer.JsonbSerializer<?> serializer, X object, javax.json.stream.JsonGenerator generator, javax.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
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(javax.json.bind.serializer.JsonbSerializer<?> valueSerializer, Class<?> valueClass)Cache a serializer and serialized object class for next use.- Parameters:
valueSerializer
- serializervalueClass
- class of serializer object
-
serializeItem
protected void serializeItem(Object item, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)Serializes container object.- Parameters:
item
- containergenerator
- json generatorctx
- context
-
getValueType
Value type of the container.- Parameters:
valueType
- value type- Returns:
- raw value type
-