// Methods to Recieve and parse XML-RPC Response ////////////////////////////////////////////////////
- public void startElement(String name, String[] keys, Object[] vals, int line, int col) {
+ public void startElement(XML.Element c) {
content.reset();
- if (name.equals("fault")) fault = true;
- else if (name.equals("struct")) objects.setElementAt(new JSObject(false), objects.size() - 1);
- else if (name.equals("array")) objects.setElementAt(null, objects.size() - 1);
- else if (name.equals("value")) objects.addElement("");
+ if (c.localName.equals("fault")) fault = true;
+ else if (c.localName.equals("struct")) objects.setElementAt(new JSObject(false), objects.size() - 1);
+ else if (c.localName.equals("array")) objects.setElementAt(null, objects.size() - 1);
+ else if (c.localName.equals("value")) objects.addElement("");
}
- public void endElement(String name, int line, int col) {
+ public void endElement(XML.Element c) {
- if (name.equals("int") || name.equals("i4"))
+ if (c.localName.equals("int") || c.localName.equals("i4"))
objects.setElementAt(new Integer(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
- else if (name.equals("boolean"))
+ else if (c.localName.equals("boolean"))
objects.setElementAt(content.getBuf()[0] == '1' ? Boolean.TRUE : Boolean.FALSE, objects.size() - 1);
- else if (name.equals("string"))
+ else if (c.localName.equals("string"))
objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
- else if (name.equals("double"))
+ else if (c.localName.equals("double"))
objects.setElementAt(new Double(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
- else if (name.equals("base64"))
+ else if (c.localName.equals("base64"))
objects.setElementAt(new ByteStream(Base64.decode(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
- else if (name.equals("name"))
+ else if (c.localName.equals("name"))
objects.addElement(new String(content.getBuf(), 0, content.size()));
- else if (name.equals("value") && "".equals(objects.lastElement()))
+ else if (c.localName.equals("value") && "".equals(objects.lastElement()))
objects.setElementAt(new String(content.getBuf(), 0, content.size()), objects.size() - 1);
- else if (name.equals("dateTime.iso8601")) {
+ else if (c.localName.equals("dateTime.iso8601")) {
String s = new String(content.getBuf(), 0, content.size());
// strip whitespace
if (Log.on) Log.log(this, e);
}
- } else if (name.equals("member")) {
+ } else if (c.localName.equals("member")) {
Object memberValue = objects.elementAt(objects.size() - 1);
String memberName = (String)objects.elementAt(objects.size() - 2);
Scriptable struct = (Scriptable)objects.elementAt(objects.size() - 3);
struct.put(memberName, struct, memberValue);
objects.setSize(objects.size() - 2);
- } else if (name.equals("data")) {
+ } else if (c.localName.equals("data")) {
int i;
for(i=objects.size() - 1; objects.elementAt(i) != null; i--);
Object[] arr = new Object[objects.size() - i - 1];
content.reset();
}
- public void content(char[] ch, int start, int length, int line, int col) {
+ public void characters(char[] ch, int start, int length) {
try { content.write(ch, start, length); }
catch (Exception e) {
if (Log.on) Log.log(this, "Exception in XMLRPC.content() -- this should never happen");
}
}
+ public void whitespace(char[] ch, int start, int length) {}
// Methods to make outbound XML-RPC request ///////////////////////////////////////////////////
// parse XML reply
try {
parse(br);
- } catch (XML.SAXException e) {
+ } catch (XML.XMLException e) {
if (Log.on) Log.log(this, "reply from server was not well-formed XML: " + e);
throw new JavaScriptException("reply from server was not well-formed XML: " + e);
}
}
public XMLRPC(String url, String methodname, HTTP http) {
+ super(BUFFER_SIZE);
+
this.http = http;
this.url = url;
this.methodname = methodname;