Author: costin Date: Sat Nov 19 17:23:40 2005 New Revision: 345700 URL: http://svn.apache.org/viewcvs?rev=345700&view=rev Log: Remove duplicated methods.
Modified: tomcat/sandbox/java/org/apache/coyote/http11/InternalAprOutputBuffer.java Modified: tomcat/sandbox/java/org/apache/coyote/http11/InternalAprOutputBuffer.java URL: http://svn.apache.org/viewcvs/tomcat/sandbox/java/org/apache/coyote/http11/InternalAprOutputBuffer.java?rev=345700&r1=345699&r2=345700&view=diff ============================================================================== --- tomcat/sandbox/java/org/apache/coyote/http11/InternalAprOutputBuffer.java (original) +++ tomcat/sandbox/java/org/apache/coyote/http11/InternalAprOutputBuffer.java Sat Nov 19 17:23:40 2005 @@ -36,8 +36,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a> */ -public class InternalAprOutputBuffer - implements OutputBuffer { +public class InternalAprOutputBuffer extends InternalOutputBuffer { // -------------------------------------------------------------- Constants @@ -50,7 +49,7 @@ * Default constructor. */ public InternalAprOutputBuffer(Response response) { - this(response, Constants.DEFAULT_HTTP_HEADER_BUFFER_SIZE); + super(response, Constants.DEFAULT_HTTP_HEADER_BUFFER_SIZE); } @@ -58,117 +57,24 @@ * Alternate constructor. */ public InternalAprOutputBuffer(Response response, int headerBufferSize) { - - this.response = response; - headers = response.getMimeHeaders(); - - headerBuffer = new byte[headerBufferSize]; - buf = headerBuffer; + super( response, headerBufferSize); bbuf = ByteBuffer.allocateDirect((headerBufferSize / 1500 + 1) * 1500); outputStreamOutputBuffer = new SocketOutputBuffer(); - filterLibrary = new OutputFilter[0]; - activeFilters = new OutputFilter[0]; - lastActiveFilter = -1; - - committed = false; - finished = false; - // Cause loading of HttpMessages HttpMessages.getMessage(200); - } - - // -------------------------------------------------------------- Variables - - - /** - * The string manager for this package. - */ - protected static StringManager sm = - StringManager.getManager(Constants.Package); - - // ----------------------------------------------------- Instance Variables - - - /** - * Associated Coyote response. - */ - protected Response response; - - - /** - * Headers of the associated request. - */ - protected MimeHeaders headers; - - - /** - * Committed flag. - */ - protected boolean committed; - - - /** - * Finished flag. - */ - protected boolean finished; - - /** - * Pointer to the current read buffer. - */ - protected byte[] buf; - - - /** - * Position in the buffer. - */ - protected int pos; - - - /** - * HTTP header buffer. - */ - protected byte[] headerBuffer; - - - /** - * Underlying socket. + * Underlying socket. - instead of outputStream */ protected long socket; - /** - * Underlying output buffer. - */ - protected OutputBuffer outputStreamOutputBuffer; - - - /** - * Filter library. - * Note: Filter[0] is always the "chunked" filter. - */ - protected OutputFilter[] filterLibrary; - - - /** - * Active filter (which is actually the top of the pipeline). - */ - protected OutputFilter[] activeFilters; - - - /** - * Index of the last active filter. - */ - protected int lastActiveFilter; - - - /** + /** instead of socketBuffer * Direct byte buffer used for writing. */ protected ByteBuffer bbuf = null; @@ -193,76 +99,6 @@ return socket; } - - /** - * Set the socket buffer size. - */ - public void setSocketBuffer(int socketBufferSize) { - // FIXME: Remove - } - - - /** - * Add an output filter to the filter library. - */ - public void addFilter(OutputFilter filter) { - - OutputFilter[] newFilterLibrary = - new OutputFilter[filterLibrary.length + 1]; - for (int i = 0; i < filterLibrary.length; i++) { - newFilterLibrary[i] = filterLibrary[i]; - } - newFilterLibrary[filterLibrary.length] = filter; - filterLibrary = newFilterLibrary; - - activeFilters = new OutputFilter[filterLibrary.length]; - - } - - - /** - * Get filters. - */ - public OutputFilter[] getFilters() { - - return filterLibrary; - - } - - - /** - * Clear filters. - */ - public void clearFilters() { - - filterLibrary = new OutputFilter[0]; - lastActiveFilter = -1; - - } - - - /** - * Add an output filter to the filter library. - */ - public void addActiveFilter(OutputFilter filter) { - - if (lastActiveFilter == -1) { - filter.setBuffer(outputStreamOutputBuffer); - } else { - for (int i = 0; i <= lastActiveFilter; i++) { - if (activeFilters[i] == filter) - return; - } - filter.setBuffer(activeFilters[lastActiveFilter]); - } - - activeFilters[++lastActiveFilter] = filter; - - filter.setResponse(response); - - } - - // --------------------------------------------------------- Public Methods @@ -287,69 +123,16 @@ flushBuffer(); } - - - /** - * Reset current response. - * - * @throws IllegalStateException if the response has already been committed - */ - public void reset() { - - if (committed) - throw new IllegalStateException(/*FIXME:Put an error message*/); - - // Recycle Request object - response.recycle(); - - } - - /** * Recycle the output buffer. This should be called when closing the * connection. */ public void recycle() { + super.recycle(); - // Recycle Request object - response.recycle(); bbuf.clear(); - socket = 0; - buf = headerBuffer; - pos = 0; - lastActiveFilter = -1; - committed = false; - finished = false; - - } - - - /** - * End processing of current HTTP request. - * Note: All bytes of the current request should have been already - * consumed. This method only resets all the pointers so that we are ready - * to parse the next HTTP request. - */ - public void nextRequest() { - - // Recycle Request object - response.recycle(); - - // Determine the header buffer used for next request - buf = headerBuffer; - - // Recycle filters - for (int i = 0; i <= lastActiveFilter; i++) { - activeFilters[i].recycle(); - } - - // Reset pointers - pos = 0; - lastActiveFilter = -1; - committed = false; - finished = false; - + } @@ -399,144 +182,6 @@ } - - /** - * Send the response status line. - */ - public void sendStatus() { - - // Write protocol name - write(Constants.HTTP_11_BYTES); - buf[pos++] = Constants.SP; - - // Write status code - int status = response.getStatus(); - switch (status) { - case 200: - write(Constants._200_BYTES); - break; - case 400: - write(Constants._400_BYTES); - break; - case 404: - write(Constants._404_BYTES); - break; - default: - write(status); - } - - buf[pos++] = Constants.SP; - - // Write message - String message = response.getMessage(); - if (message == null) { - write(HttpMessages.getMessage(status)); - } else { - write(message); - } - - // End the response status line - buf[pos++] = Constants.CR; - buf[pos++] = Constants.LF; - - } - - - /** - * Send a header. - * - * @param name Header name - * @param value Header value - */ - public void sendHeader(MessageBytes name, MessageBytes value) { - - write(name); - buf[pos++] = Constants.COLON; - buf[pos++] = Constants.SP; - write(value); - buf[pos++] = Constants.CR; - buf[pos++] = Constants.LF; - - } - - - /** - * Send a header. - * - * @param name Header name - * @param value Header value - */ - public void sendHeader(ByteChunk name, ByteChunk value) { - - write(name); - buf[pos++] = Constants.COLON; - buf[pos++] = Constants.SP; - write(value); - buf[pos++] = Constants.CR; - buf[pos++] = Constants.LF; - - } - - - /** - * Send a header. - * - * @param name Header name - * @param value Header value - */ - public void sendHeader(String name, String value) { - - write(name); - buf[pos++] = Constants.COLON; - buf[pos++] = Constants.SP; - write(value); - buf[pos++] = Constants.CR; - buf[pos++] = Constants.LF; - - } - - - /** - * End the header block. - */ - public void endHeaders() { - - buf[pos++] = Constants.CR; - buf[pos++] = Constants.LF; - - } - - - // --------------------------------------------------- OutputBuffer Methods - - - /** - * Write the contents of a byte chunk. - * - * @param chunk byte chunk - * @return number of bytes written - * @throws IOException an undelying I/O error occured - */ - public int doWrite(ByteChunk chunk, Response res) - throws IOException { - - if (!committed) { - - // Send the connector a request for commit. The connector should - // then validate the headers, send them (using sendHeaders) and - // set the filters accordingly. - response.action(ActionCode.ACTION_COMMIT, null); - - } - - if (lastActiveFilter == -1) - return outputStreamOutputBuffer.doWrite(chunk, res); - else - return activeFilters[lastActiveFilter].doWrite(chunk, res); - - } - - // ------------------------------------------------------ Protected Methods @@ -558,136 +203,6 @@ } } - - - /** - * This method will write the contents of the specyfied message bytes - * buffer to the output stream, without filtering. This method is meant to - * be used to write the response header. - * - * @param mb data to be written - */ - protected void write(MessageBytes mb) { - - if (mb.getType() == MessageBytes.T_BYTES) { - ByteChunk bc = mb.getByteChunk(); - write(bc); - } else if (mb.getType() == MessageBytes.T_CHARS) { - CharChunk cc = mb.getCharChunk(); - write(cc); - } else { - write(mb.toString()); - } - - } - - - /** - * This method will write the contents of the specyfied message bytes - * buffer to the output stream, without filtering. This method is meant to - * be used to write the response header. - * - * @param bc data to be written - */ - protected void write(ByteChunk bc) { - - // Writing the byte chunk to the output buffer - System.arraycopy(bc.getBytes(), bc.getStart(), buf, pos, - bc.getLength()); - pos = pos + bc.getLength(); - - } - - - /** - * This method will write the contents of the specyfied char - * buffer to the output stream, without filtering. This method is meant to - * be used to write the response header. - * - * @param cc data to be written - */ - protected void write(CharChunk cc) { - - int start = cc.getStart(); - int end = cc.getEnd(); - char[] cbuf = cc.getBuffer(); - for (int i = start; i < end; i++) { - char c = cbuf[i]; - // Note: This is clearly incorrect for many strings, - // but is the only consistent approach within the current - // servlet framework. It must suffice until servlet output - // streams properly encode their output. - if ((c <= 31) && (c != 9)) { - c = ' '; - } else if (c == 127) { - c = ' '; - } - buf[pos++] = (byte) c; - } - - } - - - /** - * This method will write the contents of the specyfied byte - * buffer to the output stream, without filtering. This method is meant to - * be used to write the response header. - * - * @param b data to be written - */ - public void write(byte[] b) { - - // Writing the byte chunk to the output buffer - System.arraycopy(b, 0, buf, pos, b.length); - pos = pos + b.length; - - } - - - /** - * This method will write the contents of the specyfied String to the - * output stream, without filtering. This method is meant to be used to - * write the response header. - * - * @param s data to be written - */ - protected void write(String s) { - - if (s == null) - return; - - // From the Tomcat 3.3 HTTP/1.0 connector - int len = s.length(); - for (int i = 0; i < len; i++) { - char c = s.charAt (i); - // Note: This is clearly incorrect for many strings, - // but is the only consistent approach within the current - // servlet framework. It must suffice until servlet output - // streams properly encode their output. - if ((c <= 31) && (c != 9)) { - c = ' '; - } else if (c == 127) { - c = ' '; - } - buf[pos++] = (byte) c; - } - - } - - - /** - * This method will print the specified integer to the output stream, - * without filtering. This method is meant to be used to write the - * response header. - * - * @param i data to be written - */ - protected void write(int i) { - - write(String.valueOf(i)); - - } - /** * Callback to write data from the buffer. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]