From: megacz Date: Fri, 30 Jan 2004 07:42:46 +0000 (+0000) Subject: 2003/12/13 00:38:34 X-Git-Tag: RC3~273 X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=commitdiff_plain;h=565aae615b34b3fa4d61a72d93b651ff648eb3c3 2003/12/13 00:38:34 darcs-hash:20040130074246-2ba56-a447ebd143b45bfc192e25f868a67774be865566.gz --- diff --git a/src/org/xwt/SOAP.java b/src/org/xwt/SOAP.java index 4d5a642..104e11d 100644 --- a/src/org/xwt/SOAP.java +++ b/src/org/xwt/SOAP.java @@ -19,15 +19,15 @@ import org.bouncycastle.util.encoders.Base64; *
  • WSDL support * */ -class SOAP extends XMLRPC { - - /** the desired content of the SOAPAction header */ +class SOAP /*extends XMLRPC*/ { + /* + /&* the desired content of the SOAPAction header &/ String action = null; - /** the namespace to use */ + /&* the namespace to use &/ String nameSpace = null; - /** When you get a property from an SOAP, it just returns another SOAP with the property name tacked onto methodname. */ + /&* When you get a property from an SOAP, it just returns another SOAP with the property name tacked onto methodname. &/ public Object get(String name) { return new SOAP(url.toString(), (methodname.equals("") ? "" : methodname + ".") + name, http, action, nameSpace); } @@ -163,7 +163,7 @@ class SOAP extends XMLRPC { } - /** Appends the SOAP representation of o to sb */ + /&* Appends the SOAP representation of o to sb &/ void appendObject(String name, Object o, StringBuffer sb) throws JSExn { if (o instanceof Number) { if ((double)((Number)o).intValue() == ((Number)o).doubleValue()) { @@ -276,5 +276,5 @@ class SOAP extends XMLRPC { this.action = action; this.nameSpace = nameSpace; } - +*/ } diff --git a/src/org/xwt/XMLRPC.java b/src/org/xwt/XMLRPC.java index 4d541fd..0bdca37 100644 --- a/src/org/xwt/XMLRPC.java +++ b/src/org/xwt/XMLRPC.java @@ -32,17 +32,19 @@ import org.bouncycastle.util.encoders.Base64; */ class XMLRPC extends JS { - /** the url to connect to */ - protected String url = null; + public XMLRPC(String url, String method) { this(url, method, new HTTP(url)); } + public XMLRPC(String url, String method, HTTP http) { this.http = http; this.url = url; this.method = method; } + public Object get(Object name) { return new XMLRPC(url, (method.equals("") ? "" : method + ".") + name.toString(), http); } - /** the method name to invoke on the remove server */ - protected String methodname = null; /** this holds character content as we read it in -- since there is only one per instance, we don't support mixed content */ protected AccessibleCharArrayWriter content = new AccessibleCharArrayWriter(100); + protected String url = null; ///< the url to connect to + protected String method = null; ///< the method name to invoke on the remove server + protected HTTP http = null; ///< the HTTP connection to use + private Hash tracker; ///< used to detect multi-ref data + protected boolean fault = false; ///< True iff the return value is a fault (and should be thrown as an exception) - /** the HTTP connection to use */ - protected HTTP http = null; /** The object stack. As we process xml elements, pieces of the * return value are pushed onto and popped off of this stack. @@ -67,14 +69,8 @@ class XMLRPC extends JS { */ protected Vec objects = null; - /** used to detect multi-ref data */ - private Hash tracker; - /** True iff the return value is a fault (and should be thrown as an exception) */ - protected boolean fault = false; - - - // Methods to Recieve and parse XML-RPC Response //////////////////////////////////////////////////// + // Recieve //////////////////////////////////////////////////////////////// private class Helper extends XML { public Helper() { super(BUFFER_SIZE); } @@ -162,7 +158,26 @@ class XMLRPC extends JS { public void whitespace(char[] ch, int start, int length) {} } - // Methods to make outbound XML-RPC request /////////////////////////////////////////////////// + // Send /////////////////////////////////////////////////////////////////////////// + + protected String buildRequest(JSArray args) throws JSExn, IOException { + StringBuffer content = new StringBuffer(); + content.append("\r\n"); + content.append("\n"); + content.append(" \n"); + content.append(" "); + content.append(method); + content.append("\n"); + content.append(" \n"); + for(int i=0; i\n"); + appendObject(args.elementAt(i), content); + content.append(" \n"); + } + content.append(" \n"); + content.append(" "); + return content.toString(); + } /** Appends the XML-RPC representation of o to sb */ void appendObject(Object o, StringBuffer sb) throws JSExn { @@ -277,142 +292,53 @@ class XMLRPC extends JS { } } - public Object call_(JSArray args) throws JSExn, IOException { - if (Log.verbose) Log.log(this, "call to " + url + " : " + methodname); - - if (tracker == null) tracker = new Hash(); - else tracker.clear(); - - if (objects == null) objects = new Vec(); - else objects.setSize(0); - - final String content = send(args, http); - if (Log.verbose) { - String s; - BufferedReader br2 = new BufferedReader(new StringReader(content)); - while ((s = br2.readLine()) != null) Log.log(this, "send: " + s); - } - - InputStream is = http.POST("text/xml", content); - try { - BufferedReader br = !Log.verbose ? - new BufferedReader(new InputStreamReader(is)) : - new BufferedReader(new FilterReader(new InputStreamReader(is)) { - public int read() throws IOException { - int i = super.read(); - if (Log.on) Log.log(this, "recv: " + ((char)i)); - return i; - } - public int read(char[] c, int off, int len) throws IOException { - int ret = super.read(c, off, len); - if (ret == -1) return ret; - String s; - BufferedReader br2 = new BufferedReader(new StringReader(new String(c, off, ret))); - while ((s = br2.readLine()) != null) Log.log(this, "recv: " + s); - return ret; - } - }); - return null; - } finally { - is.close(); - } - } - protected String send(JSArray args, HTTP http) throws JSExn, IOException { - StringBuffer content = new StringBuffer(); - content.append("\r\n"); - content.append("\n"); - content.append(" \n"); - content.append(" "); - content.append(methodname); - content.append("\n"); - content.append(" \n"); - for(int i=0; i\n"); - appendObject(args.elementAt(i), content); - content.append(" \n"); - } - content.append(" \n"); - content.append(" "); - return content.toString(); - } - - protected Object recieve(BufferedReader br) throws JSExn, IOException { - // parse XML reply - try { - new Helper().parse(br); - } catch (XML.XMLException e) { - if (Log.on) Log.log(this, "reply from server was not well-formed XML: " + e); - throw new JSExn("reply from server was not well-formed XML: " + e); - } - - if (fault) throw new JSExn(objects.elementAt(0)); - if (objects.size() == 0) return null; - return objects.elementAt(0); - } + // Call Sequence ////////////////////////////////////////////////////////////////////////// public final Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn { JSArray args = new JSArray(); for(int i=0; i