Well I'm using this patched 2.0 on developpement systems without problems :)
Will you still commit on 2.0 or should we consider the current HEAD as 'stable' ? On Wed, 30 Mar 2005 15:02:18 +0100, Andrew Evers <[EMAIL PROTECTED]> wrote: > Hi Henri, > > I'm currently focusing on fixing up 1.2 (the stuff you saw on 2.0 was to > fix a bug, not to add a feature). I'm also not that au fait with the > CommonsHttpTransport stuff (that's Ryan's baby), so I am loathe to add > features without test cases. > > Can you provide some test cases that use your gzip functionality? > > Creating a bugzilla bug and attaching the patch and a test case to it is > a great way of making committer's lives easier (and getting your patch > accepted as a result ;). > > Regards, > > Andrew. > > -----Original Message----- > From: Henri Gomez [mailto:[EMAIL PROTECTED] > Sent: Wednesday, March 30, 2005 2:57 PM > To: xmlrpc-dev@ws.apache.org > Subject: Re: cvs commit: ws-xmlrpc/src/java/org/apache/xmlrpc > CommonsXmlRpcTransport.java DefaultXmlRpcTransport.java > LiteXmlRpcTransport.java XmlRpc.java XmlRpcClientWorker.java > XmlRpcTransport.java > > What about adding my fixes to support gzip compression ? > > On 30 Mar 2005 11:19:18 -0000, [EMAIL PROTECTED] <[EMAIL PROTECTED]> > wrote: > > aevers 2005/03/30 03:19:18 > > > > Modified: src/java/org/apache/xmlrpc CommonsXmlRpcTransport.java > > DefaultXmlRpcTransport.java > > LiteXmlRpcTransport.java XmlRpc.java > > XmlRpcClientWorker.java XmlRpcTransport.java > > Log: > > Bug 20339: LiteXmlRpcTransport throws IOExcpetion 'socket closed' > > > > Fix general resource leaks regarding connections in client side > > transpot code. There is now an endClientRequest() in the > > XmlRpcTransport interface. Appropriate implementations have been > > filled in for all shipped transports. > > > > Passes all tests except Base64 (was already broken). Note, for > > tests to pass you must have commons-logging installed as > > it is used by commons-httpclient. > > > > PR: 20339 > > > > Revision Changes Path > > 1.3 +28 -10 > ws-xmlrpc/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.java > > > > Index: CommonsXmlRpcTransport.java > > =================================================================== > > RCS file: > /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/CommonsXmlRpcTransport.ja > va,v > > retrieving revision 1.2 > > retrieving revision 1.3 > > diff -u -r1.2 -r1.3 > > --- CommonsXmlRpcTransport.java 26 Dec 2003 16:57:51 -0000 > 1.2 > > +++ CommonsXmlRpcTransport.java 30 Mar 2005 11:19:18 -0000 > 1.3 > > @@ -76,20 +76,28 @@ > > * @version $Id$ > > * @since 1.2 > > */ > > -public class CommonsXmlRpcTransport implements XmlRpcTransport { > > +public class CommonsXmlRpcTransport implements XmlRpcTransport > > +{ > > > > + protected PostMethod method; > > + > > /** Creates a new instance of CommonsXmlRpcTransport */ > > - public CommonsXmlRpcTransport(URL url, HttpClient client) { > > + public CommonsXmlRpcTransport(URL url, HttpClient client) > > + { > > this.url = url; > > - if (client == null) { > > + if (client == null) > > + { > > HttpClient newClient = new HttpClient(); > > this.client = newClient; > > - } else { > > + } > > + else > > + { > > this.client = client; > > } > > } > > > > - public CommonsXmlRpcTransport(URL url) { > > + public CommonsXmlRpcTransport(URL url) > > + { > > this(url, null); > > } > > > > @@ -98,8 +106,9 @@ > > private final Header userAgentHeader = new Header("User-Agent", > XmlRpc.version); > > private boolean http11 = false; // defaults to HTTP 1.0 > > > > - public InputStream sendXmlRpc(byte[] request) throws > IOException, XmlRpcClientException { > > - PostMethod method = new PostMethod(url.toString()); > > + public InputStream sendXmlRpc(byte[] request) throws > IOException, XmlRpcClientException > > + { > > + method = new PostMethod(url.toString()); > > method.setHttp11(http11); > > method.setRequestHeader(new Header("Content-Type", > "text/xml")); > > method.setRequestHeader(userAgentHeader); > > @@ -112,11 +121,20 @@ > > return method.getResponseBodyAsStream(); > > } > > > > - public void setHttp11(boolean http11) { > > + public void setHttp11(boolean http11) > > + { > > this.http11 = http11; > > } > > > > - public void setUserAgent(String userAgent) { > > + public void setUserAgent(String userAgent) > > + { > > userAgentHeader.setValue(userAgent); > > } > > + > > + public void endClientRequest() > > + throws XmlRpcClientException > > + { > > + // Rlease connection resources > > + method.releaseConnection(); > > + } > > } > > > > 1.3 +16 -2 > ws-xmlrpc/src/java/org/apache/xmlrpc/DefaultXmlRpcTransport.java > > > > Index: DefaultXmlRpcTransport.java > > =================================================================== > > RCS file: > /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/DefaultXmlRpcTransport.ja > va,v > > retrieving revision 1.2 > > retrieving revision 1.3 > > diff -u -r1.2 -r1.3 > > --- DefaultXmlRpcTransport.java 29 Jan 2003 00:46:37 -0000 > 1.2 > > +++ DefaultXmlRpcTransport.java 30 Mar 2005 11:19:18 -0000 > 1.3 > > @@ -75,6 +75,7 @@ > > { > > protected URL url; > > protected String auth; > > + protected URLConnection con; > > > > /** > > * Create a new DefaultXmlRpcTransport with the specified URL > and basic > > @@ -104,7 +105,7 @@ > > public InputStream sendXmlRpc(byte [] request) > > throws IOException > > { > > - URLConnection con = url.openConnection(); > > + con = url.openConnection(); > > con.setDoInput(true); > > con.setDoOutput(true); > > con.setUseCaches(false); > > @@ -133,4 +134,17 @@ > > { > > auth = HttpUtil.encodeBasicAuthentication(user, password); > > } > > + > > + public void endClientRequest() > > + throws XmlRpcClientException > > + { > > + try > > + { > > + con.getInputStream().close(); > > + } > > + catch (Exception e) > > + { > > + throw new XmlRpcClientException("Exception closing > URLConnection", e); > > + } > > + } > > } > > > > 1.4 +10 -7 > ws-xmlrpc/src/java/org/apache/xmlrpc/LiteXmlRpcTransport.java > > > > Index: LiteXmlRpcTransport.java > > =================================================================== > > RCS file: > /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/LiteXmlRpcTransport.java, > v > > retrieving revision 1.3 > > retrieving revision 1.4 > > diff -u -r1.3 -r1.4 > > --- LiteXmlRpcTransport.java 1 May 2003 16:53:15 -0000 1.3 > > +++ LiteXmlRpcTransport.java 30 Mar 2005 11:19:18 -0000 1.4 > > @@ -147,12 +147,6 @@ > > } > > } > > > > - // eepalive is always false if XmlRpc.keepalive is > false > > - if (!keepalive) > > - { > > - closeConnection (); > > - } > > - > > return in; > > } > > catch (IOException iox) > > @@ -326,6 +320,15 @@ > > auth = HttpUtil.encodeBasicAuthentication(user, password); > > } > > > > + public void endClientRequest() > > + { > > + // eepalive is always false if XmlRpc.keepalive is false > > + if (!keepalive) > > + { > > + closeConnection (); > > + } > > + } > > + > > /** > > * > > * @return > > > > 1.38 +41 -2 > ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpc.java > > > > Index: XmlRpc.java > > =================================================================== > > RCS file: > /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpc.java,v > > retrieving revision 1.37 > > retrieving revision 1.38 > > diff -u -r1.37 -r1.38 > > --- XmlRpc.java 30 Jun 2004 06:11:55 -0000 1.37 > > +++ XmlRpc.java 30 Mar 2005 11:19:18 -0000 1.38 > > @@ -56,6 +56,7 @@ > > */ > > > > import java.io.InputStream; > > +import java.io.InputStreamReader; > > import java.util.Hashtable; > > import java.util.Stack; > > import java.util.Vector; > > @@ -188,6 +189,15 @@ > > */ > > static String encoding = XmlWriter.ISO8859_1; > > > > + /** > > + * Java's name for the input encoding we're using. Defaults to > > + * <code>null</code>, signifying the platform default. This may > > + * need to be overridden on platforms where the default > encoding > > + * is not compatible with ASCII (eg. EBCDIC) but the network is > > + * still ASCII-like. > > + */ > > + static String inputEncoding = null; > > + > > private TypeFactory typeFactory; > > > > /** > > @@ -342,6 +352,28 @@ > > } > > > > /** > > + * Set the input encoding of the XML. > > + * This is used only if set. > > + * > > + * @param enc The Java name of the encoding. > > + */ > > + public static void setInputEncoding(String enc) > > + { > > + inputEncoding = enc; > > + } > > + > > + /** > > + * Return the input encoding. This may be null. This is always > a > > + * Java encoding name, it is not transformed. > > + * > > + * @return the Java encoding name to use, if set, otherwise > null. > > + */ > > + public static String getInputEncoding () > > + { > > + return inputEncoding; > > + } > > + > > + /** > > * Gets the maximum number of threads used at any given moment. > > */ > > public static int getMaxThreads() > > @@ -440,7 +472,14 @@ > > } > > try > > { > > - parser.parse(new InputSource (is)); > > + if(inputEncoding == null) > > + { > > + parser.parse(new InputSource (is)); > > + } > > + else > > + { > > + parser.parse( new InputSource( new > InputStreamReader(is, inputEncoding))); > > + } > > } > > finally > > { > > > > 1.2 +8 -0 > ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java > > > > Index: XmlRpcClientWorker.java > > =================================================================== > > RCS file: > /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java,v > > retrieving revision 1.1 > > retrieving revision 1.2 > > diff -u -r1.1 -r1.2 > > --- XmlRpcClientWorker.java 5 Dec 2002 08:49:24 -0000 1.1 > > +++ XmlRpcClientWorker.java 30 Mar 2005 11:19:18 -0000 1.2 > > @@ -136,6 +136,14 @@ > > System.out.println("Spent " + > (System.currentTimeMillis() - now) > > + " millis in > request/process/response"); > > } > > + try > > + { > > + transport.endClientRequest(); > > + } > > + catch (RuntimeException re) > > + { > > + throw new XmlRpcClientException("Transport > exception in endClientRequest()", re); > > + } > > } > > } > > > > 1.2 +19 -1 > ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcTransport.java > > > > Index: XmlRpcTransport.java > > =================================================================== > > RCS file: > /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcTransport.java,v > > retrieving revision 1.1 > > retrieving revision 1.2 > > diff -u -r1.1 -r1.2 > > --- XmlRpcTransport.java 5 Dec 2002 08:49:24 -0000 1.1 > > +++ XmlRpcTransport.java 30 Mar 2005 11:19:18 -0000 1.2 > > @@ -68,6 +68,24 @@ > > */ > > public interface XmlRpcTransport > > { > > + /** > > + * Send an XML-RPC message. This method is called to send a > message to the > > + * other party. > > + * > > + * @param request the request in network encoding. > > + * > > + * @throws IOException if an IOException occurs in the IO level > of the transport. > > + * @throws XmlRpcClientException if an exception occurs in the > transport. > > + */ > > public InputStream sendXmlRpc(byte [] request) > > throws IOException, XmlRpcClientException; > > + > > + /** > > + * End an XML-RPC request. This method is called by the > XmlRpcClient when then > > + * request has been sent and the response (or an exception) > recieved. > > + * > > + * @throws XmlRpcClientException if an exception occurs in the > transport. > > + */ > > + public void endClientRequest() > > + throws XmlRpcClientException; > > } > > > > >