You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2013/07/02 16:32:48 UTC

svn commit: r1498955 - /httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java

Author: olegk
Date: Tue Jul  2 14:32:47 2013
New Revision: 1498955

URL: http://svn.apache.org/r1498955
Log:
HTTPCLIENT-1379: added X509HostnameVerifier setter to HttpClientBuilder

Modified:
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java   (contents, props changed)

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java?rev=1498955&r1=1498954&r2=1498955&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java Tue Jul  2 14:32:47 2013
@@ -74,7 +74,9 @@ import org.apache.http.conn.routing.Http
 import org.apache.http.conn.socket.ConnectionSocketFactory;
 import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
 import org.apache.http.conn.socket.PlainSocketFactory;
+import org.apache.http.conn.ssl.SSLContexts;
 import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.conn.ssl.X509HostnameVerifier;
 import org.apache.http.cookie.CookieSpecProvider;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.NoConnectionReuseStrategy;
@@ -107,6 +109,7 @@ import org.apache.http.protocol.HttpRequ
 import org.apache.http.protocol.RequestContent;
 import org.apache.http.protocol.RequestTargetHost;
 import org.apache.http.protocol.RequestUserAgent;
+import org.apache.http.util.TextUtils;
 import org.apache.http.util.VersionInfo;
 
 /**
@@ -141,6 +144,7 @@ import org.apache.http.util.VersionInfo;
 public class HttpClientBuilder {
 
     private HttpRequestExecutor requestExec;
+    private X509HostnameVerifier hostnameVerifier;
     private LayeredConnectionSocketFactory sslSocketFactory;
     private SSLContext sslcontext;
     private HttpClientConnectionManager connManager;
@@ -200,6 +204,11 @@ public class HttpClientBuilder {
         return this;
     }
 
+    public final HttpClientBuilder setHostnameVerifier(final X509HostnameVerifier hostnameVerifier) {
+        this.hostnameVerifier = hostnameVerifier;
+        return this;
+    }
+
     public final HttpClientBuilder setSSLSocketFactory(
             final LayeredConnectionSocketFactory sslSocketFactory) {
         this.sslSocketFactory = sslSocketFactory;
@@ -449,6 +458,12 @@ public class HttpClientBuilder {
         closeables.add(closeable);
     }
 
+    private static String[] split(final String s) {
+        if (TextUtils.isBlank(s)) {
+            return null;
+        }
+        return s.split(" *, *");
+    }
 
     public CloseableHttpClient build() {
         // Create main request executor
@@ -461,12 +476,18 @@ public class HttpClientBuilder {
             LayeredConnectionSocketFactory sslSocketFactory = this.sslSocketFactory;
             if (sslSocketFactory == null) {
                 if (sslcontext != null) {
-                    sslSocketFactory = new SSLSocketFactory(sslcontext);
+                    sslSocketFactory = new SSLSocketFactory(sslcontext, hostnameVerifier);
                 } else {
                     if (systemProperties) {
-                        sslSocketFactory = SSLSocketFactory.getSystemSocketFactory();
+                        sslSocketFactory = new SSLSocketFactory(
+                                (javax.net.ssl.SSLSocketFactory) javax.net.ssl.SSLSocketFactory.getDefault(),
+                                split(System.getProperty("https.protocols")),
+                                split(System.getProperty("https.cipherSuites")),
+                                hostnameVerifier);
                     } else {
-                        sslSocketFactory = SSLSocketFactory.getSocketFactory();
+                        sslSocketFactory = new SSLSocketFactory(
+                                SSLContexts.createDefault(),
+                                hostnameVerifier);
                     }
                 }
             }

Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java
------------------------------------------------------------------------------
    svn:executable = *