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 2012/03/09 21:42:32 UTC

svn commit: r1299041 - in /httpcomponents/httpclient/trunk: fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java

Author: olegk
Date: Fri Mar  9 20:42:32 2012
New Revision: 1299041

URL: http://svn.apache.org/viewvc?rev=1299041&view=rev
Log:
Better SSL initialization for fluent Executor

Modified:
    httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java

Modified: httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java?rev=1299041&r1=1299040&r2=1299041&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java (original)
+++ httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java Fri Mar  9 20:42:32 2012
@@ -27,6 +27,10 @@
 package org.apache.http.client.fluent;
 
 import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.net.ssl.SSLContext;
 
 import org.apache.http.HttpHost;
 import org.apache.http.auth.AuthScope;
@@ -41,28 +45,44 @@ import org.apache.http.client.Credential
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.client.protocol.ClientContext;
+import org.apache.http.conn.scheme.PlainSocketFactory;
 import org.apache.http.conn.scheme.Scheme;
 import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.scheme.SchemeSocketFactory;
 import org.apache.http.conn.ssl.SSLInitializationException;
+import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.impl.auth.BasicScheme;
 import org.apache.http.impl.client.BasicAuthCache;
 import org.apache.http.impl.client.BasicCredentialsProvider;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.conn.PoolingClientConnectionManager;
-import org.apache.http.impl.conn.SchemeRegistryFactory;
 import org.apache.http.protocol.BasicHttpContext;
 
 public class Executor {
 
     final static PoolingClientConnectionManager CONNMGR;
     final static DefaultHttpClient CLIENT;
-    
+
     static {
-        SchemeRegistry schemeRegistry;
+        SchemeRegistry schemeRegistry = new SchemeRegistry();
+        SchemeSocketFactory plain = PlainSocketFactory.getSocketFactory();
+        schemeRegistry.register(new Scheme("http", 80, plain));
+        SchemeSocketFactory ssl = null;
         try {
-            schemeRegistry = SchemeRegistryFactory.createSystemDefault();
+            ssl = SSLSocketFactory.getSystemSocketFactory();
         } catch (SSLInitializationException ex) {
-            schemeRegistry = SchemeRegistryFactory.createDefault();
+            SSLContext sslcontext;
+            try {
+                sslcontext = SSLContext.getInstance(SSLSocketFactory.TLS);
+                sslcontext.init(null, null, null);
+                ssl = new SSLSocketFactory(sslcontext);
+            } catch (SecurityException ignore) {
+            } catch (KeyManagementException ignore) {
+            } catch (NoSuchAlgorithmException ignore) {
+            }
+        }
+        if (ssl != null) {
+            schemeRegistry.register(new Scheme("https", 443, ssl));
         }
         CONNMGR = new PoolingClientConnectionManager(schemeRegistry);
         CONNMGR.setDefaultMaxPerRoute(100);

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java?rev=1299041&r1=1299040&r2=1299041&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java Fri Mar  9 20:42:32 2012
@@ -171,7 +171,7 @@ public class SSLSocketFactory implements
      *
      * @return the default SSL socket factory
      */
-    public static SSLSocketFactory getSocketFactory() {
+    public static SSLSocketFactory getSocketFactory() throws SSLInitializationException {
         return new SSLSocketFactory(createDefaultSSLContext());
     }
 
@@ -200,7 +200,7 @@ public class SSLSocketFactory implements
      *
      * @return the system SSL socket factory
      */
-    public static SSLSocketFactory getSystemSocketFactory() {
+    public static SSLSocketFactory getSystemSocketFactory() throws SSLInitializationException {
         return new SSLSocketFactory(createSystemSSLContext());
     }
 
@@ -353,7 +353,7 @@ public class SSLSocketFactory implements
         return sslcontext;
     }
 
-    private static SSLContext createDefaultSSLContext() {
+    private static SSLContext createDefaultSSLContext() throws SSLInitializationException {
         try {
             return createSSLContext(TLS, null, null, null, null, null);
         } catch (Exception ex) {
@@ -361,7 +361,7 @@ public class SSLSocketFactory implements
         }
     }
 
-    private static SSLContext createSystemSSLContext() {
+    private static SSLContext createSystemSSLContext() throws SSLInitializationException {
         try {
             return createSystemSSLContext(TLS, null);
         } catch (Exception ex) {