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.protectedCreate instance of current item with its builder. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddValueSerializer(javax.json.bind.serializer.JsonbSerializer<?> valueSerializer, 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(Class<?> valueClass) Return last used serializer if last value class matches.protected TypegetValueType(Type valueType) Value type of the container.final 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(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(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 Details
-
AbstractContainerSerializer
Create instance of current item with its builder.- Parameters:
builder-SerializerBuilderused to build this instance
-
AbstractContainerSerializer
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:
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
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
-