2002/04/28 21:12:47
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:46:15 +0000 (06:46 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:46:15 +0000 (06:46 +0000)
darcs-hash:20040130064615-2ba56-3829c5e51464b746d245d8ba8852d9d7e623f737.gz

CHANGES
src/org/xwt/SOAP.java
src/org/xwt/XMLRPC.java

diff --git a/CHANGES b/CHANGES
index 4617ca4..13560bf 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -75,3 +75,6 @@
 28-Apr megacz Template.java: fixed a bug where <redirect/> would
               misbehave if used on a scriptless <template/>
 
+28-Apr megacz SOAP.java, XMLRPC.java: Base64 elements are now decoded
+              and returned as String's.
+
index e055809..d993fe8 100644 (file)
@@ -6,6 +6,7 @@ import java.net.*;
 import java.util.*;
 import org.mozilla.javascript.*;
 import org.xwt.util.*;
+import org.bouncycastle.util.encoders.Base64;
 
 /**
  *  A partial RPC-style SOAP 1.1 client. Implemented from the SOAP 1.1
@@ -59,6 +60,9 @@ class SOAP extends XMLRPC {
                 } else if (value.endsWith("string")) {
                     objects.removeElementAt(objects.size() - 1);
                     objects.addElement("");
+                } else if (value.endsWith("base64")) {
+                    objects.removeElementAt(objects.size() - 1);
+                    objects.addElement(new byte[] { });
                 } else if (value.endsWith("null")) {
                     objects.removeElementAt(objects.size() - 1);
                     objects.addElement(null);
@@ -84,6 +88,11 @@ class SOAP extends XMLRPC {
                 objects.removeElementAt(objects.size() - 1);
                 objects.addElement(new String(content.getBuf(), 0, content.size()).intern());
                 content.reset();
+
+            } else if (me instanceof byte[]) {
+                objects.removeElementAt(objects.size() - 1);
+                objects.addElement(new String(Base64.decode(new String(content.getBuf(), 0, content.size()))));
+                content.reset();                
                 
             } else if (me instanceof Integer) {
                 objects.removeElementAt(objects.size() - 1);
index ca5b54f..4da6b1c 100644 (file)
@@ -6,6 +6,7 @@ import java.net.*;
 import java.util.*;
 import org.mozilla.javascript.*;
 import org.xwt.util.*;
+import org.bouncycastle.util.encoders.Base64;
 
 /**
  *  An XML-RPC client implemented as a Rhino JavaScript Host
@@ -106,7 +107,7 @@ class XMLRPC extends XML implements Function {
             objects.setElementAt(new Double(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
 
         else if (name.equals("base64"))
-            objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
+            objects.setElementAt(new String(Base64.decode(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
 
         else if (name.equals("name"))
             objects.addElement(new String(content.getBuf(), 0, content.size()));