You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by sb...@apache.org on 2008/06/08 15:21:20 UTC

svn commit: r664505 - in /httpcomponents/httpclient/trunk/module-client/src: main/java/org/apache/http/client/ main/java/org/apache/http/client/methods/ main/java/org/apache/http/impl/client/ test/java/org/apache/http/client/protocol/ test/java/org/apa...

Author: sberlin
Date: Sun Jun  8 06:21:20 2008
New Revision: 664505

URL: http://svn.apache.org/viewvc?rev=664505&view=rev
Log:
HTTPCLIENT-779: toplevel exception cleanup.  HttpClient.execute now only throws an IOException (and specific subtypes of that), and HttpGet/HttpPut and associated classes' String constructor now throw IllegalArgumentException instead of URISyntaxException.

Added:
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientProtocolException.java   (with props)
Modified:
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpDelete.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpGet.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpHead.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPost.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPut.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpTrace.java
    httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java
    httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/protocol/TestRedirects.java
    httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java

Added: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientProtocolException.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientProtocolException.java?rev=664505&view=auto
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientProtocolException.java (added)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientProtocolException.java Sun Jun  8 06:21:20 2008
@@ -0,0 +1,30 @@
+package org.apache.http.client;
+
+import java.io.IOException;
+
+/**
+ * Signals an error in the HTTP protocol.
+ */
+public class ClientProtocolException extends IOException {
+    
+    private static final long serialVersionUID = -5596590843227115865L;
+
+    public ClientProtocolException() {
+        super();
+    }
+
+    public ClientProtocolException(String s) {
+        super(s);
+    }
+    
+    public ClientProtocolException(Throwable cause) {
+        initCause(cause);
+    }
+    
+    public ClientProtocolException(String message, Throwable cause) {
+        super(message);
+        initCause(cause);
+    }
+    
+
+}

Propchange: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ClientProtocolException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java Sun Jun  8 06:21:20 2008
@@ -36,7 +36,6 @@
 import org.apache.http.HttpHost;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
-import org.apache.http.HttpException;
 import org.apache.http.params.HttpParams;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.client.methods.HttpUriRequest;
@@ -87,13 +86,11 @@
      * @param request   the request to execute
      *
      * @return  the response to the request
-     *
-     * @throws HttpException            in case of a problem
-     * @throws IOException              in case of an IO problem
-     *                                     or the connection was aborted
+     * @throws IOException in case of a problem or the connection was aborted
+     * @throws ClientProtocolException in case of an http protocol error
      */
     HttpResponse execute(HttpUriRequest request)
-        throws HttpException, IOException
+        throws IOException, ClientProtocolException
         ;
 
 
@@ -110,13 +107,11 @@
      *          Whether redirects or authentication challenges will be returned
      *          or handled automatically depends on the implementation and
      *          configuration of this client.
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     *                             or the connection was aborted
+     * @throws IOException in case of a problem or the connection was aborted
+     * @throws ClientProtocolException in case of an http protocol error
      */
     HttpResponse execute(HttpUriRequest request, HttpContext context)
-        throws HttpException, IOException
+        throws IOException, ClientProtocolException
         ;
 
 
@@ -135,13 +130,11 @@
      *          Whether redirects or authentication challenges will be returned
      *          or handled automatically depends on the implementation and
      *          configuration of this client.
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     *                             or the connection was aborted
+     * @throws IOException in case of a problem or the connection was aborted
+     * @throws ClientProtocolException in case of an http protocol error
      */
     HttpResponse execute(HttpHost target, HttpRequest request)
-        throws HttpException, IOException
+        throws IOException, ClientProtocolException
         ;
 
 
@@ -161,14 +154,12 @@
      *          Whether redirects or authentication challenges will be returned
      *          or handled automatically depends on the implementation and
      *          configuration of this client.
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     *                             or the connection was aborted
+     * @throws IOException in case of a problem or the connection was aborted
+     * @throws ClientProtocolException in case of an http protocol error
      */
     HttpResponse execute(HttpHost target, HttpRequest request,
                          HttpContext context)
-        throws HttpException, IOException
+        throws IOException, ClientProtocolException
         ;
 
 

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpDelete.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpDelete.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpDelete.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpDelete.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * HTTP DELETE method
@@ -61,9 +60,12 @@
         setURI(uri);
     }
 
-    public HttpDelete(final String uri) throws URISyntaxException {
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpDelete(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpGet.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpGet.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpGet.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpGet.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * HTTP GET method.
@@ -68,9 +67,12 @@
         setURI(uri);
     }
 
-    public HttpGet(final String uri) throws URISyntaxException {
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpGet(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpHead.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpHead.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpHead.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpHead.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * HTTP HEAD method.
@@ -68,9 +67,12 @@
         setURI(uri);
     }
 
-    public HttpHead(final String uri) throws URISyntaxException {
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpHead(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -73,9 +72,12 @@
         setURI(uri);
     }
 
-    public HttpOptions(final String uri) throws URISyntaxException {
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpOptions(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPost.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPost.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPost.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPost.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * HTTP POST method.
@@ -71,10 +70,13 @@
         super();
         setURI(uri);
     }
-
-    public HttpPost(final String uri) throws URISyntaxException {
+    
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpPost(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPut.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPut.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPut.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPut.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * HTTP PUT method.
@@ -64,9 +63,12 @@
         setURI(uri);
     }
 
-    public HttpPut(final String uri) throws URISyntaxException {
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpPut(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpTrace.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpTrace.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpTrace.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpTrace.java Sun Jun  8 06:21:20 2008
@@ -32,7 +32,6 @@
 package org.apache.http.client.methods;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 /**
  * HTTP TRACE method.
@@ -66,10 +65,13 @@
         super();
         setURI(uri);
     }
-
-    public HttpTrace(final String uri) throws URISyntaxException {
+    
+    /**
+     * @throws IllegalArgumentException if the uri is invalid. 
+     */
+    public HttpTrace(final String uri) {
         super();
-        setURI(new URI(uri));
+        setURI(URI.create(uri));
     }
 
     @Override

Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java Sun Jun  8 06:21:20 2008
@@ -43,6 +43,7 @@
 import org.apache.http.HttpResponseInterceptor;
 import org.apache.http.auth.AuthSchemeRegistry;
 import org.apache.http.client.AuthenticationHandler;
+import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.ClientRequestDirector;
 import org.apache.http.client.CookieStore;
 import org.apache.http.client.CredentialsProvider;
@@ -434,7 +435,7 @@
 
     // non-javadoc, see interface HttpClient
     public final HttpResponse execute(HttpUriRequest request)
-        throws HttpException, IOException {
+        throws IOException, ClientProtocolException {
 
         return execute(request, null);
     }
@@ -451,7 +452,7 @@
      */
     public final HttpResponse execute(HttpUriRequest request,
                                       HttpContext context)
-        throws HttpException, IOException {
+        throws IOException, ClientProtocolException {
 
         if (request == null) {
             throw new IllegalArgumentException
@@ -476,7 +477,7 @@
 
     // non-javadoc, see interface HttpClient
     public final HttpResponse execute(HttpHost target, HttpRequest request)
-        throws HttpException, IOException {
+        throws IOException, ClientProtocolException {
 
         return execute(target, request, null);
     }
@@ -485,7 +486,7 @@
     // non-javadoc, see interface HttpClient
     public final HttpResponse execute(HttpHost target, HttpRequest request,
                                       HttpContext context)
-        throws HttpException, IOException {
+        throws IOException, ClientProtocolException {
 
         if (request == null) {
             throw new IllegalArgumentException
@@ -535,7 +536,11 @@
                     determineParams(request));
         }
 
-        return director.execute(target, request, execContext);
+        try {
+            return director.execute(target, request, execContext);
+        } catch(HttpException httpException) {
+            throw new ClientProtocolException(httpException);
+        }
     } // execute
 
     

Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/protocol/TestRedirects.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/protocol/TestRedirects.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/protocol/TestRedirects.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/protocol/TestRedirects.java Sun Jun  8 06:21:20 2008
@@ -43,6 +43,7 @@
 import org.apache.http.ProtocolException;
 import org.apache.http.ProtocolVersion;
 import org.apache.http.client.CircularRedirectException;
+import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.CookieStore;
 import org.apache.http.client.RedirectException;
 import org.apache.http.client.methods.HttpGet;
@@ -426,9 +427,9 @@
 
         try {
             client.execute(getServerHttp(), httpget);
-            fail("RedirectException exception should have been thrown");
-        } catch (RedirectException e) {
-            // expected
+            fail("ClientProtocolException exception should have been thrown");
+        } catch (ClientProtocolException e) {
+            assertTrue(e.getCause() instanceof RedirectException);
         }
     }
 
@@ -442,9 +443,9 @@
 
         try {
             client.execute(getServerHttp(), httpget);
-            fail("CircularRedirectException exception should have been thrown");
-        } catch (CircularRedirectException e) {
-            // expected
+            fail("ClientProtocolException exception should have been thrown");
+        } catch (ClientProtocolException e) {
+            assertTrue(e.getCause() instanceof CircularRedirectException);
         }
     }
 
@@ -542,8 +543,9 @@
 
         try {
             client.execute(getServerHttp(), httpget);
-            fail("ProtocolException exception should have been thrown");
-        } catch (ProtocolException e) {
+            fail("ClientProtocolException exception should have been thrown");
+        } catch (ClientProtocolException e) {
+            assertTrue(e.getCause() instanceof ProtocolException);
             // expected
         }
     }
@@ -575,8 +577,9 @@
 
         try {
             client.execute(getServerHttp(), httpget);
-            fail("ProtocolException should have been thrown");
-        } catch (ProtocolException e) {
+            fail("ClientProtocolException should have been thrown");
+        } catch (ClientProtocolException e) {
+            assertTrue(e.getCause() instanceof ProtocolException);
             // expected
         }
     }

Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java?rev=664505&r1=664504&r2=664505&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java Sun Jun  8 06:21:20 2008
@@ -31,7 +31,6 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.net.ConnectException;
-import java.net.URISyntaxException;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -49,6 +48,7 @@
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.ProtocolVersion;
+import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.HttpRequestRetryHandler;
 import org.apache.http.client.NonRepeatableRequestException;
 import org.apache.http.client.methods.AbortableHttpRequest;
@@ -554,7 +554,7 @@
     private static class CustomGet extends HttpGet {
         private final CountDownLatch releaseTriggerLatch;
 
-        public CustomGet(String uri, CountDownLatch releaseTriggerLatch) throws URISyntaxException {
+        public CustomGet(String uri, CountDownLatch releaseTriggerLatch) {
             super(uri);
             this.releaseTriggerLatch = releaseTriggerLatch;
         }
@@ -726,8 +726,9 @@
 
         try {
             client.execute(getServerHttp(), httppost, context);
-            fail("NonRepeatableEntityException should have been thrown");
-        } catch (NonRepeatableRequestException ex) {
+            fail("ClientProtocolException should have been thrown");
+        } catch (ClientProtocolException ex) {
+            assertTrue(ex.getCause() instanceof NonRepeatableRequestException);
            // expected
         }
     }



Re: svn commit: r664505 - in /httpcomponents/httpclient/trunk/module-client/src: main/java/org/apache/http/client/ main/java/org/apache/http/client/methods/ main/java/org/apache/http/impl/client/ test/java/org/apache/http/client/protocol/ test/java/org/apa...

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Sun, 2008-06-08 at 13:21 +0000, sberlin@apache.org wrote:
> Author: sberlin
> Date: Sun Jun  8 06:21:20 2008
> New Revision: 664505
> 
> URL: http://svn.apache.org/viewvc?rev=664505&view=rev
> Log:
> HTTPCLIENT-779: toplevel exception cleanup.  HttpClient.execute now only throws an IOException (and specific subtypes of that), and HttpGet/HttpPut and associated classes' String constructor now throw IllegalArgumentException instead of URISyntaxException.
> 

Sam,

You should also add an entry to the release notes [1] for every
significant change like this one

Oleg

[1]
http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org