Interface PofReader

  • All Known Implementing Classes:
    PofBufferReader, PofBufferReader.UserTypeReader

    public interface PofReader
    The PofReader interface provides the capability of reading a set of non-primitive Java types ("user types") from a POF stream as an ordered sequence of indexed properties.

    See PofWriter for a complete description of the POF user type serialization format.

    Since:
    Coherence 3.2
    Author:
    cp/jh 2006.07.13
    See Also:
    PofContext, PofWriter
    • Method Detail

      • readBoolean

        boolean readBoolean​(int iProp)
                     throws IOException
        Read a boolean property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the boolean property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readByte

        byte readByte​(int iProp)
               throws IOException
        Read a byte property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the byte property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readChar

        char readChar​(int iProp)
               throws IOException
        Read a char property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the char property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readShort

        short readShort​(int iProp)
                 throws IOException
        Read a short property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the short property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readInt

        int readInt​(int iProp)
             throws IOException
        Read a int property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the int property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readLong

        long readLong​(int iProp)
               throws IOException
        Read a long property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the long property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readFloat

        float readFloat​(int iProp)
                 throws IOException
        Read a float property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the float property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readDouble

        double readDouble​(int iProp)
                   throws IOException
        Read a double property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the double property value, or zero if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readBooleanArray

        boolean[] readBooleanArray​(int iProp)
                            throws IOException
        Read a boolean[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the boolean[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readByteArray

        byte[] readByteArray​(int iProp)
                      throws IOException
        Read a byte[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the byte[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readCharArray

        char[] readCharArray​(int iProp)
                      throws IOException
        Read a char[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the char[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readShortArray

        short[] readShortArray​(int iProp)
                        throws IOException
        Read a short[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the short[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readIntArray

        int[] readIntArray​(int iProp)
                    throws IOException
        Read a int[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the int[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readLongArray

        long[] readLongArray​(int iProp)
                      throws IOException
        Read a long[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the long[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readFloatArray

        float[] readFloatArray​(int iProp)
                        throws IOException
        Read a float[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the float[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readDoubleArray

        double[] readDoubleArray​(int iProp)
                          throws IOException
        Read a double[] property from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the double[] property value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readBigInteger

        BigInteger readBigInteger​(int iProp)
                           throws IOException
        Read a BigInteger from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the BigInteger property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawQuad

        RawQuad readRawQuad​(int iProp)
                     throws IOException
        Read a RawQuad from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawQuad property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readBigDecimal

        BigDecimal readBigDecimal​(int iProp)
                           throws IOException
        Read a BigDecimal from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the BigDecimal property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readBinary

        Binary readBinary​(int iProp)
                   throws IOException
        Read a Binary from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the Binary property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readString

        String readString​(int iProp)
                   throws IOException
        Read a String from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the String property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readDate

        Date readDate​(int iProp)
               throws IOException
        Read a java.util.Date from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the Date property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readLocalDate

        LocalDate readLocalDate​(int iProp)
                         throws IOException
        Read a java.time.LocalDate from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the LocalDate property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readLocalDateTime

        LocalDateTime readLocalDateTime​(int iProp)
                                 throws IOException
        Read a java.time.LocalDateTime from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the LocalDateTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readLocalTime

        LocalTime readLocalTime​(int iProp)
                         throws IOException
        Read a java.time.LocalTime from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the LocalTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readOffsetDateTime

        OffsetDateTime readOffsetDateTime​(int iProp)
                                   throws IOException
        Read a java.time.OffsetDateTime from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the OffsetDateTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readOffsetTime

        OffsetTime readOffsetTime​(int iProp)
                           throws IOException
        Read a java.time.OffsetTime from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the OffsetTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readZonedDateTime

        default ZonedDateTime readZonedDateTime​(int iProp)
                                         throws IOException
        Read a java.time.ZonedDateTime from the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the ZonedDateTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawDate

        RawDate readRawDate​(int iProp)
                     throws IOException
        Read a RawDate from the POF stream. The RawDate class contains the raw date information that was carried in the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawDate property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawTime

        RawTime readRawTime​(int iProp)
                     throws IOException
        Read a RawTime from the POF stream. The RawTime class contains the raw time information that was carried in the POF stream, including raw timezone information.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawDateTime

        RawDateTime readRawDateTime​(int iProp)
                             throws IOException
        Read a RawDateTime from the POF stream. The RawDateTime class contains the raw date and time information that was carried in the POF stream, including raw timezone information.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawDateTime property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawYearMonthInterval

        RawYearMonthInterval readRawYearMonthInterval​(int iProp)
                                               throws IOException
        Read a RawYearMonthInterval from the POF stream. The RawYearMonthInterval class contains the raw year-month interval information that was carried in the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawYearMonthInterval property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawTimeInterval

        RawTimeInterval readRawTimeInterval​(int iProp)
                                     throws IOException
        Read a RawTimeInterval from the POF stream. The RawTimeInterval class contains the raw time interval information that was carried in the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawTimeInterval property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readRawDayTimeInterval

        RawDayTimeInterval readRawDayTimeInterval​(int iProp)
                                           throws IOException
        Read a RawDayTimeInterval from the POF stream. The RawDayTimeInterval class contains the raw year-month interval information that was carried in the POF stream.
        Parameters:
        iProp - the property index to read
        Returns:
        the RawDayTimeInterval property value, or null if no value was available in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readObject

        <T> T readObject​(int iProp)
                  throws IOException
        Read a property of any type, including a user type, from the POF stream.
        Type Parameters:
        T - the object type
        Parameters:
        iProp - the property index to read
        Returns:
        the Object value; may be null
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readObjectArray

        @Deprecated
        Object[] readObjectArray​(int iProp,
                                 Object[] ao)
                          throws IOException
        Deprecated.
        Read an array of object values.
        Parameters:
        iProp - the property index to read
        ao - the optional array to use to store the values, or to use as a typed template for creating an array to store the values, following the documentation for Collection.toArray()
        Returns:
        an array of object values, or null if no array is passed and there is no array data in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readArray

        <T> T[] readArray​(int iProp,
                          IntFunction<T[]> supplier)
                   throws IOException
        Read an array of values.
        Type Parameters:
        T - the value type
        Parameters:
        iProp - the property index to read
        supplier - the supplier to use to create the array, typically an array constructor reference (i.e. String[]::new)
        Returns:
        an array of object values, or an empty array if there is no array data in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readLongArray

        <T> LongArray<T> readLongArray​(int iProp,
                                       LongArray<T> array)
                                throws IOException
        Read a LongArray of object values.
        Type Parameters:
        T - the object value type
        Parameters:
        iProp - the property index to read
        array - the optional LongArray object to use to store the values
        Returns:
        a LongArray of object values, or null if no LongArray is passed and there is no array data in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readCollection

        <T,​C extends Collection<T>> C readCollection​(int iProp,
                                                           C coll)
                                                    throws IOException
        Read a Collection of object values from the POF stream.
        Type Parameters:
        T - the object value type
        C - the collection type
        Parameters:
        iProp - the property index to read
        coll - the optional Collection to use to store the values
        Returns:
        a Collection of object values, or null if no Collection is passed and there is no collection data in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • readMap

        <K,​V,​M extends Map<K,​V>> M readMap​(int iProp,
                                                             M map)
                                                      throws IOException
        Read a Map of key/value pairs from the POF stream.
        Type Parameters:
        K - the key type
        V - the value type
        M - the map type
        Parameters:
        iProp - the property index to read
        map - the optional Map to initialize
        Returns:
        a Map of key/value pairs object values, or null if no Map is passed and there is no key/value data in the POF stream
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property
        IOException - if an I/O error occurs
      • getPofContext

        PofContext getPofContext()
        Return the PofContext object used by this PofReader to deserialize user types from a POF stream.
        Returns:
        the PofContext object that contains user type meta-data
      • setPofContext

        void setPofContext​(PofContext ctx)
        Configure the PofContext object used by this PofReader to deserialize user types from a POF stream.

        Note: this is an advanced method that should be used with care. For example, if this method is being used to switch to another PofContext mid-POF stream, it is important to eventually restore the original PofContext. For example:

         PofContext ctxOrig = reader.getPofContext();
         try
             {
             // switch to another PofContext
             PofContext ctxNew = ...;
             reader.setContext(ctxNew);
        
             // read POF data using the reader
             }
         finally
             {
             // restore the original PofContext
             reader.setPofContext(ctxOrig);
             }
         

        Parameters:
        ctx - the new PofContext; must not be null
      • getUserTypeId

        int getUserTypeId()
        Determine the user type that is currently being parsed.
        Returns:
        the user type information, or -1 if the PofReader is not currently parsing a user type
      • getVersionId

        int getVersionId()
        Determine the version identifier of the user type that is currently being parsed.
        Returns:
        the integer version ID read from the POF stream; always non-negative
        Throws:
        IllegalStateException - if no user type is being parsed
      • registerIdentity

        void registerIdentity​(Object o)
        Register an identity for a newly created user type instance.

        If identity/reference types are enabled, an identity is used to uniquely identify a user type instance within a POF stream. The identity immediately proceeds the instance value in the POF stream and can be used later in the stream to reference the instance.

        PofSerializer implementations must call this method with the user type instance instantiated during deserialization prior to reading any properties of the instance which are user type instances themselves.

        Parameters:
        o - the object to register the identity for
        Since:
        Coherence 3.7.1
        See Also:
        PofSerializer.deserialize(PofReader)
      • createNestedPofReader

        PofReader createNestedPofReader​(int iProp)
                                 throws IOException
        Obtain a PofReader that can be used to read a set of properties from a single property of the current user type. The returned PofReader is only valid from the time that it is returned until the next call is made to this PofReader.
        Parameters:
        iProp - the property index to read from
        Returns:
        a PofReader that reads its contents from a single property of this PofReader
        Throws:
        IllegalStateException - if the POF stream has already advanced past the desired property or if no user type is being parsed.
        IOException - if an I/O error occurs
        Since:
        Coherence 3.6
      • readRemainder

        Binary readRemainder()
                      throws IOException
        Read all remaining indexed properties of the current user type from the POF stream. As part of reading in a user type, this method must be called by the PofSerializer that is reading the user type, or the read position within the POF stream will be corrupted.

        Subsequent calls to the various readXYZ methods of this interface will fail after this method is called.

        Returns:
        a Binary object containing zero or more indexed properties in binary POF encoded form
        Throws:
        IllegalStateException - if no user type is being parsed
        IOException - if an I/O error occurs