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, Type runtimeType, ClassModel classModel)
    Creates a new instance.
    protected
    Create instance of current item with its builder.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    addValueSerializer​(javax.json.bind.serializer.JsonbSerializer<?> valueSerializer, Class<?> valueClass)
    Cache a serializer and serialized object class for next use.
    protected void
    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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • 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, 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

      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(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 serialized
      generator - JSON format generator
      ctx - 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 interface javax.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 object
      object - object to serialize
      generator - json generator
      ctx - context
    • getValueSerializer

      protected javax.json.bind.serializer.JsonbSerializer<?> getValueSerializer(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, Class<?> valueClass)
      Cache a serializer and serialized object class for next use.
      Parameters:
      valueSerializer - serializer
      valueClass - 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 - container
      generator - json generator
      ctx - context
    • getValueType

      protected Type getValueType(Type valueType)
      Value type of the container.
      Parameters:
      valueType - value type
      Returns:
      raw value type