You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by cl...@apache.org on 2010/02/14 00:55:55 UTC

svn commit: r909935 - in /cxf/branches/2.2.x-fixes: ./ rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java

Author: cleclerc
Date: Sat Feb 13 23:55:54 2010
New Revision: 909935

URL: http://svn.apache.org/viewvc?rev=909935&view=rev
Log:
Merged revisions 909927,909933 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r909927 | cleclerc | 2010-02-14 00:27:11 +0100 (Sun, 14 Feb 2010) | 1 line
  
  [CXF-2672] Enhance CXF client message in case of HttpRetryException (http codes 401 and 407)
........
  r909933 | cleclerc | 2010-02-14 00:52:17 +0100 (Sun, 14 Feb 2010) | 2 lines
  
  [CXF-2672] Enhance CXF client message in case of HttpRetryException (http codes 401 and 407)
  Fix JDK 1.5 compatibility
........

Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:909927-909933

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?rev=909935&r1=909934&r2=909935&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Sat Feb 13 23:55:54 2010
@@ -23,6 +23,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PushbackInputStream;
+import java.net.HttpRetryException;
 import java.net.HttpURLConnection;
 import java.net.InetSocketAddress;
 import java.net.MalformedURLException;
@@ -1983,6 +1984,49 @@
             }
             try {
                 handleResponse();
+            } catch (HttpRetryException e) {
+                String msg = "HTTP response '" + e.responseCode() + ": "
+                             + connection.getResponseMessage() + "' invoking " + connection.getURL();
+                switch (e.responseCode()) {
+                case HttpURLConnection.HTTP_MOVED_PERM: // 301
+                case HttpURLConnection.HTTP_MOVED_TEMP: // 302
+                    msg += " that returned location header '" + e.getLocation() + "'";
+                    break;
+                case HttpURLConnection.HTTP_UNAUTHORIZED: // 401
+                    if (authorizationPolicy == null || authorizationPolicy.getUserName() == null) {
+                        msg += " with NO authorization username configured in conduit " + getConduitName();
+                    } else {
+                        msg += " with authorization username '" + authorizationPolicy.getUserName() + "'";
+                    }
+                    break;
+                case HttpURLConnection.HTTP_PROXY_AUTH: // 407
+                    if (proxyAuthorizationPolicy == null || proxyAuthorizationPolicy.getUserName() == null) {
+                        msg += " with NO proxy authorization configured in conduit " + getConduitName();
+                    } else {
+                        msg += " with proxy authorization username '"
+                               + proxyAuthorizationPolicy.getUserName() + "'";
+                    }
+                    if (clientSidePolicy == null || clientSidePolicy.getProxyServer() == null) {
+                        if (connection.usingProxy()) {
+                            msg += " using a proxy even if NONE is configured in CXF conduit "
+                                   + getConduitName()
+                                   + " (maybe one is configured by java.net.ProxySelector)";
+                        } else {
+                            msg += " but NO proxy was used by the connection (none configured in cxf "
+                                   + "conduit and none selected by java.net.ProxySelector)";
+                        }
+                    } else {
+                        msg += " using " + clientSidePolicy.getProxyServerType() + " proxy "
+                               + clientSidePolicy.getProxyServer() + ":"
+                               + clientSidePolicy.getProxyServerPort();
+                    }
+                    break;
+                default:
+                    // No other type of HttpRetryException should be thrown
+                    break;
+                }
+                // pass cause with initCause() instead of constructor for jdk 1.5 compatibility
+                throw (IOException) new IOException(msg).initCause(e);
             } catch (IOException e) {
                 String url = connection.getURL().toString();
                 String origMessage = e.getMessage();