// Methods to Recieve and parse XML-RPC Response ////////////////////////////////////////////////////
public void startElement(String name, String[] keys, Object[] vals, int line, int col) {
+ 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);
}
sb.append("</string></value>\n");
+ } else if (o instanceof NativeDate) {
+ sb.append(" <value><dateTime.iso8601>");
+ NativeDate nd = (NativeDate)o;
+ Date d = new Date(nd.getRawTime());
+ sb.append(d.getYear() + 1900);
+ if (d.getMonth() + 1 < 10) sb.append('0');
+ sb.append(d.getMonth() + 1);
+ if (d.getDate() < 10) sb.append('0');
+ sb.append(d.getDate());
+ sb.append('T');
+ if (d.getHours() < 10) sb.append('0');
+ sb.append(d.getHours());
+ sb.append(':');
+ if (d.getMinutes() < 10) sb.append('0');
+ sb.append(d.getMinutes());
+ sb.append(':');
+ if (d.getSeconds() < 10) sb.append('0');
+ sb.append(d.getSeconds());
+ sb.append("</dateTime.iso8601></value>\n");
+
} else if (o instanceof NativeArray) {
if (tracker.get(o) != null) throw new JavaScriptException("attempted to send multi-ref data structure via XML-RPC");
tracker.put(o, Boolean.TRUE);
content.append(" <methodName>");
content.append(methodname);
content.append("</methodName>\n");
- if (args.length > 0) {
- content.append(" <params>\n");
- for(int i=0; i<args.length; i++) {
- content.append(" <param>\n");
- appendObject(args[i], content);
- content.append(" </param>\n");
- }
- content.append(" </params>\n");
+ content.append(" <params>\n");
+ for(int i=0; i<args.length; i++) {
+ content.append(" <param>\n");
+ appendObject(args[i], content);
+ content.append(" </param>\n");
}
+ content.append(" </params>\n");
content.append(" </methodCall>");
return content.toString();
}
public Filter(InputStream is) { super(is); }
public int read() throws IOException {
Thread.yield();
- while(MessageQueue.working) try { Thread.sleep(100); } catch (Exception e) { };
+ while(MessageQueue.nonThreadEventsInQueue > 0) try { Thread.sleep(100); } catch (Exception e) { };
return super.read();
}
public int read(byte[] b) throws IOException {
Thread.yield();
- while(MessageQueue.working) try { Thread.sleep(100); } catch (Exception e) { };
+ while(MessageQueue.nonThreadEventsInQueue > 0) try { Thread.sleep(100); } catch (Exception e) { };
return super.read(b);
}
public int read(byte[] b, int i, int j) throws IOException {
Thread.yield();
- while(MessageQueue.working) try { Thread.sleep(100); } catch (Exception e) { };
+ while(MessageQueue.nonThreadEventsInQueue > 0) try { Thread.sleep(100); } catch (Exception e) { };
return super.read(b, i, j);
}
}