Class SimplePofContext

java.lang.Object
com.tangosol.io.pof.SimplePofContext
All Implemented Interfaces:
PofContext, Serializer

@Named("simple-pof") public class SimplePofContext extends Object implements PofContext
Basic PofContext implementation.
Since:
Coherence 3.2
Author:
jh 2006.07.18
See Also:
  • Field Details

    • m_mapTypeId

      protected Map m_mapTypeId
      A Map that contains mappings from a registered user type into type identifier.
    • m_laClass

      protected LongArray m_laClass
      A LongArray of user types, indexed by type identifier.
    • m_laSerializer

      protected LongArray m_laSerializer
      A LongArray of PofSerializer objects, indexed by type identifier.
    • m_fReferenceEnabled

      protected boolean m_fReferenceEnabled
      True if POF Identity/Reference type support is enabled.
    • m_fPreferJavaTime

      protected boolean m_fPreferJavaTime
      True if Java 8 date/time types (java.time.*) should be preferred over legacy types.
  • Constructor Details

    • SimplePofContext

      public SimplePofContext()
      Create a new SimplePofContext.
  • Method Details

    • serialize

      public void serialize(WriteBuffer.BufferOutput out, Object o) throws IOException
      Serialize an object to a WriteBuffer by writing its state using the specified BufferOutput object.

      Note: Starting with Coherence 12.2.1 classes that need to designate an alternative object to be used by the Serializer when writing the object to the buffer should implement the SerializationSupport.writeReplace() method.

      Specified by:
      serialize in interface Serializer
      Parameters:
      out - the BufferOutput with which to write the object's state
      o - the object to serialize
      Throws:
      IOException - if an I/O error occurs
    • deserialize

      public Object deserialize(ReadBuffer.BufferInput in) throws IOException
      Deserialize an object from a ReadBuffer by reading its state using the specified BufferInput object.

      Note: Starting with Coherence 12.2.1 classes that need to designate an alternative object to be returned by the Serializer after an object is deserialized from the buffer should implement the SerializationSupport.readResolve() method.

      Specified by:
      deserialize in interface Serializer
      Parameters:
      in - the BufferInput with which to read the object's state
      Returns:
      the deserialized user type instance
      Throws:
      IOException - if an I/O error occurs
    • getName

      public String getName()
      Description copied from interface: Serializer
      Return the name of this serializer.
      Specified by:
      getName in interface Serializer
      Returns:
      the name of this serializer
    • getPofSerializer

      public PofSerializer getPofSerializer(int nTypeId)
      Return a PofSerializer that can be used to serialize and deserialize an object of the specified user type to and from a POF stream.
      Specified by:
      getPofSerializer in interface PofContext
      Parameters:
      nTypeId - the type identifier of the user type that can be serialized and deserialized using the returned PofSerializer; must be non-negative
      Returns:
      a PofSerializer for the specified user type
    • getUserTypeIdentifier

      public int getUserTypeIdentifier(Object o)
      Determine the user type identifier associated with the given object.
      Specified by:
      getUserTypeIdentifier in interface PofContext
      Parameters:
      o - an instance of a user type; must not be null
      Returns:
      the type identifier of the user type associated with the given object
    • getUserTypeIdentifier

      public int getUserTypeIdentifier(Class clz)
      Determine the user type identifier associated with the given class.
      Specified by:
      getUserTypeIdentifier in interface PofContext
      Parameters:
      clz - a user type class; must not be null
      Returns:
      the type identifier of the user type associated with the given class
    • getUserTypeIdentifier

      public int getUserTypeIdentifier(String sClass)
      Determine the user type identifier associated with the given class name.
      Specified by:
      getUserTypeIdentifier in interface PofContext
      Parameters:
      sClass - the name of a user type class; must not be null
      Returns:
      the type identifier of the user type associated with the given class name
    • getClassName

      public String getClassName(int nTypeId)
      Determine the name of the class associated with the given user type identifier.
      Specified by:
      getClassName in interface PofContext
      Parameters:
      nTypeId - the user type identifier; must be non-negative
      Returns:
      the name of the class associated with the specified user type identifier
    • getClass

      public Class getClass(int nTypeId)
      Determine the class associated with the given user type identifier.
      Specified by:
      getClass in interface PofContext
      Parameters:
      nTypeId - the user type identifier; must be non-negative
      Returns:
      the class associated with the specified user type identifier
    • isUserType

      public boolean isUserType(Object o)
      Determine if the given object is of a user type known to this PofContext.
      Specified by:
      isUserType in interface PofContext
      Parameters:
      o - the object to test; must not be null
      Returns:
      true iff the specified object is of a valid user type
    • isUserType

      public boolean isUserType(Class clz)
      Determine if the given class is a user type known to this PofContext.
      Specified by:
      isUserType in interface PofContext
      Parameters:
      clz - the class to test; must not be null
      Returns:
      true iff the specified class is a valid user type
    • isUserType

      public boolean isUserType(String sClass)
      Determine if the class with the given name is a user type known to this PofContext.
      Specified by:
      isUserType in interface PofContext
      Parameters:
      sClass - the name of the class to test; must not be null
      Returns:
      true iff the class with the specified name is a valid user type
    • isPreferJavaTime

      public boolean isPreferJavaTime()
      Return true if PofReader.readObject(int) method should return the appropriate Java 8 date/time type, or false if a legacy date/time types should be returned in order to preserve backwards compatibility.
      Specified by:
      isPreferJavaTime in interface PofContext
      Returns:
      true if Java 8 date/time types should be preferred over legacy types
    • registerPortableType

      public <T> SimplePofContext registerPortableType(Class<T> clz)
      Register PortableType.
      Parameters:
      clz - the portable type to register with this PofContext; must not be null, and must be annotated with PortableType annotation
      Throws:
      IllegalArgumentException - on invalid type identifer, class, or PofSerializer
    • registerPortableTypes

      public SimplePofContext registerPortableTypes(Class<?>... aClz)
      Register multiple PortableTypes.
      Parameters:
      aClz - the array of portable types to register with this PofContext; each specified class must be annotated with PortableType annotation
      Throws:
      IllegalArgumentException - if any of the specified classes is not a valid PortableType
    • registerUserType

      public <T> void registerUserType(int nTypeId, Class<T> clz, PofSerializer<T> serializer)
      Associate a user type with a type identifier and PofSerializer.
      Parameters:
      nTypeId - the type identifier of the specified user type; must be greater or equal to 0
      clz - the user type to register with this PofContext; must not be null
      serializer - the PofSerializer that will be used to serialize and deserialize objects of the specified class; must not be null
      Throws:
      IllegalArgumentException - on invalid type identifer, class, or PofSerializer
    • unregisterUserType

      public void unregisterUserType(int nTypeId)
      Unregister a user type that was previously registered using the specified type identifier.
      Parameters:
      nTypeId - the type identifier of the user type to unregister
      Throws:
      IllegalArgumentException - if the specified user type identifier is unknown to this PofContext
    • setPreferJavaTime

      public void setPreferJavaTime(boolean fPreferJavaTime)
      Set the flag specifying if Java 8 date/time types (java.time.*) should be preferred over legacy types.
      Parameters:
      fPreferJavaTime - whether Java 8 date/time types should be
    • validateTypeId

      protected void validateTypeId(int nTypeId)
      Ensure that the given user type identifier is valid.
      Parameters:
      nTypeId - the user type identifier to validate
      Throws:
      IllegalArgumentException - if the given user type identifier is negative
    • isReferenceEnabled

      public boolean isReferenceEnabled()
      Determine if Identity/Reference type support is enabled for this SimplePofContext.
      Returns:
      true if Identity/Reference type support is enabled
    • setReferenceEnabled

      public void setReferenceEnabled(boolean fEnabled)
      Enable or disable POF Identity/Reference type support for this SimplePofContext.
      Parameters:
      fEnabled - true to enable POF Identity/Reference type support; false to disable