Class PortableTypeSerializer<T>

java.lang.Object
com.tangosol.io.pof.PortableTypeSerializer<T>
All Implemented Interfaces:
PofSerializer<T>

public class PortableTypeSerializer<T> extends Object implements PofSerializer<T>
A PofSerializer implementation that serializes classes that implement PortableObject interface (and optionally EvolvableObject interface).

Unlike legacy PortableObjectSerializer, this class serializes attributes of each class in the object's hierarchy into a separate nested POF stream, which allows for independent evolution of each class in the hierarchy, as well as the evolution of the hierarchy itself (addition of new classes at any level in the hierarchy).

Since:
12.2.1
Author:
as 2013.05.01
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final int
    The type identifier of the user type to serialize and deserialize.
  • Constructor Summary

    Constructors
    Constructor
    Description
    PortableTypeSerializer(int nTypeId, Class<T> clazz)
    Create a new PortableTypeSerializer for the user type with the given type identifier and class.
  • Method Summary

    Modifier and Type
    Method
    Description
    Deserialize a user type instance from a POF stream by reading its state using the specified PofReader object.
    protected Class<?>
    getClassForTypeId(PofContext ctx, int nTypeId)
    Return the class associated with a specified type identifier, or null if the identifier is not defined in the current POF context.
    void
    serialize(PofWriter writer, T value)
    Serialize a user type instance to a POF stream by writing its state using the specified PofWriter object.

    Methods inherited from class java.lang.Object

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

    • m_nTypeId

      protected final int m_nTypeId
      The type identifier of the user type to serialize and deserialize.
  • Constructor Details

    • PortableTypeSerializer

      public PortableTypeSerializer(int nTypeId, Class<T> clazz)
      Create a new PortableTypeSerializer for the user type with the given type identifier and class.
      Parameters:
      nTypeId - the type identifier of the user type to serialize and deserialize
      clazz - the class of the user type to serialize and deserialize
  • Method Details

    • serialize

      public void serialize(PofWriter writer, T value) throws IOException
      Description copied from interface: PofSerializer
      Serialize a user type instance to a POF stream by writing its state using the specified PofWriter object.

      An implementation of PofSerializer is required to follow the following steps in sequence for writing out an object of a user type:

      1. If the object is evolvable, the implementation must set the version by calling PofWriter.setVersionId(int).
      2. The implementation may write any combination of the properties of the user type by using the "write" methods of the PofWriter, but it must do so in the order of the property indexes.
      3. After all desired properties of the user type have been written, the implementation must terminate the writing of the user type by calling PofWriter.writeRemainder(com.tangosol.util.Binary).
      Specified by:
      serialize in interface PofSerializer<T>
      Parameters:
      writer - the PofWriter with which to write the object's state
      value - the object to serialize
      Throws:
      IOException - if an I/O error occurs
    • deserialize

      public T deserialize(PofReader reader) throws IOException
      Description copied from interface: PofSerializer
      Deserialize a user type instance from a POF stream by reading its state using the specified PofReader object.

      An implementation of PofSerializer is required to follow the following steps in sequence for reading in an object of a user type:

      1. If the object is evolvable, the implementation must get the version by calling PofReader.getVersionId().
      2. The implementation may read any combination of the properties of the user type by using "read" methods of the PofReader, but it must do so in the order of the property indexes. Additionally, the implementation must call PofReader.registerIdentity(java.lang.Object) with the new instance prior to reading any properties which are user type instances themselves.
      3. After all desired properties of the user type have been read, the implementation must terminate the reading of the user type by calling PofReader.readRemainder().
      Specified by:
      deserialize in interface PofSerializer<T>
      Parameters:
      reader - the PofReader with which to read the object's state
      Returns:
      the deserialized user type instance
      Throws:
      IOException - if an I/O error occurs
    • getClassForTypeId

      protected Class<?> getClassForTypeId(PofContext ctx, int nTypeId)
      Return the class associated with a specified type identifier, or null if the identifier is not defined in the current POF context.
      Parameters:
      ctx - the POF context
      nTypeId - the type identifier to lookup
      Returns:
      the class associated with a specified type identifier, or null if the identifier is not defined in the current POF context