You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2013/10/25 12:02:05 UTC

svn commit: r1535671 - in /cxf/trunk/rt/transports: http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/ http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/ http/src/main/java/org/apache/cxf/transport/http/

Author: ningjiang
Date: Fri Oct 25 10:02:05 2013
New Revision: 1535671

URL: http://svn.apache.org/r1535671
Log:
CXF-5333 Supported to set the TLSClientParameters dynamically

Modified:
    cxf/trunk/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduit.java
    cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpClientPipelineFactory.java
    cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpConduit.java
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java

Modified: cxf/trunk/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduit.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduit.java?rev=1535671&r1=1535670&r2=1535671&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduit.java (original)
+++ cxf/trunk/rt/transports/http-hc/src/main/java/org/apache/cxf/transport/http/asyncclient/AsyncHTTPConduit.java Fri Oct 25 10:02:05 2013
@@ -159,10 +159,15 @@ public class AsyncHTTPConduit extends UR
                 break;
             }
             
-        } 
+        }
+        // check tlsClientParameters from message header
+        TLSClientParameters clientParameters = message.get(TLSClientParameters.class);
+        if (clientParameters == null) {
+            clientParameters = tlsClientParameters;
+        }
         if (uri.getScheme().equals("https") 
-            && tlsClientParameters != null
-            && tlsClientParameters.getSSLSocketFactory() != null) {
+            && clientParameters != null
+            && clientParameters.getSSLSocketFactory() != null) {
             //if they configured in an SSLSocketFactory, we cannot do anything
             //with it as the NIO based transport cannot use socket created from
             //the SSLSocketFactory.
@@ -488,8 +493,11 @@ public class AsyncHTTPConduit extends UR
                         = RegistryBuilder.<SchemeIOSessionStrategy>create()
                             .register("http", NoopIOSessionStrategy.INSTANCE);
                     
-                   
-                    TLSClientParameters tlsClientParameters = getTlsClientParameters();
+                    // check tlsClientParameters from message header
+                    TLSClientParameters tlsClientParameters = outMessage.get(TLSClientParameters.class);
+                    if (tlsClientParameters == null) {
+                        tlsClientParameters = getTlsClientParameters();
+                    }
                     if (tlsClientParameters == null) {
                         tlsClientParameters = new TLSClientParameters();
                     }

Modified: cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpClientPipelineFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpClientPipelineFactory.java?rev=1535671&r1=1535670&r2=1535671&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpClientPipelineFactory.java (original)
+++ cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpClientPipelineFactory.java Fri Oct 25 10:02:05 2013
@@ -25,6 +25,7 @@ import java.util.logging.Logger;
 import javax.net.ssl.SSLEngine;
 
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.configuration.jsse.TLSClientParameters;
 import org.apache.cxf.transport.https.SSLUtils;
 
 import io.netty.channel.Channel;
@@ -41,10 +42,10 @@ public class NettyHttpClientPipelineFact
     
     private static final Logger LOG =
         LogUtils.getL7dLogger(NettyHttpClientPipelineFactory.class);
-    private final NettyHttpConduit httpConduit;
+    private final TLSClientParameters tlsClientParameters;
     
-    public NettyHttpClientPipelineFactory(NettyHttpConduit httpConduit) {
-        this.httpConduit = httpConduit;
+    public NettyHttpClientPipelineFactory(TLSClientParameters clientParameters) {
+        this.tlsClientParameters = clientParameters;
     }
     
     @Override
@@ -69,8 +70,8 @@ public class NettyHttpClientPipelineFact
     }
     
     private SslHandler configureClientSSLOnDemand() throws Exception {
-        if (httpConduit.getTlsClientParameters() != null) {
-            SSLEngine sslEngine = SSLUtils.createClientSSLEngine(httpConduit.getTlsClientParameters());
+        if (tlsClientParameters != null) {
+            SSLEngine sslEngine = SSLUtils.createClientSSLEngine(tlsClientParameters);
             return new SslHandler(sslEngine);
         } else {
             return null;

Modified: cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpConduit.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpConduit.java?rev=1535671&r1=1535670&r2=1535671&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpConduit.java (original)
+++ cxf/trunk/rt/transports/http-netty/netty-client/src/main/java/org/apache/cxf/transport/http/netty/client/NettyHttpConduit.java Fri Oct 25 10:02:05 2013
@@ -42,6 +42,7 @@ import javax.net.ssl.SSLSession;
 import org.apache.cxf.Bus;
 import org.apache.cxf.buslifecycle.BusLifeCycleListener;
 import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.configuration.jsse.TLSClientParameters;
 import org.apache.cxf.helpers.HttpHeaderHelper;
 import org.apache.cxf.io.CacheAndWriteOutputStream;
 import org.apache.cxf.message.Message;
@@ -85,7 +86,6 @@ public class NettyHttpConduit extends UR
         bootstrap = new Bootstrap();
         bootstrap.group(group);
         bootstrap.channel(NioSocketChannel.class);
-        bootstrap.handler(new NettyHttpClientPipelineFactory(this));
     }
     
     public NettyHttpConduitFactory getNettyHttpConduitFactory() {
@@ -281,7 +281,18 @@ public class NettyHttpConduit extends UR
         }
 
         protected void connect(boolean output) {
-
+            if (url.getScheme().equals("https")) {
+                TLSClientParameters clientParameters = outMessage.get(TLSClientParameters.class);
+                if (clientParameters == null) {
+                    clientParameters = getTlsClientParameters();
+                }
+                if (clientParameters == null) {
+                    clientParameters = new TLSClientParameters();
+                }
+                bootstrap.handler(new NettyHttpClientPipelineFactory(clientParameters));
+            } else {
+                bootstrap.handler(new NettyHttpClientPipelineFactory(null));
+            }
             ChannelFuture connFuture = 
                 bootstrap.connect(new InetSocketAddress(url.getHost(), url.getPort()));
 

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java?rev=1535671&r1=1535670&r2=1535671&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java (original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java Fri Oct 25 10:02:05 2013
@@ -32,6 +32,7 @@ import java.net.URLConnection;
 import java.util.logging.Level;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.configuration.jsse.TLSClientParameters;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.io.CacheAndWriteOutputStream;
 import org.apache.cxf.message.Message;
@@ -91,7 +92,12 @@ public class URLConnectionHTTPConduit ex
         URL url = uri.toURL();
         Proxy proxy = proxyFactory.createProxy(csPolicy , uri);
         message.put("http.scheme", uri.getScheme());
-        return connectionFactory.createConnection(tlsClientParameters, proxy, url);
+        // check tlsClientParameters from message header
+        TLSClientParameters clientParameters = message.get(TLSClientParameters.class);
+        if (clientParameters == null) {
+            clientParameters = tlsClientParameters;
+        }
+        return connectionFactory.createConnection(clientParameters, proxy, url);
     }
     protected void setupConnection(Message message, URI currentURL, HTTPClientPolicy csPolicy) throws IOException {
         HttpURLConnection connection = createConnection(message, currentURL, csPolicy);