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());
"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");
}
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");
}
}
/** 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) {
} 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();
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())); }});
}
}
}