Class CanonicalInstantiator


  • public abstract class CanonicalInstantiator
    extends Instantiator
    CanonicalInstantiator is much like its parent Instantiator except that instead of needing to implement newInstance() you now must implement newInstance(DataInput). The addition of the DataInput parameter allows the instance creator to optionally read data from the data input stream and use it to decide the instance to create. This allows a value that represents a canonical instance to be written by a class's DataSerializer.toData(java.lang.Object, java.io.DataOutput) and then be read by newInstance(DataInput) and map it back to a canonical instance.

    Note that DataSerializer.fromData(java.io.DataInput) is always called on the instance returned from newInstance(DataInput).

    Since:
    GemFire 5.1
    • Constructor Detail

      • CanonicalInstantiator

        public CanonicalInstantiator​(java.lang.Class<? extends DataSerializable> c,
                                     int classId)
        Creates a new CanonicalInstantiator that instantiates a given class.
        Parameters:
        c - The DataSerializable class to register. This class must have a static initializer that registers this Instantiator.
        classId - A unique id for class c. The classId must not be zero. This has been an int since dsPhase1.
        Throws:
        java.lang.IllegalArgumentException - If c does not implement DataSerializable, classId is less than or equal to zero.
        java.lang.NullPointerException - If c is null
    • Method Detail

      • newInstance

        public abstract DataSerializable newInstance​(java.io.DataInput in)
                                              throws java.io.IOException
        Creates a new "empty" instance of a DataSerializable class whose state will be filled in by invoking its fromData method.
        Parameters:
        in - the data input that can be read to decide what instance to create.
        Returns:
        the new "empty" instance.
        Throws:
        java.io.IOException - if a read from in fails.
        Since:
        GemFire 5.1