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, [EMAIL PROTECTED]
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="[EMAIL PROTECTED]"> Added the CommonsXmlRpcTransportFactory. </action> + <action dev="jochen" type="enhancement" + due-to="Henry Story" due-to-email="[EMAIL PROTECTED]"> + 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); } /**