You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by jo...@apache.org on 2005/11/30 21:30:51 UTC

svn commit: r350038 - in /webservices/xmlrpc/trunk: changes.xml src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java src/java/org/apache/xmlrpc/CommonsXmlRpcTransportFactory.java

Author: jochen
Date: Wed Nov 30 12:30:33 2005
New Revision: 350038

URL: http://svn.apache.org/viewcvs?rev=350038&view=rev
Log:
Added the CommonsXmlRpcTransportFactory.
Submitted-By: Jimisola Laursen, lists@simisola.com

Added:
    webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransportFactory.java
Modified:
    webservices/xmlrpc/trunk/changes.xml
    webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java

Modified: webservices/xmlrpc/trunk/changes.xml
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/changes.xml?rev=350038&r1=350037&r2=350038&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/changes.xml (original)
+++ webservices/xmlrpc/trunk/changes.xml Wed Nov 30 12:30:33 2005
@@ -18,6 +18,10 @@
       		due-to="Thomas Mohaupt" due-to-email="Thomas.Mohaupt at gmail.com">
       	  The wrong version of commons-codec was downloaded by build.xml.
       </action>
+      <action dev="jochen" type="enhancement"
+      		due-to="Jimisola Laursen" due-to-email="lists@jimisola.com">
+      	  Added the CommonsXmlRpcTransportFactory.
+      </action>
     </release>
   </body>
 </document>

Modified: webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java?rev=350038&r1=350037&r2=350038&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java (original)
+++ webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java Wed Nov 30 12:30:33 2005
@@ -204,6 +204,18 @@
     }
 
     /**
+     * Sets Authentication for this client.
+     *
+     * @param auth the <username>:<password> formed string used for basic \
+                authentication
+     */
+    public void setBasicAuthentication(String auth)
+    {
+        creds = new UsernamePasswordCredentials(auth);
+        client.getState().setCredentials(null, null, creds);
+    }
+
+    /**
      * Releases connection resources.
      *
      * @exception XmlRpcClientException

Added: webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransportFactory.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransportFactory.java?rev=350038&view=auto
==============================================================================
--- webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransportFactory.java (added)
+++ webservices/xmlrpc/trunk/src/java/org/apache/xmlrpc/CommonsXmlRpcTransportFactory.java Wed Nov 30 12:30:33 2005
@@ -0,0 +1,125 @@
+/*
+ * Copyright 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;
+
+import java.net.URL;
+
+import org.apache.commons.httpclient.HttpClient;
+
+
+/** A transport factory, which uses the Jakarta Commons
+ * HttpClient.
+ */
+public class CommonsXmlRpcTransportFactory implements XmlRpcTransportFactory
+{
+	// default properties for new common http-client http transports
+	private URL url;
+	private String auth;
+	private Integer timeout;
+	private Integer connectionTimeout; 
+
+	/** Creates a new instance with the given server URL.
+	 */
+	public CommonsXmlRpcTransportFactory(URL pURL)
+	{
+		url = pURL;
+	}
+
+	public XmlRpcTransport createTransport () throws XmlRpcClientException
+	{
+		HttpClient client = new HttpClient();
+
+		CommonsXmlRpcTransport transport = new CommonsXmlRpcTransport(url, client);
+
+		if (auth != null)
+		{
+			transport.setBasicAuthentication(auth);
+		}
+
+		// set timeout if set
+		if (timeout != null)
+		{
+			transport.setTimeout(timeout.intValue());
+		}
+
+		// set connection timeout if set
+		if (connectionTimeout != null)
+		{
+			transport.setConnectionTimeout(connectionTimeout.intValue());
+		}
+
+		return transport;
+	}
+
+	/**
+	 * Sets Authentication for this client. This will be sent as Basic
+	 * Authentication header to the server as described in
+	 * <a href="http://www.ietf.org/rfc/rfc2617.txt">
+	 * http://www.ietf.org/rfc/rfc2617.txt</a>.
+	 */
+	public void setBasicAuthentication(String pAuth)
+	{
+		auth = pAuth;
+	}
+	
+	/**
+	 * Sets Authentication for this client. This will be sent as Basic
+	 * Authentication header to the server as described in
+	 * <a href="http://www.ietf.org/rfc/rfc2617.txt">
+	 * http://www.ietf.org/rfc/rfc2617.txt</a>.
+	 */
+	public void setBasicAuthentication(String pUsername, String pPassword)
+	{
+		auth = pUsername + ":" + pPassword;
+	}
+
+    /**
+     * Sets the socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the
+     * timeout for waiting for data. A timeout value of zero is interpreted as an
+     * infinite timeout.
+     *
+     * @param newTimeoutInMilliSeconds timeout in milliseconds (ms)
+     * @see org.apache.commons.httpclient.HttpClient#setTimeout
+     */
+    public void setTimeout(int newTimeoutInMilliSeconds)
+    {
+    	timeout = new Integer(newTimeoutInMilliSeconds);
+    }
+
+    /**
+     * Sets the timeout until a connection is etablished. A timeout value of zero \
+                means the timeout is not used. The default value is zero.
+     *
+     * @param newConnectionTimeoutInMilliSeconds timeout in milliseconds (ms)
+     * @see org.apache.commons.httpclient.HttpClient#setConnectionTimeout
+     */
+    public void setConnectionTimeout(int newConnectionTimeoutInMilliSeconds)
+    {
+    	connectionTimeout = new Integer(newConnectionTimeoutInMilliSeconds);
+    }
+
+	public void setProperty(String propertyName, Object value)
+	{
+		if (TRANSPORT_AUTH.equals(propertyName))
+		{
+			auth = (String) value;
+		}
+		else if (TRANSPORT_URL.equals(propertyName))
+		{
+			url = (URL) value;
+		}
+	}
+}