summaryrefslogtreecommitdiff
path: root/swat/apps/qooxdoo-examples/test/RPC_4.html
diff options
context:
space:
mode:
Diffstat (limited to 'swat/apps/qooxdoo-examples/test/RPC_4.html')
-rw-r--r--swat/apps/qooxdoo-examples/test/RPC_4.html470
1 files changed, 470 insertions, 0 deletions
diff --git a/swat/apps/qooxdoo-examples/test/RPC_4.html b/swat/apps/qooxdoo-examples/test/RPC_4.html
new file mode 100644
index 0000000000..52a6f4674e
--- /dev/null
+++ b/swat/apps/qooxdoo-examples/test/RPC_4.html
@@ -0,0 +1,470 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a whole set of functions to test each of the primitive
+ data types. The comparison results should all end with ": true", and
+ the last test generates an Application Error (#1000). No other test
+ generates that error, so receiving it means the complete set of tests
+ was run.
+ </p>
+ <p>
+ These functions all use the asynchronous interface. This is the
+ interface that your applications should use. See the warning in
+ RPC_3.html regarding use of the synchronous interface.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.RemoteExchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service path:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ var mycall = null;
+ var test;
+ var testNum;
+
+ start.addEventListener("execute", function() {
+ var obj;
+ var date;
+ var dataArray;
+
+ /*
+ * Create an array of each of the tests. Each array element is itself
+ * an array of two function: the first to issue the test request, and
+ * the second to validate the result.
+ */
+ var tests =
+ [
+ [
+ function()
+ {
+ test = "getCurrentTimestamp";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: now=" + result.now);
+ layout1.warn("result: jsonDate=" + result.json.toString());
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a number, got " + typeof(result) + ": " + (typeof(result) == "number" && isFinite(result) ? "true" : "false"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, 1);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an integer: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + (typeof(result) == "string"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, "Hello World");
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getNull";
+ layout1.warn("Calling '" + test + "'");
+ var mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + (typeof(result) == "object" && mycall === null ? "true" : "false"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isNull";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, null);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getArrayInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getArrayString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = "Element " + i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getFloat";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a float: " + (typeof(result) == "number"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getObject";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an object: " + (typeof(result) == "object"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isObject";
+ layout1.warn("Calling '" + test + "'");
+ obj = new Object();
+ obj.s = "Hi there.";
+ obj.n = 23;
+ obj.o = new Object();
+ obj.o.s = "This is a test.";
+ mycall = rpc.callAsync(handler, test, obj);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns an object: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, false);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, true);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getTrue";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = true: " + (typeof(result) == "boolean"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getFalse";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = false: " + (typeof(result) == "boolean"));
+ }
+ ],
+
+ [
+ function()
+ {
+ Date.prototype.classname = "Date";
+ date = new Date();
+ test = "getParam";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, date);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a date object, got " + (result.classname == date.classname));
+ layout1.warn("Returns matching time " + date.getTime() + " = " + result.getTime() + " :" + (result.getTime() == date.getTime()));
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array();
+ dataArray[0] = true;
+ dataArray[1] = false;
+ dataArray[2] = 1;
+ dataArray[3] = 1.1;
+ dataArray[4] = "Hello World";
+ dataArray[5] = new Array(5);
+ dataArray[6] = new Object();
+ dataArray[7] = new Date();
+
+ test = "getParams";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4], dataArray[5], dataArray[6], dataArray[7]);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+
+ for (i=0; i< dataArray.length; i++)
+ {
+ layout1.warn("Returned parameter (" + i + ") value '" + result[i] + "' matches '" + dataArray[i] + "': " + (result[i].toString() == dataArray[i].toString()));
+ layout1.warn("Returned parameter (" + i + ") type '" + typeof(result[i]) + "' matches '" + typeof(dataArray[i]) + "': " + (typeof(result[i]) == typeof(dataArray[i])));
+ };
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getError";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ // should never get here; we should receive an exception
+ layout1.warn("ERROR: Should have received an exception! Got: " + result);
+ }
+ ]
+ ];
+
+ /*
+ * This is the generic handler, used by each of the tests. It
+ * ascertains whether an exception occured and alert()s with the
+ * exception if so; otherwise it calls the result validation function
+ * and then starts the next test.
+ */
+ handler = function(result, ex, id) {
+ mycall = null;
+ if (ex !== null) {
+ alert("Async(" + id + ") exception: " + ex);
+ } else {
+ // display results of the completed test
+ tests[testNum][1](result); // [][1] = validate response
+
+ // start the next test
+ ++testNum;
+
+ // Are we done?
+ if (testNum < tests.length) {
+ // Nope. Run the next test.
+ tests[testNum][0]();
+ }
+ }
+ }
+
+ // Determine which transport to use
+ rpc = new qx.io.remote.Rpc(url.getValue(), service.getValue());
+ rpc.setTimeout(10000);
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ // start the first test
+ testNum = 0;
+ tests[testNum][0](); // [][0] = request
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>