preliminary core conversion
[org.ibex.core.git] / src / org / ibex / net / XMLRPC.java
index 290415f..66908d8 100644 (file)
@@ -92,17 +92,17 @@ public class XMLRPC extends JS {
         
         public void endElement(XML.Element c) {
             //#switch(c.getLocalName())
-            case "int": objects.setElementAt(new Integer(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
-            case "i4": objects.setElementAt(new Integer(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
-            case "boolean": objects.setElementAt(content.getBuf()[0] == '1' ? Boolean.TRUE : Boolean.FALSE, objects.size() - 1);
-            case "string": objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
-            case "double": objects.setElementAt(new Double(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
+            case "int": objects.setElementAt(JS.N(Integer.parseInt(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
+            case "i4": objects.setElementAt(JS.N(Integer.parseInt(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
+            case "boolean": objects.setElementAt(content.getBuf()[0] == '1' ? JS.T : JS.F, objects.size() - 1);
+            case "string": objects.setElementAt(JS.S(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
+            case "double": objects.setElementAt(JS.N(Double.parseDouble(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
             case "base64":
                 objects.setElementAt(new Stream.ByteArray(Base64.decode(new String(content.getBuf(), 0, content.size())),
                                                           null), objects.size() - 1);
-            case "name": objects.addElement(new String(content.getBuf(), 0, content.size()));
+            case "name": objects.addElement(JS.S(new String(content.getBuf(), 0, content.size())));
             case "value": if ("".equals(objects.lastElement()))
-                objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
+                objects.setElementAt(JS.S(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
             case "dateTime.iso8601":
                 String s = new String(content.getBuf(), 0, content.size());
                 
@@ -129,11 +129,11 @@ public class XMLRPC extends JS {
                                     "the server sent a <dateTime.iso8601> tag which was malformed: " + s);
                 }
             case "member":
-                Object memberValue = objects.elementAt(objects.size() - 1);
+                JS memberValue = (JS) objects.elementAt(objects.size() - 1);
                 String memberName = (String)objects.elementAt(objects.size() - 2);
                 JS struct = (JS)objects.elementAt(objects.size() - 3);
                 try {
-                    struct.put(memberName, memberValue);
+                    struct.put(JS.S(memberName), memberValue);
                 } catch (JSExn e) {
                     throw new Error("this should never happen");
                 }
@@ -143,7 +143,7 @@ public class XMLRPC extends JS {
                 for(i=objects.size() - 1; objects.elementAt(i) != null; i--);
                 JSArray arr = new JSArray();
                 try {
-                    for(int j = i + 1; j<objects.size(); j++) arr.put(new Integer(j - i - 1), objects.elementAt(j));
+                    for(int j = i + 1; j<objects.size(); j++) arr.put(JS.N(j - i - 1), (JS)objects.elementAt(j));
                 } catch (JSExn e) {
                     throw new Error("this should never happen");
                 }
@@ -186,9 +186,10 @@ public class XMLRPC extends JS {
     }
 
     /** Appends the XML-RPC representation of <code>o</code> to <code>sb</code> */
-    void appendObject(Object o, StringBuffer sb) throws JSExn {
-
-        if (o == null) {
+    void appendObject(JS o, StringBuffer sb) throws JSExn {
+        // FIXME: Update for new api
+        throw new Error("FIXME");
+        /*if (o == null) {
             throw new JSExn("attempted to send a null value via XML-RPC");
 
         } else if (o instanceof Number) {
@@ -295,19 +296,19 @@ public class XMLRPC extends JS {
         } else {
             throw new JSExn("attempt to send object of type " + o.getClass().getName() + " via XML-RPC");
 
-        }
+        }*/
     }
 
 
     // Call Sequence //////////////////////////////////////////////////////////////////////////
 
-    public final Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn {
+    public final JS call(JS a0, JS a1, JS a2, JS[] rest, int nargs) throws JSExn {
         JSArray args = new JSArray();
         for(int i=0; i<nargs; i++) args.addElement(i==0?a0:i==1?a1:i==2?a2:rest[i-3]);
         return call(args);
     }
 
-    public final Object call(final JSArray args) throws JSExn {
+    public final JS call(final JSArray args) throws JSExn {
         try {
             final JS.UnpauseCallback callback = JS.pause();
             new java.lang.Thread() { public void run() { call(callback, args); }  }.start();
@@ -328,21 +329,21 @@ public class XMLRPC extends JS {
             BufferedReader br = new BufferedReader(new InputStreamReader(is));
             try {
                 new Helper().parse(br);
-                final Object result = fault ? new JSExn(objects.elementAt(0)) : objects.size() == 0 ? null : objects.elementAt(0);
-                Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(result); }});
+                final JSExn exn = fault ? new JSExn(objects.elementAt(0).toString()) : null;
+                final JS result = fault ? null : objects.size() == 0 ? null : (JS) objects.elementAt(0);
+                Scheduler.add(new Task() { public void perform() throws JSExn { if(fault) callback.unpause(exn); else callback.unpause(result); }});
             } finally {
                 tracker.clear();
                 objects.setSize(0);
             }
         } catch (final JSExn e) {
-            final Exception e2 = e;
-            Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(e2); }});
+            Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(e); }});
         } catch (final IOException e) {
             final Exception e2 = e;
-            Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(new JSExn(e2)); }});
+            Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(new JSExn(e2.toString())); }});
         } catch (final XML.Exn e) {
             final Exception e2 = e;
-            Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(new JSExn(e2)); }});
+            Scheduler.add(new Task() { public void perform() throws JSExn { callback.unpause(new JSExn(e2.toString())); }});
         }
     }
 }