Hi!

This patch updates xml-rpc to use List and Map instead of Vector and
Hashtable. In addition a lot of try/catch blocks has been removed
because commons-codec-1.2 doesn't throw so much exceptions anymore.

The testsuits all complete unmodified. (Vector and Hashtable implements
List and Map since ???).

Regards
Sebastian
Only in ws-xmlrpc: .build.xml.swp
diff -ur ws-xmlrpc.old/default.properties ws-xmlrpc/default.properties
--- ws-xmlrpc.old/default.properties	2003-05-21 17:58:23.000000000 +0200
+++ ws-xmlrpc/default.properties	2004-03-20 17:21:39.073580735 +0100
@@ -30,11 +30,12 @@
 # ${user.home}/build.properties file in order
 # to build XmlRpc:
 
-commons-httpclient.jar = ${lib.repo}/commons-httpclient-2.0.jar
-commons-logging.jar = ${lib.repo}/commons-logging-1.0.2.jar
-commons-codec.jar = ${lib.repo}/commons-codec-1.1.jar
-jsse.jar = ${lib.repo}/jsse.jar
-jnet.jar = ${lib.repo}/jnet.jar
-jcert.jar = ${lib.repo}/jcert.jar
-servlet.jar = ${lib.repo}/servlet.jar
-junit.jar = ${lib.repo}/junit-3.7.jar
+java.dir = /usr/share/java
+commons-httpclient.jar = ${java.dir}/commons-httpclient.jar
+commons-logging.jar = ${java.dir}/commons-logging.jar
+commons-codec.jar = ${java.dir}/commons-codec.jar
+jsse.jar = ${java.dir}/jsse.jar
+jnet.jar = ${java.dir}/jnet.jar
+jcert.jar = ${java.dir}/jcert.jar
+servlet.jar = ${java.dir}/servlet.jar
+junit.jar = ${java.dir}/junit.jar
diff -ur ws-xmlrpc.old/src/java/CVS/Entries ws-xmlrpc/src/java/CVS/Entries
--- ws-xmlrpc.old/src/java/CVS/Entries	2004-03-20 17:11:57.231184911 +0100
+++ ws-xmlrpc/src/java/CVS/Entries	2004-03-15 16:38:05.000000000 +0100
@@ -1,2 +1 @@
-D/org////
-D/uk////
+D
Only in ws-xmlrpc/src/java/CVS: Entries.Log
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/applet/SimpleXmlRpcClient.java ws-xmlrpc/src/java/org/apache/xmlrpc/applet/SimpleXmlRpcClient.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/applet/SimpleXmlRpcClient.java	2003-05-01 18:53:16.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/applet/SimpleXmlRpcClient.java	2004-03-20 17:27:37.686561890 +0100
@@ -249,12 +249,7 @@
         else if (what instanceof byte[])
         {
             writer.startElement("base64");
-            try {
-                writer.write(base64.encode((byte[]) what));
-            }
-            catch (EncoderException e) {
-                throw new RuntimeException("Incompatible version of org.apache.commons.codec.binary.Base64 used, and an error occurred.");
-            }
+            writer.write(base64.encode((byte[]) what));
             writer.endElement("base64");
         }
         else if (what instanceof Vector)
@@ -649,16 +644,7 @@
                     }
                     break;
                 case BASE64:
-                    try {
-                        value = base64.decode(cdata.getBytes());
-                    }
-                    catch (DecoderException e) {
-                        /* FIXME: what should we do here?  Probably an Exception?
-                         * tabling because this class is slated for complete overhaul
-                         * using the core library.
-                         */ 
-                        value = cdata;
-                    }
+                    value = base64.decode(cdata.getBytes());
                     break;
                 case STRING:
                     value = cdata;
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/AuthDemo.java ws-xmlrpc/src/java/org/apache/xmlrpc/AuthDemo.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/AuthDemo.java	2002-03-20 16:11:03.000000000 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/AuthDemo.java	2004-03-20 17:40:29.626841282 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  *
@@ -67,7 +67,7 @@
     /**
      *
      */
-    public Object execute(String method, Vector v, String user, String password)
+    public Object execute(String method, List v, String user, String password)
             throws Exception
     {
         // our simplistic authentication guidelines never fail ;)
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/AuthenticatedXmlRpcHandler.java ws-xmlrpc/src/java/org/apache/xmlrpc/AuthenticatedXmlRpcHandler.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/AuthenticatedXmlRpcHandler.java	2002-09-27 19:17:01.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/AuthenticatedXmlRpcHandler.java	2004-03-20 17:42:14.777310752 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * An XML-RPC handler that also handles HTTP authentication.
@@ -78,7 +78,7 @@
      * exception of this type must be thrown.
      * @see org.apache.xmlrpc.AuthenticationFailed
      */
-    public Object execute(String method, Vector params, String user,
+    public Object execute(String method, List params, String user,
                           String password)
         throws Exception;
 }
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/ContextXmlRpcHandler.java ws-xmlrpc/src/java/org/apache/xmlrpc/ContextXmlRpcHandler.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/ContextXmlRpcHandler.java	2002-10-21 15:08:50.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/ContextXmlRpcHandler.java	2004-03-20 17:38:47.627756507 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * An XML-RPC handler that also handles user authentication.
@@ -74,6 +74,6 @@
      * exception of this type must be thrown.
      * @see org.apache.xmlrpc.AuthenticationFailed
      */
-    public Object execute(String method, Vector params, XmlRpcContext context)
+    public Object execute(String method, List params, XmlRpcContext context)
             throws Exception;
 }
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/CVS/Entries ws-xmlrpc/src/java/org/apache/xmlrpc/CVS/Entries
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/CVS/Entries	2004-03-20 17:12:28.318115217 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/CVS/Entries	2004-03-15 16:38:12.000000000 +0100
@@ -41,7 +41,7 @@
 /XmlRpcTransport.java/1.1/Thu Dec  5 08:49:24 2002//
 /XmlRpcTransportFactory.java/1.3/Wed Jan 29 13:40:08 2003//
 /XmlRpcWorker.java/1.5/Thu Dec  5 08:49:24 2002//
+/XmlWriter.java/1.9/Fri Sep 12 09:44:06 2003//
 D/applet////
 D/secure////
 D/util////
-/XmlWriter.java/1.9/Sat Mar 20 16:12:28 2004//
Only in ws-xmlrpc/src/java/org/apache/xmlrpc/CVS: Entries.Log
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/DefaultTypeFactory.java ws-xmlrpc/src/java/org/apache/xmlrpc/DefaultTypeFactory.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/DefaultTypeFactory.java	2003-05-01 18:53:15.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/DefaultTypeFactory.java	2004-03-20 17:28:11.951871621 +0100
@@ -127,13 +127,7 @@
 
     public Object createBase64(String cdata)
     {
-        try {
-            return base64Codec.decode(cdata.getBytes());
-        }
-        catch (DecoderException e) {
-            //TODO: consider throwing an exception here?
-            return new byte[0];
-        }
+        return base64Codec.decode(cdata.getBytes());
     }
 
     public Object createString(String cdata)
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/Echo.java ws-xmlrpc/src/java/org/apache/xmlrpc/Echo.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/Echo.java	2002-03-20 16:11:03.000000000 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/Echo.java	2004-03-20 17:34:57.812627693 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * A simple handler which echos its input parameters.
@@ -72,7 +72,7 @@
      * @param parameters Handler input parameters.
      * @return The input parameters.
      */
-    public Object execute(String method, Vector parameters)
+    public Object execute(String method, List parameters)
             throws Exception
     {
         return parameters;
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/Invoker.java ws-xmlrpc/src/java/org/apache/xmlrpc/Invoker.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/Invoker.java	2002-08-27 21:20:41.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/Invoker.java	2004-03-20 17:34:20.533906328 +0100
@@ -57,7 +57,7 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.util.Vector;
+import java.util.List;
 
 /**
  * Introspects handlers using Java Reflection to call methods matching
@@ -86,7 +86,7 @@
     /**
      * main method, sucht methode in object, wenn gefunden dann aufrufen.
      */
-    public Object execute(String methodName, Vector params) throws Exception
+    public Object execute(String methodName, List params) throws Exception
     {
         // Array mit Classtype bilden, ObjectAry mit Values bilden
         Class[] argClasses = null;
@@ -97,7 +97,7 @@
             argValues = new Object[params.size()];
             for (int i = 0; i < params.size(); i++)
             {
-                argValues[i] = params.elementAt(i);
+                argValues[i] = params.get(i);
                 if (argValues[i] instanceof Integer)
                 {
                     argClasses[i] = Integer.TYPE;
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/MultiCall.java ws-xmlrpc/src/java/org/apache/xmlrpc/MultiCall.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/MultiCall.java	2003-05-21 18:06:03.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/MultiCall.java	2004-03-20 17:48:03.562210831 +0100
@@ -55,7 +55,9 @@
  * <http://www.apache.org/>.
  */
 
+import java.util.Map;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Vector;
 
 /**
@@ -71,7 +73,7 @@
 public class MultiCall
 implements ContextXmlRpcHandler
 {
-    public Object execute(String method, Vector params, XmlRpcContext context)
+    public Object execute(String method, List params, XmlRpcContext context)
             throws Exception
     {
         if ("multicall".equals(method))
@@ -82,17 +84,17 @@
         throw new NoSuchMethodException("No method '" + method + "' in " + this.getClass().getName());
     }
 
-    public Vector multicall(Vector requests, XmlRpcContext context)
+    public Vector multicall(List requests, XmlRpcContext context)
     {
         // The array of calls is passed as a single parameter of type array.
-        requests=(Vector)requests.elementAt(0);
+        requests=(List)requests.get(0);
         Vector response = new Vector();
         XmlRpcServerRequest request;
         for (int i = 0; i < requests.size(); i++)
         {
             try
             {
-                Hashtable call = (Hashtable) requests.elementAt(i);
+                Map call = (Map) requests.get(i);
                 request = new XmlRpcRequest((String) call.get("methodName"),
                                             (Vector) call.get("params"));
                 Object handler = context.getHandlerMapping().getHandler(request.getMethodName());
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/SystemHandler.java ws-xmlrpc/src/java/org/apache/xmlrpc/SystemHandler.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/SystemHandler.java	2002-10-21 15:08:50.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/SystemHandler.java	2004-03-20 17:41:55.234126541 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * Wraps calls to the XML-RPC standard system.* methods (such as
@@ -146,7 +146,7 @@
      * Execute a &lt;ignored&gt;.&lt;name&gt; call by calling the handler for
      * &lt;name&gt; in the the system handler mapping.
      */
-    public Object execute(String method, Vector params, XmlRpcContext context)
+    public Object execute(String method, List params, XmlRpcContext context)
             throws Exception
     {
         Object handler = null;
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/util/HttpUtil.java ws-xmlrpc/src/java/org/apache/xmlrpc/util/HttpUtil.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/util/HttpUtil.java	2003-05-01 18:53:16.000000000 +0200
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/util/HttpUtil.java	2004-03-20 17:25:06.127153721 +0100
@@ -85,15 +85,8 @@
         }
         else
         {
-            try {
-                auth = new String(base64.encode((user + ':' + password)
-                        .getBytes())).trim();
-            }
-            catch (EncoderException e) {
-                // EncoderException is never thrown in the body of Base64.encode(byte[]) in version 1.1
-                // TODO: possibly throw an exception from this method or refactor this class
-                throw new RuntimeException("Incompatible version of org.apache.commons.codec.binary.Base64 used, and an error condition was encountered.");
-            }
+            auth = new String(base64.encode((user + ':' + password)
+                    .getBytes())).trim();
         }
         return auth;
     }
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcClient.java ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcClient.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcClient.java	2003-01-29 01:57:14.000000000 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcClient.java	2004-03-20 17:32:39.363659723 +0100
@@ -63,8 +63,8 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.EmptyStackException;
-import java.util.Hashtable;
 import java.util.Stack;
+import java.util.List;
 import java.util.Vector;
 import org.xml.sax.AttributeList;
 import org.xml.sax.SAXException;
@@ -178,7 +178,7 @@
      * @exception IOException: If the call could not be made because of lower
      *          level problems.
      */
-    public Object execute(String method, Vector params)
+    public Object execute(String method, List params)
             throws XmlRpcException, IOException
     {
         /* Setting user and password on transport if setBasicAuthentication was 
@@ -223,7 +223,7 @@
      * If the callback parameter is not null, it will be called later to handle
      * the result or error when the call is finished.
      */
-    public void executeAsync(String method, Vector params,
+    public void executeAsync(String method, List params,
             AsyncCallback callback)
     {
         XmlRpcRequest request = new XmlRpcRequest(method, params);
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcHandler.java ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcHandler.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcHandler.java	2002-03-20 16:11:03.000000000 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcHandler.java	2004-03-20 17:32:09.802431524 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * The XML-RPC server uses this interface to call a method of an RPC handler.
@@ -72,6 +72,6 @@
     /**
      * Return the result, or throw an Exception if something went wrong.
      */
-    public Object execute (String method, Vector params)
+    public Object execute (String method, List params)
             throws Exception;
 }
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcRequest.java ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcRequest.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcRequest.java	2002-12-05 09:49:24.000000000 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcRequest.java	2004-03-20 17:36:10.825372024 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * Default implementation of an XML-RPC request for both client and server.
@@ -68,9 +68,9 @@
 implements XmlRpcServerRequest, XmlRpcClientRequest
 {
     protected final String methodName;
-    protected final Vector parameters;
+    protected final List parameters;
 
-    public XmlRpcRequest(String methodName, Vector parameters)
+    public XmlRpcRequest(String methodName, List parameters)
     {
         this.parameters = parameters;
         this.methodName = methodName;
@@ -81,14 +81,14 @@
         return parameters.size();
     }
     
-    public Vector getParameters()
+    public List getParameters()
     {
         return parameters;
     }
 
     public Object getParameter(int index)
     {
-        return parameters.elementAt(index);
+        return parameters.get(index);
     }
 
     public String getMethodName()
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcServerRequest.java ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcServerRequest.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlRpcServerRequest.java	2002-12-05 09:49:24.000000000 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpcServerRequest.java	2004-03-20 17:36:34.029841373 +0100
@@ -55,7 +55,7 @@
  * <http://www.apache.org/>.
  */
 
-import java.util.Vector;
+import java.util.List;
 
 /**
  * Interface to an XML-RPC request made to the server.
@@ -66,7 +66,7 @@
  */
 public interface XmlRpcServerRequest
 {
-    public Vector getParameters();
+    public List getParameters();
     public Object getParameter(int index);
     public String getMethodName();
 }
diff -ur ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlWriter.java ws-xmlrpc/src/java/org/apache/xmlrpc/XmlWriter.java
--- ws-xmlrpc.old/src/java/org/apache/xmlrpc/XmlWriter.java	2004-03-20 17:12:28.112155431 +0100
+++ ws-xmlrpc/src/java/org/apache/xmlrpc/XmlWriter.java	2004-03-20 17:26:11.122463448 +0100
@@ -60,10 +60,10 @@
 import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
-import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.List;
 import java.util.Properties;
-import java.util.Vector;
 
 import org.apache.xmlrpc.util.DateTool;
 import org.apache.commons.codec.binary.Base64;
@@ -211,12 +211,7 @@
         else if (obj instanceof byte[])
         {
             startElement("base64");
-            try {
-                this.write(base64Codec.encode((byte[]) obj));
-            }
-            catch (EncoderException e) {
-                throw new XmlRpcClientException("Unable to Base 64 encode byte array", e);
-            }
+            this.write(base64Codec.encode((byte[]) obj));
             endElement("base64");
         }
         else if (obj instanceof Object[])
@@ -231,27 +226,27 @@
             endElement("data");
             endElement("array");
         }
-        else if (obj instanceof Vector)
+        else if (obj instanceof List)
         {
             startElement("array");
             startElement("data");
-            Vector array = (Vector) obj;
-            int size = array.size();
-            for (int i = 0; i < size; i++)
+            List array = (List) obj;
+            for (Iterator it = array.iterator(); it.hasNext(); )
             {
-                writeObject(array.elementAt(i));
+                writeObject(it.next());
             }
             endElement("data");
             endElement("array");
         }
-        else if (obj instanceof Hashtable)
+        else if (obj instanceof Map)
         {
             startElement("struct");
-            Hashtable struct = (Hashtable) obj;
-            for (Enumeration e = struct.keys(); e.hasMoreElements(); )
+            Map struct = (Map) obj;
+            for (Iterator it = struct.entrySet().iterator(); it.hasNext(); )
             {
-                String key = (String) e.nextElement();
-                Object value = struct.get(key);
+                Map.Entry me = (Map.Entry) it.next();
+                String key = (String) me.getKey();
+                Object value = me.getValue();
                 startElement("member");
                 startElement("name");
                 chardata(key);
Only in ws-xmlrpc.old/src/java/org/apache/xmlrpc: .XmlWriter.java.swp
diff -ur ws-xmlrpc.old/src/java/uk/CVS/Entries ws-xmlrpc/src/java/uk/CVS/Entries
--- ws-xmlrpc.old/src/java/uk/CVS/Entries	2004-03-20 17:11:57.637105655 +0100
+++ ws-xmlrpc/src/java/uk/CVS/Entries	2004-03-15 16:38:10.000000000 +0100
@@ -1,2 +1 @@
-D/co////
-D/org////
+D
Only in ws-xmlrpc/src/java/uk/CVS: Entries.Log
Only in ws-xmlrpc/src/test/org/apache/xmlrpc: .ClientServerRpcTest.java.swp
Only in ws-xmlrpc/target/classes: org
Only in ws-xmlrpc/target/classes: uk
Only in ws-xmlrpc/target: test-classes
Only in ws-xmlrpc/target: xmlrpc-2.0-a1-dev-applet.jar
Only in ws-xmlrpc/target: xmlrpc-2.0-a1-dev.jar
Only in ws-xmlrpc: test-reports

Reply via email to