Class BoundaryDelimitedStream

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class BoundaryDelimitedStream
    extends java.io.FilterInputStream
    This class takes the input stream and turns it multiple streams.
    Author:
    Rick Rineholt
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected byte[] boundary  
      protected static int BOUNDARY_NOT_FOUND
      Field BOUNDARY_NOT_FOUND.
      protected static org.apache.commons.logging.Log log
      The Log that this class should log all events to.
      protected int streamNo
      Field streamNo.
      • Fields inherited from class java.io.FilterInputStream

        in
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int available()  
      protected int boundaryPosition​(byte[] searchbuf, int start, int end)
      Read from the boundary delimited stream.
      void close()
      Closes the stream.
      protected void finalClose()
      Close the underlying stream and remove all references to it.
      BoundaryDelimitedStream getNextStream()
      Gets the next stream.
      protected BoundaryDelimitedStream getNextStream​(int readbufsz)
      Gets the next stream.
      void mark​(int readlimit)
      mark the stream.
      boolean markSupported()
      markSupported return false;
      protected static int newStreamNo()
      Signal that a new stream has been created.
      static void printarry​(byte[] b, int start, int end)
      Method printarry
      int read()
      Read from the boundary delimited stream.
      int read​(byte[] b)
      Read from the boundary delimited stream.
      int read​(byte[] b, int off, int len)
      Read from the boundary delimited stream.
      void reset()
      reset the stream.
      • Methods inherited from class java.io.FilterInputStream

        skip
      • Methods inherited from class java.io.InputStream

        nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • log

        protected static org.apache.commons.logging.Log log
        The Log that this class should log all events to.
      • boundary

        protected byte[] boundary
      • BOUNDARY_NOT_FOUND

        protected static final int BOUNDARY_NOT_FOUND
        Field BOUNDARY_NOT_FOUND.
        See Also:
        Constant Field Values
      • streamNo

        protected int streamNo
        Field streamNo.
    • Constructor Detail

      • BoundaryDelimitedStream

        protected BoundaryDelimitedStream​(BoundaryDelimitedStream prev,
                                          int readbufsz)
                                   throws java.io.IOException
        Constructor to create the next stream from the previous one.
        Parameters:
        prev - the previous stream
        readbufsz - how many bytes to make the read buffer
        Throws:
        java.io.IOException - if there was a problem reading data from prev
    • Method Detail

      • newStreamNo

        protected static int newStreamNo()
        Signal that a new stream has been created.
        Returns:
      • getNextStream

        public BoundaryDelimitedStream getNextStream()
                                              throws java.io.IOException
        Gets the next stream. From the previous using the same buffer size to read.
        Returns:
        the boundary delmited stream, null if there are no more streams.
        Throws:
        java.io.IOException - if there was an error loading the data for the next stream
      • getNextStream

        protected BoundaryDelimitedStream getNextStream​(int readbufsz)
                                                 throws java.io.IOException
        Gets the next stream. From the previous using new buffer reading size.
        Parameters:
        readbufsz -
        Returns:
        the boundary delmited stream, null if there are no more streams.
        Throws:
        java.io.IOException - if there was an error loading the data for the next stream
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Read from the boundary delimited stream.
        Overrides:
        read in class java.io.FilterInputStream
        Parameters:
        b - is the array to read into.
        off - is the offset
        len -
        Returns:
        the number of bytes read. -1 if endof stream.
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b)
                 throws java.io.IOException
        Read from the boundary delimited stream.
        Overrides:
        read in class java.io.FilterInputStream
        Parameters:
        b - is the array to read into. Read as much as possible into the size of this array.
        Returns:
        the number of bytes read. -1 if endof stream.
        Throws:
        java.io.IOException
      • read

        public int read()
                 throws java.io.IOException
        Read from the boundary delimited stream.
        Overrides:
        read in class java.io.FilterInputStream
        Returns:
        The byte read, or -1 if endof stream.
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Closes the stream.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • mark

        public void mark​(int readlimit)
        mark the stream. This is not supported.
        Overrides:
        mark in class java.io.FilterInputStream
        Parameters:
        readlimit -
      • reset

        public void reset()
                   throws java.io.IOException
        reset the stream. This is not supported.
        Overrides:
        reset in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • markSupported

        public boolean markSupported()
        markSupported return false;
        Overrides:
        markSupported in class java.io.FilterInputStream
        Returns:
      • available

        public int available()
                      throws java.io.IOException
        Overrides:
        available in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • boundaryPosition

        protected int boundaryPosition​(byte[] searchbuf,
                                       int start,
                                       int end)
                                throws java.io.IOException
        Read from the boundary delimited stream.
        Parameters:
        searchbuf - buffer to read from
        start - starting index
        end - ending index
        Returns:
        The position of the boundary. Detects the end of the source stream.
        Throws:
        java.io.IOException - if there was an error manipulating the underlying stream
      • finalClose

        protected void finalClose()
                           throws java.io.IOException
        Close the underlying stream and remove all references to it.
        Throws:
        java.io.IOException - if the stream could not be closed
      • printarry

        public static void printarry​(byte[] b,
                                     int start,
                                     int end)
        Method printarry
        Parameters:
        b -
        start -
        end -