Hi Andrews,

should JIRA or Bugzilla being used for patches and bugs?!

Cheers,

Siegfried Goeschl

Andrew Evers 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;
  }










Reply via email to