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:49:44 UTC

svn commit: r350048 - in /webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH: ./ src/java/org/apache/xmlrpc/ src/java/org/apache/xmlrpc/util/

Author: jochen
Date: Wed Nov 30 12:49:32 2005
New Revision: 350048

URL: http://svn.apache.org/viewcvs?rev=350048&view=rev
Log:
Added the possibility to specify a timezone for interpreting incoming date values.
Submitted-By: Henry Story, henry.story@bblfish.net

Modified:
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/DefaultTypeFactory.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpc.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClient.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientRequestProcessor.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientResponseProcessor.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlWriter.java
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/util/DateTool.java

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml Wed Nov 30 12:49:32 2005
@@ -22,6 +22,11 @@
       		due-to="Jimisola Laursen" due-to-email="lists@jimisola.com">
       	  Added the CommonsXmlRpcTransportFactory.
       </action>
+      <action dev="jochen" type="enhancement"
+            due-to="Henry Story" due-to-email="henry.story@bblfish.net">
+          Added the possibility to specify a timezone for interpreting
+          incoming date values.
+      </action>
     </release>
   </body>
 </document>

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/DefaultTypeFactory.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/DefaultTypeFactory.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/DefaultTypeFactory.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/DefaultTypeFactory.java Wed Nov 30 12:49:32 2005
@@ -19,6 +19,7 @@
 
 
 import java.text.ParseException;
+import java.util.TimeZone;
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.DecoderException;
@@ -57,6 +58,10 @@
      */
     public DefaultTypeFactory()
     {
+    }
+
+    public DefaultTypeFactory(TimeZone tz) {
+        dateTool.setTimeZone(tz);
     }
 
     public Object createInteger(String cdata)

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpc.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpc.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpc.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpc.java Wed Nov 30 12:49:32 2005
@@ -17,18 +17,15 @@
 
 package org.apache.xmlrpc;
 
+import org.xml.sax.*;
+import uk.co.wilson.xml.MinML;
+
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Hashtable;
 import java.util.Stack;
+import java.util.TimeZone;
 import java.util.Vector;
-import org.xml.sax.AttributeList;
-import org.xml.sax.HandlerBase;
-import org.xml.sax.InputSource;
-import org.xml.sax.Parser;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import uk.co.wilson.xml.MinML;
 
 /**
  * This abstract base class provides basic capabilities for XML-RPC,
@@ -235,7 +232,7 @@
         // If we're using the default, provide it immediately.
         if (c == null || DefaultTypeFactory.class.equals(c))
         {
-            return new DefaultTypeFactory();
+            return new DefaultTypeFactory(tz);
         }
 
         try
@@ -251,8 +248,17 @@
             {
                 e.printStackTrace();
             }
-            return new DefaultTypeFactory();
+            return new DefaultTypeFactory(tz);
+        }
+    }
+
+    TimeZone tz;
+    
+    void setServerTimeZone(TimeZone z) {
+        tz = z;
         }
+    TimeZone getServerTimeZone() {
+        return tz;
     }
 
     /**

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClient.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClient.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClient.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClient.java Wed Nov 30 12:49:32 2005
@@ -23,6 +23,7 @@
 import java.util.EmptyStackException;
 import java.util.Stack;
 import java.util.Vector;
+import java.util.TimeZone;
 
 /**
  * A multithreaded, reusable XML-RPC client object. Use this if you
@@ -347,10 +348,19 @@
                 {
                     workers += 1;
                 }
-                return new XmlRpcClientWorker();
+                return new XmlRpcClientWorker(getTimeZone());
             }
             throw new IOException("XML-RPC System overload");
         }
+    }
+
+    TimeZone tz;
+    public void setTimeZone(TimeZone z) {
+        tz = z;
+    }
+
+    public TimeZone getTimeZone() {
+        return tz;
     }
 
     /**

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientRequestProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientRequestProcessor.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientRequestProcessor.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientRequestProcessor.java Wed Nov 30 12:49:32 2005
@@ -20,6 +20,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.TimeZone;
 
 /**
  * Process an XML-RPC client request into a byte array or directly onto
@@ -32,11 +33,13 @@
  */
 public class XmlRpcClientRequestProcessor
 {
+    TimeZone tz;
     /**
      * Creates a new instance.
      */
-    public XmlRpcClientRequestProcessor()
+    public XmlRpcClientRequestProcessor(TimeZone tz)
     {
+        this.tz = tz;
     }
 	
     /**
@@ -45,7 +48,6 @@
      *
      * @param request the request to encode.
      * @param encoding the Java name for the encoding to use.
-     * @return byte [] the encoded request.
      */
     public void encodeRequest(XmlRpcClientRequest request, String encoding,
                               OutputStream out)
@@ -54,7 +56,7 @@
         XmlWriter writer;
 
         writer = new XmlWriter(out, encoding);
-       
+        writer.dateTool.setTimeZone(tz);
         writer.startElement("methodCall");
         writer.startElement("methodName");
         writer.write(request.getMethodName());

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientResponseProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientResponseProcessor.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientResponseProcessor.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientResponseProcessor.java Wed Nov 30 12:49:32 2005
@@ -17,12 +17,13 @@
 
 package org.apache.xmlrpc;
 
-import java.util.Hashtable;
-import java.io.InputStream;
-
 import org.xml.sax.AttributeList;
 import org.xml.sax.SAXException;
 
+import java.io.InputStream;
+import java.util.Hashtable;
+import java.util.TimeZone;
+
 /**
  * Process an XML-RPC server response from a byte array or an
  * InputStream into an Object. Optionally throw the result object
@@ -44,8 +45,9 @@
     /**
      * Creates a new instance.
      */
-    public XmlRpcClientResponseProcessor()
+    public XmlRpcClientResponseProcessor(TimeZone tz)
     {
+        setServerTimeZone(tz);
     }
 
     /**

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlRpcClientWorker.java Wed Nov 30 12:49:32 2005
@@ -19,6 +19,7 @@
 
 import java.io.InputStream;
 import java.io.IOException;
+import java.util.TimeZone;
 
 /**
  * Tie together the XmlRequestProcessor and XmlResponseProcessor to handle
@@ -38,10 +39,10 @@
      */
     private static final Object PROCESSING_ERROR_FLAG = new Object();
 
-    public XmlRpcClientWorker()
+    public XmlRpcClientWorker(TimeZone tz)
     {
-        this(new XmlRpcClientRequestProcessor(), 
-             new XmlRpcClientResponseProcessor()
+        this(new XmlRpcClientRequestProcessor(tz),
+             new XmlRpcClientResponseProcessor(tz)
         );
     }
 

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlWriter.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlWriter.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlWriter.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/XmlWriter.java Wed Nov 30 12:49:32 2005
@@ -104,7 +104,7 @@
      * Thread-safe wrapper for the <code>DateFormat</code> object used
      * to parse date/time values.
      */
-    private static DateTool dateTool = new DateTool();
+    DateTool dateTool = new DateTool();
 
     /**
      * Whether the XML prolog has been written.

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/util/DateTool.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/util/DateTool.java?rev=350048&r1=350047&r2=350048&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/util/DateTool.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/util/DateTool.java Wed Nov 30 12:49:32 2005
@@ -21,6 +21,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.TimeZone;
 
 /**
  * Wraps a <code>DateFormat</code> instance to provide thread safety.
@@ -52,6 +53,10 @@
     public synchronized String format(Date d)
     {
         return df.format(d);
+    }
+
+    public synchronized void setTimeZone(TimeZone z) {
+        if (z != null) df.setTimeZone(z);
     }
 
     /**