Package org.apache.axis.attachments
Class BoundaryDelimitedStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- org.apache.axis.attachments.BoundaryDelimitedStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class BoundaryDelimitedStream extends java.io.FilterInputStreamThis class takes the input stream and turns it multiple streams.- Author:
- Rick Rineholt
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]boundaryprotected static intBOUNDARY_NOT_FOUNDField BOUNDARY_NOT_FOUND.protected static org.apache.commons.logging.LoglogTheLogthat this class should log all events to.protected intstreamNoField streamNo.
-
Constructor Summary
Constructors Modifier Constructor Description protectedBoundaryDelimitedStream(BoundaryDelimitedStream prev, int readbufsz)Constructor to create the next stream from the previous one.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intavailable()protected intboundaryPosition(byte[] searchbuf, int start, int end)Read from the boundary delimited stream.voidclose()Closes the stream.protected voidfinalClose()Close the underlying stream and remove all references to it.BoundaryDelimitedStreamgetNextStream()Gets the next stream.protected BoundaryDelimitedStreamgetNextStream(int readbufsz)Gets the next stream.voidmark(int readlimit)mark the stream.booleanmarkSupported()markSupported return false;protected static intnewStreamNo()Signal that a new stream has been created.static voidprintarry(byte[] b, int start, int end)Method printarryintread()Read from the boundary delimited stream.intread(byte[] b)Read from the boundary delimited stream.intread(byte[] b, int off, int len)Read from the boundary delimited stream.voidreset()reset the stream.
-
-
-
Field Detail
-
log
protected static org.apache.commons.logging.Log log
TheLogthat 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 streamreadbufsz- how many bytes to make the read buffer- Throws:
java.io.IOException- if there was a problem reading data fromprev
-
-
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.IOExceptionRead from the boundary delimited stream.- Overrides:
readin classjava.io.FilterInputStream- Parameters:
b- is the array to read into.off- is the offsetlen-- Returns:
- the number of bytes read. -1 if endof stream.
- Throws:
java.io.IOException
-
read
public int read(byte[] b) throws java.io.IOExceptionRead from the boundary delimited stream.- Overrides:
readin classjava.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.IOExceptionRead from the boundary delimited stream.- Overrides:
readin classjava.io.FilterInputStream- Returns:
- The byte read, or -1 if endof stream.
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOExceptionCloses the stream.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.FilterInputStream- Throws:
java.io.IOException
-
mark
public void mark(int readlimit)
mark the stream. This is not supported.- Overrides:
markin classjava.io.FilterInputStream- Parameters:
readlimit-
-
reset
public void reset() throws java.io.IOExceptionreset the stream. This is not supported.- Overrides:
resetin classjava.io.FilterInputStream- Throws:
java.io.IOException
-
markSupported
public boolean markSupported()
markSupported return false;- Overrides:
markSupportedin classjava.io.FilterInputStream- Returns:
-
available
public int available() throws java.io.IOException- Overrides:
availablein classjava.io.FilterInputStream- Throws:
java.io.IOException
-
boundaryPosition
protected int boundaryPosition(byte[] searchbuf, int start, int end) throws java.io.IOExceptionRead from the boundary delimited stream.- Parameters:
searchbuf- buffer to read fromstart- starting indexend- 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.IOExceptionClose 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-
-
-