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.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
TheLog
that this class should log all events to.protected int
streamNo
Field streamNo.
-
Constructor Summary
Constructors Modifier Constructor Description protected
BoundaryDelimitedStream(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 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 printarryint
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.
-
-
-
Field Detail
-
log
protected static org.apache.commons.logging.Log log
TheLog
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 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.IOException
Read from the boundary delimited stream.- Overrides:
read
in 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.IOException
Read from the boundary delimited stream.- Overrides:
read
in 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.IOException
Read from the boundary delimited stream.- Overrides:
read
in classjava.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 interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.FilterInputStream
- Throws:
java.io.IOException
-
mark
public void mark(int readlimit)
mark the stream. This is not supported.- Overrides:
mark
in classjava.io.FilterInputStream
- Parameters:
readlimit
-
-
reset
public void reset() throws java.io.IOException
reset the stream. This is not supported.- Overrides:
reset
in classjava.io.FilterInputStream
- Throws:
java.io.IOException
-
markSupported
public boolean markSupported()
markSupported return false;- Overrides:
markSupported
in classjava.io.FilterInputStream
- Returns:
-
available
public int available() throws java.io.IOException
- Overrides:
available
in classjava.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 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.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
-
-
-