You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-auto@ws.apache.org by jo...@apache.org on 2007/10/27 16:50:28 UTC

svn commit: r589121 - in /webservices/xmlrpc/trunk: ./ client/src/main/java/org/apache/xmlrpc/client/ src/changes/

Author: jochen
Date: Sat Oct 27 07:50:27 2007
New Revision: 589121

URL: http://svn.apache.org/viewvc?rev=589121&view=rev
Log:
It is now possible to set the user-agent header in the clients configuration.
PR: XMLRPC-149
Submitted-By: Andreas Sahlbach <an...@gmail.com>

Modified:
    webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientConfigImpl.java
    webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpClientConfig.java
    webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java
    webservices/xmlrpc/trunk/pom.xml
    webservices/xmlrpc/trunk/src/changes/changes.xml

Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientConfigImpl.java
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientConfigImpl.java?rev=589121&r1=589120&r2=589121&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientConfigImpl.java (original)
+++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcClientConfigImpl.java Sat Oct 27 07:50:27 2007
@@ -1,65 +1,81 @@
-/*
- * 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.Serializable;
-import java.net.URL;
-
-import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
-import org.apache.xmlrpc.common.XmlRpcRequestProcessor;
-
-
-/** Default implementation of a clients request configuration.
- */
-public class XmlRpcClientConfigImpl extends XmlRpcHttpRequestConfigImpl
-		implements XmlRpcHttpClientConfig, XmlRpcLocalClientConfig, Cloneable, Serializable {
-	private static final long serialVersionUID = 4121131450507800889L;
-	private URL serverURL;
-	private XmlRpcRequestProcessor xmlRpcServer;
-
-	/** Creates a new client configuration with default settings.
-	 */
-	public XmlRpcClientConfigImpl() {
-	}
-
-	/** Creates a clone of this client configuration.
-	 * @return A clone of this configuration.
-	 */
-	public XmlRpcClientConfigImpl cloneMe() {
-		try {
-			return (XmlRpcClientConfigImpl) clone();
-		} catch (CloneNotSupportedException e) {
-			throw new IllegalStateException("Unable to create my clone");
-		}
-	}
-
-	/** Sets the servers URL.
-	 * @param pURL Servers URL
-	 */
-	public void setServerURL(URL pURL) {
-		serverURL = pURL;
-	}
-	public URL getServerURL() { return serverURL; }
-	/** Returns the {@link XmlRpcRequestProcessor} being invoked.
-	 * @param pServer Server object being invoked. This will typically
-	 * be a singleton instance, but could as well create a new
-	 * instance with any call.
-	 */
-	public void setXmlRpcServer(XmlRpcRequestProcessor pServer) {
-		xmlRpcServer = pServer;
-	}
-	public XmlRpcRequestProcessor getXmlRpcServer() { return xmlRpcServer; }
-}
+/*
+ * 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.Serializable;
+import java.net.URL;
+
+import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
+import org.apache.xmlrpc.common.XmlRpcRequestProcessor;
+
+
+/** Default implementation of a clients request configuration.
+ */
+public class XmlRpcClientConfigImpl extends XmlRpcHttpRequestConfigImpl
+		implements XmlRpcHttpClientConfig, XmlRpcLocalClientConfig, Cloneable, Serializable {
+	private static final long serialVersionUID = 4121131450507800889L;
+	private URL serverURL;
+	private XmlRpcRequestProcessor xmlRpcServer;
+    private String userAgent;
+
+	/** Creates a new client configuration with default settings.
+	 */
+	public XmlRpcClientConfigImpl() {
+	}
+
+	/** Creates a clone of this client configuration.
+	 * @return A clone of this configuration.
+	 */
+	public XmlRpcClientConfigImpl cloneMe() {
+		try {
+			return (XmlRpcClientConfigImpl) clone();
+		} catch (CloneNotSupportedException e) {
+			throw new IllegalStateException("Unable to create my clone");
+		}
+	}
+
+	/** Sets the servers URL.
+	 * @param pURL Servers URL
+	 */
+	public void setServerURL(URL pURL) {
+		serverURL = pURL;
+	}
+	public URL getServerURL() { return serverURL; }
+	/** Returns the {@link XmlRpcRequestProcessor} being invoked.
+	 * @param pServer Server object being invoked. This will typically
+	 * be a singleton instance, but could as well create a new
+	 * instance with any call.
+	 */
+	public void setXmlRpcServer(XmlRpcRequestProcessor pServer) {
+		xmlRpcServer = pServer;
+	}
+	public XmlRpcRequestProcessor getXmlRpcServer() { return xmlRpcServer; }
+
+    /**
+     * Returns the user agent header to use 
+     * @return the http user agent header to set when doing xmlrpc requests
+     */
+    public String getUserAgent() {
+        return userAgent;
+    }
+    
+    /**
+     * @param pUserAgent the http user agent header to set when doing xmlrpc requests
+     */
+    public void setUserAgent(String pUserAgent) {
+        userAgent = pUserAgent;
+    }
+}

Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpClientConfig.java
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpClientConfig.java?rev=589121&r1=589120&r2=589121&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpClientConfig.java (original)
+++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpClientConfig.java Sat Oct 27 07:50:27 2007
@@ -1,33 +1,39 @@
-/*
- * 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.net.URL;
-
-import org.apache.xmlrpc.common.XmlRpcHttpRequestConfig;
-
-
-/** Extension of {@link org.apache.xmlrpc.client.XmlRpcClientConfig}
- * for HTTP based transport. Provides details like server URL,
- * user credentials, and so on.
- */
-public interface XmlRpcHttpClientConfig extends XmlRpcHttpRequestConfig {
-	/** Returns the HTTP servers URL.
-	 * @return XML-RPC servers URL; for example, this may be the URL of a
-	 * servlet
-	 */
-	URL getServerURL();
-}
+/*
+ * 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.net.URL;
+
+import org.apache.xmlrpc.common.XmlRpcHttpRequestConfig;
+
+
+/** Extension of {@link org.apache.xmlrpc.client.XmlRpcClientConfig}
+ * for HTTP based transport. Provides details like server URL,
+ * user credentials, and so on.
+ */
+public interface XmlRpcHttpClientConfig extends XmlRpcHttpRequestConfig {
+	/** Returns the HTTP servers URL.
+	 * @return XML-RPC servers URL; for example, this may be the URL of a
+	 * servlet
+	 */
+	URL getServerURL();
+    
+    /**
+     * Returns the user agent header to use 
+     * @return the http user agent header to set when doing xmlrpc requests
+     */
+    String getUserAgent();
+}

Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java?rev=589121&r1=589120&r2=589121&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java (original)
+++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcHttpTransport.java Sat Oct 27 07:50:27 2007
@@ -1,116 +1,119 @@
-package org.apache.xmlrpc.client;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-
-import org.apache.xmlrpc.XmlRpcException;
-import org.apache.xmlrpc.XmlRpcRequest;
-import org.apache.xmlrpc.util.HttpUtil;
-import org.xml.sax.SAXException;
-
-
-/** Abstract base implementation of an HTTP transport. Base class for the
- * concrete implementations, like {@link org.apache.xmlrpc.client.XmlRpcSunHttpTransport},
- * or {@link org.apache.xmlrpc.client.XmlRpcCommonsTransport}.
- */
-public abstract class XmlRpcHttpTransport extends XmlRpcStreamTransport {
-    protected class ByteArrayReqWriter implements ReqWriter {
-        private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ByteArrayReqWriter(XmlRpcRequest pRequest)
-                throws XmlRpcException, IOException, SAXException {
-            new ReqWriterImpl(pRequest).write(baos);
-        }
-
-        protected int getContentLength() {
-            return baos.size();
-        }
-
-        public void write(OutputStream pStream) throws IOException {
-            try {
-                baos.writeTo(pStream);
-                pStream.close();
-                pStream = null;
-            } finally {
-                if (pStream != null) { try { pStream.close(); } catch (Throwable ignore) {} }
-            }
-        }
-    }
-
-	private String userAgent;
-
-	/** The user agent string.
-	 */
-	public static final String USER_AGENT = "Apache XML RPC 3.0";
-
-	protected XmlRpcHttpTransport(XmlRpcClient pClient, String pUserAgent) {
-		super(pClient);
-		userAgent = pUserAgent;
-	}
-
-	protected String getUserAgent() { return userAgent; }
-
-	protected abstract void setRequestHeader(String pHeader, String pValue);
-
-	protected void setCredentials(XmlRpcHttpClientConfig pConfig)
-			throws XmlRpcClientException {
-		String auth;
-		try {
-			auth = HttpUtil.encodeBasicAuthentication(pConfig.getBasicUserName(),
-													  pConfig.getBasicPassword(),
-													  pConfig.getBasicEncoding());
-		} catch (UnsupportedEncodingException e) {
-			throw new XmlRpcClientException("Unsupported encoding: " + pConfig.getBasicEncoding(), e);
-		}
-		if (auth != null) {
-			setRequestHeader("Authorization", "Basic " + auth);
-		}
-	}
-
-	protected void setContentLength(int pLength) {
-		setRequestHeader("Content-Length", Integer.toString(pLength));
-	}
-
-	protected void setCompressionHeaders(XmlRpcHttpClientConfig pConfig) {
-		if (pConfig.isGzipCompressing()) {
-			setRequestHeader("Content-Encoding", "gzip");
-		}
-		if (pConfig.isGzipRequesting()) {
-			setRequestHeader("Accept-Encoding", "gzip");
-		}
-	}
-
-	protected void initHttpHeaders(XmlRpcRequest pRequest) throws XmlRpcClientException {
-		XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();
-		setRequestHeader("Content-Type", "text/xml");
-		setRequestHeader("User-Agent", getUserAgent());
-		setCredentials(config);
-		setCompressionHeaders(config);
-	}
-
-	public Object sendRequest(XmlRpcRequest pRequest) throws XmlRpcException {
-		initHttpHeaders(pRequest);
-		return super.sendRequest(pRequest);
-	}
-
-	protected boolean isUsingByteArrayOutput(XmlRpcHttpClientConfig pConfig) {
-		return !pConfig.isEnabledForExtensions()
-			|| !pConfig.isContentLengthOptional();
-	}
-
-	protected ReqWriter newReqWriter(XmlRpcRequest pRequest)
-			throws XmlRpcException, IOException, SAXException {
-		final XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();
-        if (isUsingByteArrayOutput(config)) {
-            ByteArrayReqWriter reqWriter = new ByteArrayReqWriter(pRequest);
-            setContentLength(reqWriter.getContentLength());
-            if (isCompressingRequest(config)) {
-                return new GzipReqWriter(reqWriter);
-            }
-            return reqWriter;
-		} else {
-			return super.newReqWriter(pRequest);
-		}
-	}
-}
+package org.apache.xmlrpc.client;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+
+import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.XmlRpcRequest;
+import org.apache.xmlrpc.util.HttpUtil;
+import org.xml.sax.SAXException;
+
+
+/** Abstract base implementation of an HTTP transport. Base class for the
+ * concrete implementations, like {@link org.apache.xmlrpc.client.XmlRpcSunHttpTransport},
+ * or {@link org.apache.xmlrpc.client.XmlRpcCommonsTransport}.
+ */
+public abstract class XmlRpcHttpTransport extends XmlRpcStreamTransport {
+    protected class ByteArrayReqWriter implements ReqWriter {
+        private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ByteArrayReqWriter(XmlRpcRequest pRequest)
+                throws XmlRpcException, IOException, SAXException {
+            new ReqWriterImpl(pRequest).write(baos);
+        }
+
+        protected int getContentLength() {
+            return baos.size();
+        }
+
+        public void write(OutputStream pStream) throws IOException {
+            try {
+                baos.writeTo(pStream);
+                pStream.close();
+                pStream = null;
+            } finally {
+                if (pStream != null) { try { pStream.close(); } catch (Throwable ignore) {} }
+            }
+        }
+    }
+
+	private String userAgent;
+
+	/** The user agent string.
+	 */
+	public static final String USER_AGENT = "Apache XML RPC 3.0";
+
+	protected XmlRpcHttpTransport(XmlRpcClient pClient, String pUserAgent) {
+		super(pClient);
+		userAgent = pUserAgent;
+	}
+
+	protected String getUserAgent() { return userAgent; }
+
+	protected abstract void setRequestHeader(String pHeader, String pValue);
+
+	protected void setCredentials(XmlRpcHttpClientConfig pConfig)
+			throws XmlRpcClientException {
+		String auth;
+		try {
+			auth = HttpUtil.encodeBasicAuthentication(pConfig.getBasicUserName(),
+													  pConfig.getBasicPassword(),
+													  pConfig.getBasicEncoding());
+		} catch (UnsupportedEncodingException e) {
+			throw new XmlRpcClientException("Unsupported encoding: " + pConfig.getBasicEncoding(), e);
+		}
+		if (auth != null) {
+			setRequestHeader("Authorization", "Basic " + auth);
+		}
+	}
+
+	protected void setContentLength(int pLength) {
+		setRequestHeader("Content-Length", Integer.toString(pLength));
+	}
+
+	protected void setCompressionHeaders(XmlRpcHttpClientConfig pConfig) {
+		if (pConfig.isGzipCompressing()) {
+			setRequestHeader("Content-Encoding", "gzip");
+		}
+		if (pConfig.isGzipRequesting()) {
+			setRequestHeader("Accept-Encoding", "gzip");
+		}
+	}
+
+	protected void initHttpHeaders(XmlRpcRequest pRequest) throws XmlRpcClientException {
+		XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();
+		setRequestHeader("Content-Type", "text/xml");
+        if(config.getUserAgent() != null)
+            setRequestHeader("User-Agent", config.getUserAgent());
+        else
+            setRequestHeader("User-Agent", getUserAgent());
+		setCredentials(config);
+		setCompressionHeaders(config);
+	}
+
+	public Object sendRequest(XmlRpcRequest pRequest) throws XmlRpcException {
+		initHttpHeaders(pRequest);
+		return super.sendRequest(pRequest);
+	}
+
+	protected boolean isUsingByteArrayOutput(XmlRpcHttpClientConfig pConfig) {
+		return !pConfig.isEnabledForExtensions()
+			|| !pConfig.isContentLengthOptional();
+	}
+
+	protected ReqWriter newReqWriter(XmlRpcRequest pRequest)
+			throws XmlRpcException, IOException, SAXException {
+		final XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();
+        if (isUsingByteArrayOutput(config)) {
+            ByteArrayReqWriter reqWriter = new ByteArrayReqWriter(pRequest);
+            setContentLength(reqWriter.getContentLength());
+            if (isCompressingRequest(config)) {
+                return new GzipReqWriter(reqWriter);
+            }
+            return reqWriter;
+		} else {
+			return super.newReqWriter(pRequest);
+		}
+	}
+}

Modified: webservices/xmlrpc/trunk/pom.xml
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/pom.xml?rev=589121&r1=589120&r2=589121&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/pom.xml (original)
+++ webservices/xmlrpc/trunk/pom.xml Sat Oct 27 07:50:27 2007
@@ -216,6 +216,10 @@
             <email>sirboderafael@gmail.com</email>
         </contributor>
         <contributor>
+            <name>Andreas Sahlbach</name>
+            <email>andreas.sahlbach@gmail.com</email>
+        </contributor>
+        <contributor>
             <name>Ken Weiner</name>
             <email>kweiner@gmail.com</email>
         </contributor>

Modified: webservices/xmlrpc/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/src/changes/changes.xml?rev=589121&r1=589120&r2=589121&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/src/changes/changes.xml (original)
+++ webservices/xmlrpc/trunk/src/changes/changes.xml Sat Oct 27 07:50:27 2007
@@ -5,6 +5,11 @@
   <body>
     <release version="3.1.1-SNAPSHOT" date="Not yet released">
       <action dev="jochen" type="fix" due-to="P&#243;ka Bal&#225;zs" due-to-email="p.balazs@gmail.com">
+        The XmlRpcCommonsTransport is now always declaring its entities as repeatable.
+      </action>
+      <action dev="jochen" type="add" due-to="Andreas Sahlbach" due-to-email="andreas.sahlbach@gmail.com"
+          issue="XMLRPC-149">
+        It is now possible to set the clients user-agent header in the client configuration.
       </action>
     </release>
     <release version="3.1" date="2007-Aug-31">