rwaldhoff    01/08/09 17:06:19

  Modified:    httpclient/src/java/org/apache/commons/httpclient Tag:
                        rlwrefactoring HttpClient.java
  Added:       httpclient/src/java/org/apache/commons/httpclient Tag:
                        rlwrefactoring HttpConnection.java
  Log:
  Moving most of the Socket/InputStream/OutputStream operations to HttpConnection.
  
  (Note that the interceptor stuff is probably broken right now)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.31.2.1  +69 -150   
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java
  
  Index: HttpClient.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java,v
  retrieving revision 1.31
  retrieving revision 1.31.2.1
  diff -u -r1.31 -r1.31.2.1
  --- HttpClient.java   2001/08/08 21:23:40     1.31
  +++ HttpClient.java   2001/08/10 00:06:19     1.31.2.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java,v
 1.31 2001/08/08 21:23:40 rwaldhoff Exp $
  - * $Revision: 1.31 $
  - * $Date: 2001/08/08 21:23:40 $
  + * $Header: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java,v
 1.31.2.1 2001/08/10 00:06:19 rwaldhoff Exp $
  + * $Revision: 1.31.2.1 $
  + * $Date: 2001/08/10 00:06:19 $
    *
    * ====================================================================
    *
  @@ -150,11 +150,7 @@
       // ----------------------------------------------------- Instance Variables
   
   
  -    /**
  -     * Client Socket in use.
  -     */
  -    protected Socket socket;
  -
  +    protected HttpConnection connection = null;
   
       /**
        * Session state.
  @@ -169,53 +165,11 @@
   
   
       /**
  -     * Socket input stream.
  -     */
  -    protected InputStream input;
  -
  -
  -    /**
  -     * Socket output stream.
  -     */
  -    protected OutputStream output;
  -
  -
  -    /**
  -     * The host name specified when the startSession(host, port) method was
  -     * called.
  -     */
  -    protected String sessionHost = "";
  -
  -
  -    /**
  -     * Proxy port number.
  -     */
  -    protected int proxyPort = -1;
  -
  -
  -    /**
  -     * Proxy hostname.
  -     */
  -    protected String proxyHost = null;
  -
  -
  -    /**
  -     * Port number.
  -     */
  -    protected int sessionPort = -1;
  -
  -
  -    /**
        * HTTP/1.1 flag.
        */
       protected boolean http11 = false;
   
       /**
  -     * HTTPS flag.
  -     */
  -    protected boolean https = false;
  -
  -    /**
        * Stream interceptors.
        */
       protected StreamInterceptor streamInterceptor = null;
  @@ -241,7 +195,8 @@
        * Set the socket to use.
        */
       public void setSocket(Socket socket) {
  -        this.socket = socket;
  +        //this.socket = socket;
  +        throw new UnsupportedOperationException("Is this ever used?");
       }
   
   
  @@ -300,24 +255,7 @@
           return debug;
       }
   
  -
       /**
  -     * Get the session host.
  -     */
  -    public String getHost() {
  -        return sessionHost;
  -    }
  -
  -
  -    /**
  -     * Get the session port.
  -     */
  -    public int getPort() {
  -        return sessionPort;
  -    }
  -
  -
  -    /**
        * Get the state for lock information.
        */
       public State getState() {
  @@ -431,7 +369,9 @@
   
           String wwwAuthenticateValue = null;
   
  -        openConnection();
  +        if(!connection.isOpen()) {
  +            connection.open();
  +        }
   
           while ((retries < 5) && (!methodProcessed)) {
               log.debug("HttpClient.executeMethod(): trying " + retries + ".");
  @@ -455,30 +395,19 @@
   
                   boolean closeOutput = needToCloseOutput(method);
                   if (closeOutput) {
  -                    try {
  -                        // Socket.shutdownOutput is a JDK 1.3
  -                        // method. We'll use reflection in case
  -                        // we're running in an older VM
  -                        Class[] paramsClasses = new Class[0];
  -                        Method shutdownOutput = socket.getClass().getMethod
  -                            ("shutdownOutput", paramsClasses);
  -                        Object[] params = new Object[0];
  -                        shutdownOutput.invoke(socket, params);
  -                    } catch (Exception e) {
  -                        // Ignore, and hope everything goes right
  -                    }
  +                    connection.shutdownOutput();
                   }
   
                   // Parsing response
   
                   // Parse status line
  -                String statusLine = readLine(input);
  +                String statusLine = connection.readLine();
                   if (statusLine == null)
                       throw new IOException("Couldn't parse status line");
                   parseStatusLine(statusLine, method);
   
                   // Parse headers
  -                responseHeaders = parseHeaders(input);
  +                responseHeaders = parseHeaders();
   
                   while (method.getStatusCode() < 200) {
   
  @@ -497,13 +426,13 @@
                           }
                       }
   
  -                    statusLine = readLine(input);
  +                    statusLine = connection.readLine();
                       if (statusLine == null)
                           throw new IOException("Couldn't parse status line");
                       parseStatusLine(statusLine, method);
   
                       // Parse headers
  -                    responseHeaders = parseHeaders(input);
  +                    responseHeaders = parseHeaders();
   
                   }
   
  @@ -576,7 +505,7 @@
                           // Consume bytes returned (if any)
                           method.processResponseHeaders(responseHeaders);
                           ResponseInputStream responseInputStream =
  -                            new ResponseInputStream(input, method,
  +                            new ResponseInputStream(connection.getInputStream(), 
method,
                                                       responseHeaders);
                           // FIXME : Really set the interceptors here ?
                           // The content is meant to be discarded
  @@ -586,8 +515,8 @@
                           if (closeOutput ||
                               needToCloseConnection(method, responseHeaders)) {
                               // Disconnect and reconnect if needed
  -                            closeConnection();
  -                            openConnection();
  +                            connection.close();
  +                            connection.open();
                           }
                       }
                   }
  @@ -599,11 +528,11 @@
                   log.debug("HttpClient.executeMethod(): IOException while executing 
method, will close and try again.",e);
                   // If something goes wrong, disconnect, then reconnect
                   try {
  -                    closeConnection();
  +                    connection.close();
                   } catch (IOException ex) {
                       // Silent catch
                   }
  -                openConnection();
  +                connection.open();
               } catch (HttpException e) {
                   log.warn("HttpClient.executeMethod(): caught HTTP Exception: " +
                            e.getMessage() + ", Status Code: " + e.getStatusCode(),e);
  @@ -615,13 +544,13 @@
                       method.setStatusCode(e.getStatusCode());
                   // If something goes wrong, disconnect, then reconnect
                   try {
  -                    closeConnection();
  +                    connection.close();
                   } catch (IOException ex) {
                       // Silent catch
                   }
                   if (e.getStatusCode() == HttpException.NO_CREDENTIALS_GIVEN)
                       throw new HttpException(HttpStatus.SC_UNAUTHORIZED);
  -                openConnection();
  +                connection.open();
               }
   
               retries++;
  @@ -637,7 +566,7 @@
           method.setUsed();
           // Parse response
           ResponseInputStream responseInputStream =
  -            new ResponseInputStream(input, method, responseHeaders);
  +            new ResponseInputStream(connection.getInputStream(), method, 
responseHeaders);
           responseInputStream.setInterceptor(streamInterceptor);
   
           method.parseResponse(responseInputStream);
  @@ -645,7 +574,7 @@
           responseInputStream.close();
   
           if (needToCloseConnection(method, responseHeaders)) {
  -            closeConnection();
  +            connection.close();
           }
   
       }
  @@ -659,13 +588,12 @@
        *             to make usage more clear.
        */
       public void startSession() {
  -
  -        if (state == null)
  +        if(null == state) {
               state = new State();
  -        this.sessionHost = "localhost";
  -        this.sessionPort = 80;
  -        this.https = false;
  -
  +        }
  +        if (null == connection) {
  +            connection = new HttpConnection("localhost",80,false);
  +        }
       }
   
   
  @@ -683,13 +611,12 @@
       public void startSession(String host, int port, boolean https) {
           log.debug("HttpClient.startSession(String,int,boolean): Host:" +
                     host + " Port:" + port + " HTTPS:" + https);
  -
  -        if (state == null)
  +        if(null == state) {
               state = new State();
  -        this.sessionHost = host;
  -        this.sessionPort = port;
  -        this.https = https;
  -
  +        }
  +        if (null == connection) {
  +            connection = new HttpConnection(host,port,https);
  +        }
       }
   
   
  @@ -710,12 +637,12 @@
                     host + " Port:" + port + " Credentials:" + creds +
                     " HTTPS:" + https);
           setCredentials(creds);
  -        if (state == null)
  +        if(null == state) {
               state = new State();
  -        this.sessionHost = host;
  -        this.sessionPort = port;
  -        this.https = https;
  -
  +        }
  +        if (null == connection) {
  +            connection = new HttpConnection(host,port,https);
  +        }
       }
   
   
  @@ -760,9 +687,12 @@
        */
       public void startSession(String host, int port,
                                String proxyhost, int proxyport) {
  -        this.proxyHost = proxyhost;
  -        this.proxyPort = proxyport;
  -        startSession(host, port);
  +        if(null == state) {
  +            state = new State();
  +        }
  +        if (null == connection) {
  +            connection = new HttpConnection(proxyhost,proxyport,host,port,false);
  +        }
       }
   
   
  @@ -771,22 +701,17 @@
        */
       public void endSession()
           throws IOException {
  -
           log.debug("HttpClient.endSession()");
  -
  -        closeConnection();
  -
  +        connection.close();
           state = null;
  -        this.sessionHost = "";
  -        this.sessionPort = -1;
  -        this.https = false;
  +        connection = null;
   
       }
   
   
       // ------------------------------------------------------ Protected Methods
  -
   
  +/*
       protected void openConnection() throws IOException, UnknownHostException {
           log.debug("HttpClient.openConnection()");
           try {
  @@ -831,8 +756,8 @@
           }
   
       }
  -
  -
  +*/
  +/*
       protected void closeConnection() throws IOException {
   
           log.debug("HttpClient.closeConnection()");
  @@ -858,8 +783,8 @@
           }
   
       }
  +*/
   
  -
       /**
        * Send a WebDAV request.
        *
  @@ -877,22 +802,21 @@
           method.setState(state);
   
           String requestLine;
  -        if (proxyHost == null || proxyPort < 0)
  +        if (!connection.isProxied())
               requestLine = method.generateRequestLine();
           else
  -            requestLine = method.generateRequestLine(getHost(), getPort());
  +            requestLine = method.generateRequestLine(connection.getHost(), 
connection.getPort());
   
  -        String hostName = sessionHost;
  -        if (sessionPort != 80)
  -            hostName = hostName + ":" + sessionPort;
  +        String hostName = connection.getHost();
  +        if (connection.getPort() != 80)
  +            hostName = connection.getHost() + ":" + connection.getPort();
   
           method.generateHeaders(hostName, state);
   
           Enumeration headersList = method.getHeaders();
   
           // Sending request line
  -        wireLog.info(">> \"" + requestLine + "\"");
  -        output.write(requestLine.getBytes());
  +        connection.write(requestLine.getBytes());
   
           // Sending headers
           byte[] query = null;
  @@ -903,15 +827,13 @@
               query = queryStr.getBytes("UTF8");
               if (method.needContentLength()) {
                   String contentLengthHeader = "Content-Length: " + query.length + 
"\r\n";
  -                wireLog.info(">> \"" + contentLengthHeader + "\"");
  -                output.write(contentLengthHeader.getBytes());
  +                connection.write(contentLengthHeader.getBytes());
               }
           } else {
               // Chunking
               if ((http11) && (method.getHeader("Content-Length") == null)) {
                   String transferEncodingHeader = "Transfer-Encoding: chunked\r\n";
  -                wireLog.info(">> \"" + transferEncodingHeader + "\"");
  -                output.write(transferEncodingHeader.getBytes());
  +                connection.write(transferEncodingHeader.getBytes());
               }
           }
   
  @@ -928,8 +850,7 @@
               String challengeResponse = 
Authenticator.challengeResponse(state.getAuthenticateToken(),state);
               if (challengeResponse != null) {
                   String authorizationHeader = "Authorization: " +  challengeResponse 
+ "\r\n";
  -                wireLog.info(">> \"" + authorizationHeader + "\"");
  -                output.write(authorizationHeader.getBytes());
  +                connection.write(authorizationHeader.getBytes());
                   if (connectionInterceptor != null) {
                       connectionInterceptor.authenticate();
                   }
  @@ -939,20 +860,17 @@
           // Send expectation header
           if (method.needExpectation()) {
               String expectHeader = "Expect: 100-continue\r\n";
  -            wireLog.info(">> \"" + expectHeader + "\"");
  -            output.write(expectHeader.getBytes());
  +            connection.write(expectHeader.getBytes());
           }
   
           // Writing HTTP headers
   
           while (headersList.hasMoreElements()) {
               Header header = (Header) headersList.nextElement();
  -            wireLog.info(">> \"" + header.toString() + "\"");
  -            output.write(header.toString().getBytes());
  +            connection.write(header.toString());
           }
   
  -        wireLog.info(">> \\r\\n (closing head)");
  -        output.write("\r\n".getBytes());
  +        connection.writeLine(); // close out head
   
           return query;
       }
  @@ -969,7 +887,7 @@
           // Writing request body
   
           RequestOutputStream requestOutputStream =
  -            new RequestOutputStream(output, method);
  +            new RequestOutputStream(connection.getOutputStream(), method);
           requestOutputStream.setInterceptor(streamInterceptor);
   
           if (method.isStreamedQuery()) {
  @@ -998,6 +916,7 @@
        *  was encountered
        * @exception IOException   if an input or output exception has occurred
        */
  +/*
       protected String readLine(InputStream input)
           throws IOException {
   
  @@ -1021,7 +940,7 @@
           return (sb.toString());
   
       }
  -
  +*/
   
       /**
        * Parse status line.
  @@ -1034,7 +953,7 @@
           log.debug("HttpClient.parseStatusLine(String,HttpMethod)");
   
           while (statusLine != null && !statusLine.startsWith("HTTP/")) {
  -            statusLine = readLine(input);
  +            statusLine = connection.readLine();
           }
           if (statusLine == null)
               throw new HttpException
  @@ -1085,7 +1004,7 @@
        *
        * @param input Input stream on which the bytes are read
        */
  -    protected Hashtable parseHeaders(InputStream input)
  +    protected Hashtable parseHeaders()
           throws IOException, HttpException {
           log.debug("HttpClient.parseHeaders(InputStream)");
           Hashtable result = new Hashtable();
  @@ -1093,7 +1012,7 @@
           while (true) {
   
               // Read the next header line
  -            String line = readLine(input);
  +            String line = connection.readLine();
               if ((line == null) || (line.length() < 1))
               break;
   
  @@ -1122,7 +1041,7 @@
   
           if (header != null) {
               try {
  -                Cookie[] cookies = Cookie.parse(sessionHost, header);
  +                Cookie[] cookies = Cookie.parse(connection.getHost(), header);
                   state.addCookies(cookies);
               } catch (Exception e) {
                   e.printStackTrace();
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +306 -0    
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Attic/HttpConnection.java
  
  
  
  

Reply via email to