Class DataSourceStreamingDataHandler

java.lang.Object
jakarta.activation.DataHandler
com.helger.mail.datahandler.AbstractStreamingDataHandler
com.helger.mail.datahandler.DataSourceStreamingDataHandler
All Implemented Interfaces:
Closeable, AutoCloseable

public class DataSourceStreamingDataHandler extends AbstractStreamingDataHandler
An implementation of AbstractStreamingDataHandler using DataSource as the source.
Author:
Philip Helger
  • Constructor Summary

    Constructors
    Constructor
    Description
    DataSourceStreamingDataHandler(jakarta.activation.DataSource aDataSource)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    Works like DataHandler.getInputStream() except that this method can be invoked only once.
    This is used as a signal from the caller that there will be no further DataHandler.getInputStream() invocation nor AbstractStreamingDataHandler.readOnce() invocation on this object (which would result in IOException.)
    When DataHandler is backed by a streaming BLOB (such as an attachment in a web service read from the network), this allows the callee to avoid unnecessary buffering.
    Note that it is legal to call DataHandler.getInputStream() multiple times and then call AbstractStreamingDataHandler.readOnce() afterward.

    Methods inherited from class com.helger.mail.datahandler.AbstractStreamingDataHandler

    getHrefCid, setHrefCid

    Methods inherited from class jakarta.activation.DataHandler

    getAllCommands, getBean, getCommand, getContent, getContentType, getDataSource, getInputStream, getName, getOutputStream, getPreferredCommands, getTransferData, getTransferDataFlavors, isDataFlavorSupported, setCommandMap, setDataContentHandlerFactory, writeTo

    Methods inherited from class java.lang.Object

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

    • DataSourceStreamingDataHandler

      public DataSourceStreamingDataHandler(@Nonnull jakarta.activation.DataSource aDataSource)
  • Method Details

    • readOnce

      public InputStream readOnce() throws IOException
      Description copied from class: AbstractStreamingDataHandler
      Works like DataHandler.getInputStream() except that this method can be invoked only once.
      This is used as a signal from the caller that there will be no further DataHandler.getInputStream() invocation nor AbstractStreamingDataHandler.readOnce() invocation on this object (which would result in IOException.)
      When DataHandler is backed by a streaming BLOB (such as an attachment in a web service read from the network), this allows the callee to avoid unnecessary buffering.
      Note that it is legal to call DataHandler.getInputStream() multiple times and then call AbstractStreamingDataHandler.readOnce() afterward. Streams created such a way can be read in any order - there's no requirement that streams created earlier must be read first.
      Specified by:
      readOnce in class AbstractStreamingDataHandler
      Returns:
      always non-null. Represents the content of this BLOB. The returned stream is generally not buffered, so for better performance read in a big batch or wrap this into BufferedInputStream.
      Throws:
      IOException - if any i/o error
    • close

      public void close() throws IOException
      Throws:
      IOException