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.
    final 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