Author: jochen
Date: Sat Oct 27 13:16:13 2007
New Revision: 589205

URL: http://svn.apache.org/viewvc?rev=589205&view=rev
Log:
Added support for javax.net.ssl.SSLSocketFactory to the Lite transport factory.
PR: XMLRPC-101
Submitted-By: Julio Francisco Veronelli <[EMAIL PROTECTED]>

Added:
    
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransport.java
    
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransportFactory.java
Modified:
    
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientDefaults.java
    
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java
    
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransportFactory.java
    webservices/xmlrpc/trunk/src/site/fml/faq.fml

Modified: 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientDefaults.java
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientDefaults.java?rev=589205&r1=589204&r2=589205&view=diff
==============================================================================
--- 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientDefaults.java
 (original)
+++ 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientDefaults.java
 Sat Oct 27 13:16:13 2007
@@ -1,3 +1,18 @@
+/*
+ * Copyright 1999,2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.xmlrpc.client;
 
 import org.apache.xmlrpc.serializer.DefaultXMLWriterFactory;

Added: 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransport.java
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransport.java?rev=589205&view=auto
==============================================================================
--- 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransport.java
 (added)
+++ 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransport.java
 Sat Oct 27 13:16:13 2007
@@ -0,0 +1,64 @@
+/*
+ * Copyright 1999,2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.xmlrpc.client;
+
+import java.io.IOException;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+import javax.net.ssl.SSLSocketFactory;
+
+
+/**
+ * A "light" HTTP transport implementation for Java 1.4.
+ */
+public class XmlRpcLite14HttpTransport extends XmlRpcLiteHttpTransport {
+    private SSLSocketFactory sslSocketFactory;
+
+    /**
+     * Creates a new instance.
+     * @param pClient The client controlling this instance.
+     */
+    public XmlRpcLite14HttpTransport(XmlRpcClient pClient) {
+        super(pClient);
+    }
+
+    /**
+     * Sets the SSL Socket Factory to use for https connections.
+     */
+    public SSLSocketFactory getSSLSocketFactory() {
+        return sslSocketFactory;
+    }
+
+    /**
+     * Returns the SSL Socket Factory to use for https connections.
+     */
+    public void setSSLSocketFactory(SSLSocketFactory pSSLSocketFactory) {
+        sslSocketFactory = pSSLSocketFactory;
+    }
+
+    protected Socket newSocket(boolean pSSL, String pHostName, int pPort) 
throws UnknownHostException, IOException {
+        if (pSSL) {
+            SSLSocketFactory sslSockFactory = getSSLSocketFactory();
+            if (sslSockFactory == null) {
+                sslSockFactory = (SSLSocketFactory) 
SSLSocketFactory.getDefault();
+            }
+            return sslSockFactory.createSocket(pHostName, pPort);
+        } else {
+            return super.newSocket(pSSL, pHostName, pPort);
+        }
+    }
+}

Added: 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransportFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransportFactory.java?rev=589205&view=auto
==============================================================================
--- 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransportFactory.java
 (added)
+++ 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLite14HttpTransportFactory.java
 Sat Oct 27 13:16:13 2007
@@ -0,0 +1,40 @@
+package org.apache.xmlrpc.client;
+
+import javax.net.ssl.SSLSocketFactory;
+
+
+/**
+ * Java 1.4 specific factory for the lite HTTP transport,
+ * [EMAIL PROTECTED] org.apache.xmlrpc.client.XmlRpcLiteHttpTransport}.
+ */
+public class XmlRpcLite14HttpTransportFactory extends 
XmlRpcLiteHttpTransportFactory {
+    private SSLSocketFactory sslSocketFactory;
+
+    /**
+     * Creates a new instance.
+     * @param pClient The client, which will invoke the factory.
+     */
+    public XmlRpcLite14HttpTransportFactory(XmlRpcClient pClient) {
+        super(pClient);
+    }
+
+    /**
+     * Sets the SSL Socket Factory to use for https connections.
+     */
+    public SSLSocketFactory getSSLSocketFactory() {
+        return sslSocketFactory;
+    }
+
+    /**
+     * Returns the SSL Socket Factory to use for https connections.
+     */
+    public void setSSLSocketFactory(SSLSocketFactory pSSLSocketFactory) {
+        sslSocketFactory = pSSLSocketFactory;
+    }
+
+    public XmlRpcTransport getTransport() {
+        XmlRpcLite14HttpTransport transport = new 
XmlRpcLite14HttpTransport(getClient());
+        transport.setSSLSocketFactory(sslSocketFactory);
+        return transport;
+    }
+}

Modified: 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java?rev=589205&r1=589204&r2=589205&view=diff
==============================================================================
--- 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java
 (original)
+++ 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java
 Sat Oct 27 13:16:13 2007
@@ -40,10 +40,12 @@
 import org.xml.sax.SAXException;
 
 
-/** A "light" HTTP transport implementation.
+/**
+ * A "light" HTTP transport implementation.
  */
 public class XmlRpcLiteHttpTransport extends XmlRpcHttpTransport {
        private static final String userAgent = USER_AGENT + " (Lite HTTP 
Transport)";
+       private boolean ssl;
        private String hostname;
        private String host;
        private int port;
@@ -55,7 +57,8 @@
        private boolean responseGzipCompressed = false;
        private XmlRpcHttpClientConfig config;
 
-       /** Creates a new instance.
+       /**
+        * Creates a new instance.
         * @param pClient The client controlling this instance.
         */
        public XmlRpcLiteHttpTransport(XmlRpcClient pClient) {
@@ -65,6 +68,7 @@
        public Object sendRequest(XmlRpcRequest pRequest) throws 
XmlRpcException {
                config = (XmlRpcHttpClientConfig) pRequest.getConfig();
                URL url = config.getServerURL();
+               ssl = "https".equals(url.getProtocol());
                hostname = url.getHost();
         int p = url.getPort();
                port = p < 1 ? 80 : p;
@@ -131,7 +135,7 @@
        
                        for (int tries = 0;  ;  tries++) {
                                try {
-                                       socket = newSocket(hostname, port);
+                                       socket = newSocket(ssl, hostname, port);
                                        output = new 
BufferedOutputStream(socket.getOutputStream()){
                                                /** Closing the output stream 
would close the whole socket, which we don't want,
                                                 * because the don't want until 
the request is processed completely.
@@ -164,7 +168,10 @@
                }
        }
 
-    protected Socket newSocket(String pHostName, int pPort) throws 
UnknownHostException, IOException {
+    protected Socket newSocket(boolean pSSL, String pHostName, int pPort) 
throws UnknownHostException, IOException {
+        if (pSSL) {
+            throw new IOException("Unable to create SSL connections, use the 
XmlRpcLite14HttpTransportFactory.");
+        }
         return new Socket(pHostName, pPort);
     }
 

Modified: 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransportFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransportFactory.java?rev=589205&r1=589204&r2=589205&view=diff
==============================================================================
--- 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransportFactory.java
 (original)
+++ 
webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransportFactory.java
 Sat Oct 27 13:16:13 2007
@@ -20,7 +20,8 @@
  * [EMAIL PROTECTED] org.apache.xmlrpc.client.XmlRpcLiteHttpTransport}.
  */
 public class XmlRpcLiteHttpTransportFactory extends XmlRpcTransportFactoryImpl 
{
-       /** Creates a new instance.
+       /**
+        * Creates a new instance.
         * @param pClient The client, which will invoke the factory.
         */
        public XmlRpcLiteHttpTransportFactory(XmlRpcClient pClient) {

Modified: webservices/xmlrpc/trunk/src/site/fml/faq.fml
URL: 
http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/src/site/fml/faq.fml?rev=589205&r1=589204&r2=589205&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/src/site/fml/faq.fml (original)
+++ webservices/xmlrpc/trunk/src/site/fml/faq.fml Sat Oct 27 13:16:13 2007
@@ -127,6 +127,8 @@
     XmlRpcTransportFactory factory = myClient.getTransportFactory();
     ((XmlRpcSun15HttpTransportFactory) factory).setProxy(String pHost, int 
pPort);
 </source>
+        <p>With the Lite HTTP transport factory, things are slightly different:
+          You have to explicitly create an instance of 
XmlRpcLite14HttpTransportFactory.</p>
       </answer>
     </faq>
   </part>


Reply via email to