Class BufferedRereadableContent

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    @Deprecated(since="15.0.0",
                forRemoval=true)
    public class BufferedRereadableContent
    extends Object
    implements Closeable
    Deprecated, for removal: This API element is subject to removal in a future version.
    Use RereadableContent instead.
    The BufferedRereadableContent can be used when the content of an InputStream needs to be processed multiple times. Depending on its eventual size the whole content of the input stream is buffered in-memory - up to a certain threshold - or in a temporary file.

    The BufferedRereadableContent as well as the provided input streams must be closed after use! This can be ensured by adhering to the following template:

     
     try (BufferedRereadableContent input = new BufferedRereadableContent(inputStream))
     {
       ...
       try (InputStream is = input.getInputStream())
       {
         ...
       }
       ...
       try (InputStream is = input.getInputStream())
       {
         ...
       }
       ...
     }
     
     
    Closing this BufferedRereadableContent will also close the underlying InputStream (unless it has already been read and closed in the constructor). Also created streams that have not been closed will also be closed.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  BufferedRereadableContent.BrcCleanup
      Deprecated, for removal: This API element is subject to removal in a future version.
      The clean-up task deleting the temporary file if appropriate
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected Cleanup<RuntimeException> cleanup
      Deprecated, for removal: This API element is subject to removal in a future version.
      The clean-up for closing the createdStreams and the temporary file.
      protected Collection<Closeable> createdStreams
      Deprecated, for removal: This API element is subject to removal in a future version.
      All streams that have been created by this BufferedRereadableContent.
      protected static int DEFAULT_THRESHOLD
      Deprecated, for removal: This API element is subject to removal in a future version.
       
      protected long length
      Deprecated, for removal: This API element is subject to removal in a future version.
      The size of the content.
      protected Logger logger
      Deprecated, for removal: This API element is subject to removal in a future version.
      The logger for problems with the handling of the created input streams.
      protected static DateTimeFormatter TIMESTAMP_FORMATTER
      Deprecated, for removal: This API element is subject to removal in a future version.
       
    • Field Detail

      • DEFAULT_THRESHOLD

        protected static final int DEFAULT_THRESHOLD
        Deprecated, for removal: This API element is subject to removal in a future version.
        See Also:
        Constant Field Values
      • TIMESTAMP_FORMATTER

        protected static final DateTimeFormatter TIMESTAMP_FORMATTER
        Deprecated, for removal: This API element is subject to removal in a future version.
      • logger

        protected final Logger logger
        Deprecated, for removal: This API element is subject to removal in a future version.
        The logger for problems with the handling of the created input streams.
      • length

        protected final long length
        Deprecated, for removal: This API element is subject to removal in a future version.
        The size of the content.
      • createdStreams

        protected final Collection<Closeable> createdStreams
        Deprecated, for removal: This API element is subject to removal in a future version.
        All streams that have been created by this BufferedRereadableContent.
      • cleanup

        protected final Cleanup<RuntimeException> cleanup
        Deprecated, for removal: This API element is subject to removal in a future version.
        The clean-up for closing the createdStreams and the temporary file.
    • Constructor Detail

      • BufferedRereadableContent

        public BufferedRereadableContent​(InputStream inputStream)
                                  throws IOException
        Deprecated, for removal: This API element is subject to removal in a future version.
        Creates a new BufferedRereadableContent and immediately reads the given InputStream.
        Parameters:
        inputStream - The input stream to read. This will be closed when its content has been read. If it is already re-readable,it will be closed when closing this BufferedRereadableContent.
        Throws:
        IOException - if an I/O error occurs
      • BufferedRereadableContent

        public BufferedRereadableContent​(InputStream inputStream,
                                         int threshold,
                                         String tempFileTag,
                                         File tempDir)
                                  throws IOException
        Deprecated, for removal: This API element is subject to removal in a future version.
        Creates a new BufferedRereadableContent and immediately reads the given InputStream.
        Parameters:
        inputStream - The input stream to read. This will be closed when its content has been read. If it is already re-readable,it will be closed when closing this BufferedRereadableContent.
        threshold - the number of bytes after which to store the content in a file instead; negative values will result in the default threshold
        tempFileTag - an optional tag that will be incorporated into the name of the temp file if one is created; may be null
        tempDir - the directory where temp files should be created; may be null to use the default temp directory of the JVM; will be created if it doesn't exist
        Throws:
        IOException - if an I/O error occurs
    • Method Detail

      • getLength

        public long getLength()
        Deprecated, for removal: This API element is subject to removal in a future version.
        Returns the total length of the content.
        Returns:
        the total length of the content
      • getInputStream

        public InputStream getInputStream()
                                   throws IOException
        Deprecated, for removal: This API element is subject to removal in a future version.
        Returns an input stream for the data. This method may be called multiple times. The returned stream must be closed properly after use!
        Returns:
        an input stream for the data
        Throws:
        IOException - if an I/O error occurs
      • close

        public void close()
        Deprecated, for removal: This API element is subject to removal in a future version.
        Releases all resources and deletes the temporary file if one has been created.
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable