olegk       2003/03/12 14:13:16

  Modified:    httpclient/src/java/org/apache/commons/httpclient/methods
                        EntityEnclosingMethod.java MultipartPostMethod.java
               httpclient/src/test/org/apache/commons/httpclient
                        TestLocalHostBase.java
  Log:
  Changelog:
  - 'Expect: 100-continue' functions refactored into an abstract ExpectContinueMethod 
class.
  - 'Expect: 100-continue' handshake is not used when sending requests via a proxy
  
  Contributed by Oleg Kalnichevski
  
  Revision  Changes    Path
  1.13      +17 -58    
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/EntityEnclosingMethod.java
  
  Index: EntityEnclosingMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/EntityEnclosingMethod.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- EntityEnclosingMethod.java        6 Mar 2003 07:49:03 -0000       1.12
  +++ EntityEnclosingMethod.java        12 Mar 2003 22:13:15 -0000      1.13
  @@ -92,7 +92,7 @@
    * @since 2.0beta1
    * @version $Revision$
    */
  -public abstract class EntityEnclosingMethod extends GetMethod {
  +public abstract class EntityEnclosingMethod extends ExpectContinueMethod {
   
       // ----------------------------------------- Static variables/initializers
   
  @@ -125,10 +125,6 @@
        */
       private int requestContentLength = CONTENT_LENGTH_AUTO;
   
  -    /** This flag specifies whether "expect: 100-continue" handshake is
  -     * to be used prior to sending the requesst body */
  -    private boolean useExpectHeader = true;
  -    
       // ----------------------------------------------------------- Constructors
   
       /**
  @@ -182,6 +178,18 @@
           setFollowRedirects(false);
       }
   
  +    /**
  +     * Returns <tt>true</tt> if there is a request body to be sent.
  +     * 'Expect: 100-continue' handshake may not be used if request
  +     * body is not present
  +     * 
  +     * @return boolean
  +     * 
  +     * @since 2.0beta1
  +     */
  +    protected boolean hasRequestContent() {
  +        return (this.requestBodyStream != null) || (this.buffer != null);
  +    }
   
       /**
        * Entity enclosing requests cannot be redirected without user intervention
  @@ -212,23 +220,6 @@
           super.setFollowRedirects(false);
       }
   
  -
  -    /**
  -     * Returns the useExpectHeader.
  -     * @return boolean
  -     */
  -    public boolean getUseExpectHeader() {
  -        return this.useExpectHeader;
  -    }
  -
  -    /**
  -     * Sets the useExpectHeader.
  -     * @param value The useExpectHeader to set
  -     */
  -    public void setUseExpectHeader(boolean value) {
  -        this.useExpectHeader = value;
  -    }
  -
       /**
        * Sets length information about the request body.
        *
  @@ -342,38 +333,6 @@
           return buffer.toString();
       }
   
  -
  -    /**
  -     * Set the <tt>Expect</tt> header if it has not already been set, 
  -     * in addition to the "standard" set of headers.
  -     *
  -     * @param state the client state
  -     * @param conn the connection to write to
  -     *
  -     * @throws HttpException when a protocol error occurs or state is invalid
  -     * @throws IOException when i/o errors occur reading the response
  -     */
  -    protected void addRequestHeaders(HttpState state, HttpConnection conn)
  -    throws IOException, HttpException {
  -        LOG.trace("enter EntityEnclosingMethod.addRequestHeaders(HttpState, 
HttpConnection)");
  -        
  -        super.addRequestHeaders(state, conn);
  -        // If the request is being retried, the header may already be present
  -        boolean headerPresent = (getRequestHeader("Expect") != null);
  -        // See if the expect header should be sent
  -        // = HTTP/1.1 or higher
  -        // = request body present
  -        if (getUseExpectHeader() && isHttp11() 
  -                && ((this.requestBodyStream != null) || this.buffer != null)) {
  -            if (!headerPresent) {
  -                setRequestHeader("Expect", "100-continue");
  -            }
  -        } else {
  -            if (headerPresent) {
  -                removeRequestHeader("Expect");
  -            }
  -        }
  -    }
   
       /**
        * Override method of [EMAIL PROTECTED] 
org.apache.commons.httpclient.HttpMethodBase}
  
  
  
  1.14      +15 -35    
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java
  
  Index: MultipartPostMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- MultipartPostMethod.java  6 Mar 2003 07:49:03 -0000       1.13
  +++ MultipartPostMethod.java  12 Mar 2003 22:13:15 -0000      1.14
  @@ -93,7 +93,7 @@
    *
    * @since 2.0
    */
  -public class MultipartPostMethod extends GetMethod {
  +public class MultipartPostMethod extends ExpectContinueMethod {
   
       /** The Content-Type for multipart/form-data. */
       public static final String MULTIPART_FORM_CONTENT_TYPE = 
  @@ -105,10 +105,6 @@
       /** The parameters for this method */
       private final List parameters = new ArrayList();
   
  -    /** This flag specifies whether "expect: 100-continue" handshake is
  -     * to be used prior to sending the request body */
  -    private boolean useExpectHeader = true;
  -
       /**
        * No-arg constructor.
        */
  @@ -147,27 +143,22 @@
       }
   
       /**
  -     * Returns <tt>"POST"</tt>.
  -     * @return <tt>"POST"</tt>
  -     */
  -    public String getName() {
  -        return "POST";
  -    }
  -
  -    /**
  -     * Returns the useExpectHeader.
  -     * @return boolean
  +     * Returns <tt>true</tt> 
  +     * 
  +     * @return <tt>true</tt>
  +     * 
  +     * @since 2.0beta1
        */
  -    public boolean getUseExpectHeader() {
  -        return this.useExpectHeader;
  +    protected boolean hasRequestContent() {
  +        return true;
       }
   
       /**
  -     * Sets the useExpectHeader.
  -     * @param value The useExpectHeader to set
  +     * Returns <tt>"POST"</tt>.
  +     * @return <tt>"POST"</tt>
        */
  -    public void setUseExpectHeader(boolean value) {
  -        this.useExpectHeader = value;
  +    public String getName() {
  +        return "POST";
       }
   
       /**
  @@ -251,16 +242,6 @@
               }
               setRequestHeader("Content-Type", buffer.toString());
           }
  -        boolean headerPresent = (getRequestHeader("Expect") != null);
  -        if (getUseExpectHeader() && isHttp11()) { 
  -            if (!headerPresent) {
  -                setRequestHeader("Expect", "100-continue");
  -            }
  -        } else {
  -            if (headerPresent) {
  -                removeRequestHeader("Expect");
  -            }
  -        }
       }
   
       /**
  @@ -314,5 +295,4 @@
           super.recycle();
           parameters.clear();
       }
  -
   }
  
  
  
  1.4       +16 -3     
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestLocalHostBase.java
  
  Index: TestLocalHostBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestLocalHostBase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestLocalHostBase.java    5 Mar 2003 04:02:56 -0000       1.3
  +++ TestLocalHostBase.java    12 Mar 2003 22:13:15 -0000      1.4
  @@ -77,6 +77,8 @@
       );
       private final String host = 
System.getProperty("httpclient.test.localHost","localhost");
       private final int port;
  +    private final String proxyHost = 
System.getProperty("httpclient.test.proxy.host");
  +    private final int proxyPort;
       
       /**
        * Constructor for TestLocalHostBase.
  @@ -92,6 +94,14 @@
               tempPort = 8080;
           }
           port = tempPort;
  +        String proxyPortString = 
System.getProperty("httpclient.test.proxy.port","3128");
  +        int tempProxyPort = 3128;
  +        try {
  +            tempProxyPort = Integer.parseInt(proxyPortString);
  +        } catch(Exception e) {
  +            tempProxyPort = 3128;
  +        }
  +        proxyPort = tempProxyPort;
       }
   
       /**
  @@ -123,6 +133,9 @@
           }
           
           client.getHostConfiguration().setHost(host, port, protocol);
  +        if (proxyHost != null) {
  +            client.getHostConfiguration().setProxy(proxyHost, proxyPort);
  +        }
   
           return client;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to