You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by og...@apache.org on 2003/11/24 21:41:11 UTC

cvs commit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server ResponseWriter.java SimpleHttpServerConnection.java GenericResponse.java HttpRequestHandler.java SimpleHttpServer.java HttpRequestHandlerChain.java

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 <code>conn.getResponseWriter()</code>);
        * @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