[re]-merged in Brians stuff
[org.ibex.js.git] / src / org / ibex / js / SOAP.java
index c2764d2..6843f53 100644 (file)
@@ -41,7 +41,7 @@ public class SOAP extends XMLRPC {
         if (name.equals("SOAP-ENV:Fault")) fault = true;
  
         // add a generic struct; we'll change this if our type is different
-        objects.addElement(new JS());
+        objects.addElement(new JS.O());
 
         for(int i=0; i<keys.length; i++) {
             String key = keys[i];
@@ -49,16 +49,16 @@ public class SOAP extends XMLRPC {
             if (key.endsWith("ype")) {
                 if (value.endsWith("boolean")) {
                     objects.removeElementAt(objects.size() - 1);
-                    objects.addElement(Boolean.FALSE);
+                    objects.addElement(JS.B(true));
                 } else if (value.endsWith("int")) {
                     objects.removeElementAt(objects.size() - 1);
-                    objects.addElement(new Integer(0));
+                    objects.addElement(JS.N(0));
                 } else if (value.endsWith("double")) {
                     objects.removeElementAt(objects.size() - 1);
-                    objects.addElement(new Double(0.0));
+                    objects.addElement(JS.N(0.0));
                 } else if (value.endsWith("string")) {
                     objects.removeElementAt(objects.size() - 1);
-                    objects.addElement("");
+                    objects.addElement(JS.S(""));
                 } else if (value.endsWith("base64")) {
                     objects.removeElementAt(objects.size() - 1);
                     objects.addElement(new byte[] { });
@@ -136,10 +136,10 @@ public class SOAP extends XMLRPC {
         }
         
         // remove ourselves
-        Object me = objects.elementAt(objects.size() - 1);
+        JS me = (JS)objects.elementAt(objects.size() - 1);
 
         // find our parent
-        Object parent = objects.size() > 1 ? objects.elementAt(objects.size() - 2) : null;
+        JS parent = objects.size() > 1 ? (JS)objects.elementAt(objects.size() - 2) : (JS)null;
 
         // we want to fold stuff back into the fault object
         if (objects.size() < 2) return;
@@ -152,7 +152,7 @@ public class SOAP extends XMLRPC {
         } else if (parent != null && parent instanceof JS) {
             objects.removeElementAt(objects.size() - 1);
             try {
-                ((JS)parent).put(name, me);
+                ((JS)parent).put(JS.S(name), me);
             } catch (JSExn e) {
                 throw new Error("this should never happen");
             }
@@ -235,7 +235,7 @@ public class SOAP extends XMLRPC {
             Enumeration e = j.keys();
             while(e.hasMoreElements()) {
                 Object key = e.nextElement();
-                appendObject((String)key, j.get(key), sb);
+                appendObject((String)key, j.get((JS)key), sb);
             }
             sb.append("</" + name + ">\r\n");
 
@@ -260,8 +260,8 @@ public class SOAP extends XMLRPC {
         if (args.length() > 0) {
             Enumeration e = ((JS)args.elementAt(0)).keys();
             while(e.hasMoreElements()) {
-                Object key = e.nextElement();
-                appendObject((String)key, ((JS)args.elementAt(0)).get(key), content);
+                JS key = (JS)e.nextElement();
+                appendObject(((JSString)key).coerceToString(), ((JS)args.elementAt(0)).get(key), content);
             }
         }
         content.append("    </" + method + "></SOAP-ENV:Body></SOAP-ENV:Envelope>\r\n");