Interface DataSource.Opener

Enclosing class:
DataSource

public static interface DataSource.Opener
Interface for lazy-opening data streams one time.
  • Method Details

    • rawDataIsBinary

      boolean rawDataIsBinary()
      Check if the raw data is binary.

      The raw data may be either binary or characters. In both cases, either openStreamOnce() or openReaderOnce() may be called, but one will be more efficient than the other as one will supply data as is and the other one will convert raw data before providing it. If conversion is needed, it will also be done using UTF8 encoding, which may not be suitable. This method helps the data consumer to either choose the more efficient method or avoid wrong encoding conversion.

      Returns:
      true if raw data is binary, false if raw data is characters
    • openStreamOnce

      InputStream openStreamOnce() throws IOException
      Open a bytes stream once.

      Beware that this interface is only intended for lazy opening a stream, i.e. to delay this opening (or not open the stream at all). It is not intended to open the stream several times and not intended to open both the binary stream and the characters stream separately (but opening the reader may be implemented by opening the binary stream or vice-versa). Implementations may fail if an attempt to open a stream several times is made. This is particularly true for network-based streams.

      Returns:
      opened stream or null if there are no data streams at all
      Throws:
      IOException - if stream cannot be opened
    • openReaderOnce

      Reader openReaderOnce() throws IOException
      Open a characters stream reader once.

      Beware that this interface is only intended for lazy opening a stream, i.e. to delay this opening (or not open the stream at all). It is not intended to open the stream several times and not intended to open both the binary stream and the characters stream separately (but opening the reader may be implemented by opening the binary stream or vice-versa). Implementations may fail if an attempt to open a stream several times is made. This is particularly true for network-based streams.

      Returns:
      opened reader or null if there are no data streams at all
      Throws:
      IOException - if stream cannot be opened