| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object
  |
  +--java.io.InputStream
        |
        +--org.apache.struts.upload.MultipartValueStream
This class implements an inputStream that reads another stream until a multipart boundary is found. The class reports eof when boundary found. The undelying stream is not closed.
See RFC 1867 (http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1867.txt) for details about the protocol.
| Field Summary | |
| private  byte[] | boundaryBytesbyte buffer with the boundary | 
| private  boolean | boundaryReachedhave we reached the boundary? | 
| private  boolean | finalBoundaryReachedis the boundary found a final boundary? | 
| static java.lang.String | HEADER_ENCODING | 
| private  java.io.InputStream | inthe underlying stream | 
| private  int | matchedBoundaryByteshow many curretly matched boundary bytes? | 
| private  int | readAheadBufferEndIThe end index for the read ahead cyclic buffer (points to the last byte) | 
| private  int | readAheadBufferStartIThe start index for the read ahead cyclic buffer (points to the first byte) | 
| private  byte[] | readAheadBytesthe read ahead buffer (cyclic) | 
| Fields inherited from class java.io.InputStream | 
|  | 
| Constructor Summary | |
| MultipartValueStream(java.io.InputStream in,
                     java.lang.String boundary)Create a stream that stops reading at the boundary NOTE: the boundary parameter is without the trailing dashes "--". | |
| Method Summary | |
|  boolean | encounteredFinalBoundary() | 
|  int | read()Read the next byte | 
| Methods inherited from class java.io.InputStream | 
| available, close, mark, markSupported, read, read, reset, skip | 
| Methods inherited from class java.lang.Object | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
public static final java.lang.String HEADER_ENCODING
private java.io.InputStream in
private byte[] boundaryBytes
private int matchedBoundaryBytes
private byte[] readAheadBytes
private int readAheadBufferStartI
private int readAheadBufferEndI
private boolean boundaryReached
private boolean finalBoundaryReached
| Constructor Detail | 
public MultipartValueStream(java.io.InputStream in,
                            java.lang.String boundary)
                     throws java.io.IOException
| Method Detail | 
public int read()
         throws java.io.IOException
read in class java.io.InputStreamjava.io.IOException - if the ending boundary is never found
public boolean encounteredFinalBoundary()
                                 throws javax.servlet.ServletException
javax.servlet.ServletException - if the boundary has not yet been reached| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||