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
Constructors Modifier Constructor Description AbstractContainerSerializer(CurrentItem<?> wrapper, java.lang.reflect.Type runtimeType, ClassModel classModel)Creates a new instance.protectedAbstractContainerSerializer(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 voidaddValueSerializer(javax.json.bind.serializer.JsonbSerializer<?> valueSerializer, java.lang.Class<?> valueClass)Cache a serializer and serialized object class for next use.protected voidbeforeSerialize(T obj)Process container before serialization begins.protected javax.json.bind.serializer.JsonbSerializer<?>getValueSerializer(java.lang.Class<?> valueClass)Return last used serializer if last value class matches.protected java.lang.reflect.TypegetValueType(java.lang.reflect.Type valueType)Value type of the container.voidserialize(T obj, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)protected abstract voidserializeInternal(T obj, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)Serialize content of provided container.protected voidserializeItem(java.lang.Object item, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)Serializes container object.protected <X> voidserializerCaptor(javax.json.bind.serializer.JsonbSerializer<?> serializer, X object, javax.json.stream.JsonGenerator generator, javax.json.bind.serializer.SerializationContext ctx)Serializes container object item.protected voidwriteEnd(javax.json.stream.JsonGenerator generator)Writes end of an object or an array.protected abstract voidwriteStart(java.lang.String key, javax.json.stream.JsonGenerator generator)Write start of an object or an array with a key.protected abstract voidwriteStart(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 Detail
-
AbstractContainerSerializer
protected AbstractContainerSerializer(SerializerBuilder builder)
Create instance of current item with its builder.- Parameters:
builder-SerializerBuilderused 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(javax.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, javax.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(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:
serializein 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
protected javax.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(javax.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, javax.json.stream.JsonGenerator generator, javax.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
-
-