Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 8556 invoked from network); 24 Nov 2003 20:41:16 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 24 Nov 2003 20:41:16 -0000 Received: (qmail 91522 invoked by uid 500); 24 Nov 2003 20:41:02 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 91392 invoked by uid 500); 24 Nov 2003 20:41:01 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 91379 invoked by uid 500); 24 Nov 2003 20:41:01 -0000 Received: (qmail 91376 invoked from network); 24 Nov 2003 20:41:01 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 24 Nov 2003 20:41:01 -0000 Received: (qmail 8526 invoked by uid 1567); 24 Nov 2003 20:41:11 -0000 Date: 24 Nov 2003 20:41:11 -0000 Message-ID: <20031124204111.8525.qmail@minotaur.apache.org> From: oglueck@apache.org To: jakarta-commons-cvs@apache.org Subject: cvs commit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server ResponseWriter.java SimpleHttpServerConnection.java GenericResponse.java HttpRequestHandler.java SimpleHttpServer.java HttpRequestHandlerChain.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N oglueck 2003/11/24 12:41:11 Modified: httpclient/src/test/org/apache/commons/httpclient/server Tag: HTTPCLIENT_2_0_BRANCH ResponseWriter.java SimpleHttpServerConnection.java GenericResponse.java HttpRequestHandler.java SimpleHttpServer.java HttpRequestHandlerChain.java Log: refactored code to be more OO and flexible enough for our needs Revision Changes Path No revision No revision 1.1.2.2 +3 -57 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/ResponseWriter.java Index: ResponseWriter.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/ResponseWriter.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- ResponseWriter.java 18 Nov 2003 12:26:39 -0000 1.1.2.1 +++ ResponseWriter.java 24 Nov 2003 20:41:11 -0000 1.1.2.2 @@ -78,7 +78,6 @@ public class ResponseWriter extends FilterWriter { public static final String CRLF = "\r\n"; public static final String ISO_8859_1 = "ISO-8859-1"; - private boolean modified = false; private OutputStream outStream; private String encoding; @@ -100,7 +99,6 @@ public void close() throws IOException { if(out != null) { - modified = true; super.close(); out = null; } @@ -118,69 +116,17 @@ public void write(byte b) throws IOException { super.flush(); - modified = true; outStream.write((int)b); } public void write(byte[] b) throws IOException { super.flush(); - modified = true; outStream.write(b); } public void write(byte[] b, int off, int len) throws IOException { super.flush(); - modified = true; outStream.write(b,off,len); } - /* (non-Javadoc) - * @see java.io.Writer#write(char[], int, int) - */ - public void write(char[] cbuf, int off, int len) throws IOException { - modified = true; - super.write(cbuf, off, len); - } - - /* (non-Javadoc) - * @see java.io.Writer#write(int) - */ - public void write(int c) throws IOException { - modified = true; - super.write(c); - } - - /* (non-Javadoc) - * @see java.io.Writer#write(java.lang.String, int, int) - */ - public void write(String str, int off, int len) throws IOException { - modified = true; - super.write(str, off, len); - } - - /* (non-Javadoc) - * @see java.io.Writer#write(char[]) - */ - public void write(char[] cbuf) throws IOException { - modified = true; - super.write(cbuf); - } - - /* (non-Javadoc) - * @see java.io.Writer#write(java.lang.String) - */ - public void write(String str) throws IOException { - modified = true; - super.write(str); - } - - /** - * Checks if this PrintWriter has been called - * - * @return true/false - */ - public boolean isModified() { - return modified; - } - public void print(String s) throws IOException { if (s == null) { s = "null"; 1.1.2.3 +34 -18 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/SimpleHttpServerConnection.java Index: SimpleHttpServerConnection.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/SimpleHttpServerConnection.java,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- SimpleHttpServerConnection.java 19 Nov 2003 00:23:30 -0000 1.1.2.2 +++ SimpleHttpServerConnection.java 24 Nov 2003 20:41:11 -0000 1.1.2.3 @@ -65,6 +65,8 @@ import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.net.Socket; import java.net.SocketException; @@ -86,18 +88,21 @@ private SimpleHttpServer server; private Socket socket; private InputStream in; - private ResponseWriter out; + private OutputStream out; private int requestNo = 0; private boolean keepAlive = false; + private RequestLine requestLine; + + private Header[] headers; + public SimpleHttpServerConnection(SimpleHttpServer server, Socket socket) throws IOException { this.server = server; this.socket = socket; this.in = socket.getInputStream(); - this.out = - new ResponseWriter(socket.getOutputStream()); + this.out = socket.getOutputStream(); } public void destroy() { @@ -154,7 +159,11 @@ * @return This connection's ResponseWriter */ public ResponseWriter getWriter() { - return out; + try { + return new ResponseWriter(out); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e.toString()); + } } /** @@ -178,25 +187,32 @@ return; } - RequestLine requestLine; - Header[] headers; try { requestLine = RequestLine.parseLine(line); headers = HttpParser.parseHeaders(in); } catch(IOException e) { connectionClose(); - ErrorResponse.getInstance().getResponse(HttpStatus.SC_BAD_REQUEST).processRequest(getWriter(), this, null, null); + ErrorResponse.getInstance().getResponse(HttpStatus.SC_BAD_REQUEST).processRequest(this); return; } - server.processRequest(this, requestLine, headers); + server.processRequest(this); } - /** - * Checks if we have found a {@link HttpRequestHandler} for this request. - * - * @return true/false - */ - public boolean isClaimed() { - return out.isModified(); + public Header[] getHeaders() { + Header[] copy = new Header[headers.length]; + System.arraycopy(headers, 0, copy, 0, headers.length); + return copy; + } + + public RequestLine getRequestLine() { + return requestLine; } + + public InputStream getInputStream() { + return in; + } + + public OutputStream getOutputStream() { + return out; + } } 1.1.2.2 +6 -10 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/GenericResponse.java Index: GenericResponse.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/GenericResponse.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- GenericResponse.java 18 Nov 2003 12:26:38 -0000 1.1.2.1 +++ GenericResponse.java 24 Nov 2003 20:41:11 -0000 1.1.2.2 @@ -174,16 +174,11 @@ } } - public void processRequest( - ResponseWriter out, - SimpleHttpServerConnection conn, - RequestLine requestLine, - Header[] headers) - throws IOException { + public boolean processRequest(SimpleHttpServerConnection conn) throws IOException { boolean haveContentLength = false; boolean haveContentType = false; - + ResponseWriter out = conn.getWriter(); out.println(getStatusLine()); if (responseHeaders != null) { for (int i = 0; i < responseHeaders.length; i++) { @@ -218,5 +213,6 @@ out.write(bos.toByteArray()); bos.close(); + return true; } } 1.1.2.2 +6 -9 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/HttpRequestHandler.java Index: HttpRequestHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/HttpRequestHandler.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- HttpRequestHandler.java 18 Nov 2003 12:26:38 -0000 1.1.2.1 +++ HttpRequestHandler.java 24 Nov 2003 20:41:11 -0000 1.1.2.2 @@ -65,8 +65,6 @@ import java.io.IOException; -import org.apache.commons.httpclient.Header; - /** * Defines an HTTP request handler for the SimpleHttpServer * @@ -86,11 +84,10 @@ * The handler may also rewrite the request parameters (this is useful in * {@link HttpRequestHandlerChain} structures). * - * @param out The ResponseWriter to be written to (may differ from conn.getResponseWriter()); * @param conn The Connection object to which this request belongs to. - * @param requestLine The request-line ("GET / HTTP/1.0", for example) - * @param headers The request-headers + * @return true if this handler handled the request and no other handlers in the + * chain should be called, false otherwise. * @throws IOException */ - public void processRequest(ResponseWriter out, SimpleHttpServerConnection conn, RequestLine requestLine, Header[] headers) throws IOException; + public boolean processRequest(SimpleHttpServerConnection conn) throws IOException; } 1.1.2.3 +8 -11 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/SimpleHttpServer.java Index: SimpleHttpServer.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/SimpleHttpServer.java,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- SimpleHttpServer.java 19 Nov 2003 00:23:30 -0000 1.1.2.2 +++ SimpleHttpServer.java 24 Nov 2003 20:41:11 -0000 1.1.2.3 @@ -71,7 +71,6 @@ import java.util.Iterator; import java.util.Set; -import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -192,18 +191,16 @@ connections.remove(conn); } - public void processRequest( - SimpleHttpServerConnection conn, - RequestLine requestLine, - Header[] headers) + public void processRequest(SimpleHttpServerConnection conn) throws IOException { + boolean complete = false; if (requestHandler != null) { - requestHandler.processRequest(conn.getWriter(), conn, requestLine, headers); + complete = requestHandler.processRequest(conn); } - if (!conn.isClaimed()) { + if (!complete) { conn.connectionClose(); - ErrorResponse.getInstance().getResponse(HttpStatus.SC_SERVICE_UNAVAILABLE).processRequest(conn.getWriter(), conn, requestLine, headers); + ErrorResponse.getInstance().getResponse(HttpStatus.SC_SERVICE_UNAVAILABLE).processRequest(conn); } conn.getWriter().flush(); 1.1.2.2 +8 -14 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/HttpRequestHandlerChain.java Index: HttpRequestHandlerChain.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/Attic/HttpRequestHandlerChain.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- HttpRequestHandlerChain.java 18 Nov 2003 12:26:38 -0000 1.1.2.1 +++ HttpRequestHandlerChain.java 24 Nov 2003 20:41:11 -0000 1.1.2.2 @@ -68,8 +68,6 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.httpclient.Header; - /** * Maintains a chain of {@link HttpRequestHandler}s where new request-handlers * can be prepended/appended. @@ -96,19 +94,15 @@ subhandlers.add(handler); } - public void processRequest( - ResponseWriter out, - SimpleHttpServerConnection conn, - RequestLine requestLine, - Header[] headers) - throws IOException { + public boolean processRequest(SimpleHttpServerConnection conn) throws IOException { for(Iterator it=subhandlers.iterator();it.hasNext();) { HttpRequestHandler h = (HttpRequestHandler)it.next(); - h.processRequest(out, conn, requestLine, headers); - if(conn.isClaimed()) { - break; + boolean stop = h.processRequest(conn); + if(stop) { + return true; } } + return false; } } --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org