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>