1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>qooxdoo » 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 remote function getParams(), passing a defined field in
an object, and an undefined field in an object. Depending on the
setting of qx.core.Settings.jsonEncodeUndefined, the undefined field
should or should not be sent. We also send some (ignored) server data
in this test, if requested.
</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 encodeUndefined = new qx.ui.form.CheckBox("Encode 'undefined' as null");
layout1.add(encodeUndefined);
var sendServerData = new qx.ui.form.CheckBox("Send server data");
layout1.add(sendServerData);
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:"));
var service = new qx.ui.form.TextField("qooxdoo.test");
layout1.add(service);
var start = new qx.ui.form.Button("Start test");
layout1.add(start);
// We'll be setting url and service upon execute; no need to do it now.
var rpc = new qx.io.remote.Rpc();
rpc.setTimeout(10000);
var mycall = null;
start.addEventListener("execute", function() {
// Allow the user to reset the URL and Service on each call
rpc.setUrl(url.getValue());
rpc.setServiceName(service.getValue());
rpc.setCrossDomain(false);
if (sendServerData.isChecked()) {
rpc.setServerData(new Date());
} else {
rpc.setServerData(undefined);
}
qx.Settings.setCustomOfClass("qx.io.Json", "encodeUndefined",
encodeUndefined.isChecked());
try {
obj = new Object();
obj.def = "defined";
var result = rpc.callSync("getParams", obj.undef, obj.def);
alert("Sync result: " + result);
} catch (ex) {
alert("Sync exception: " + ex);
}
});
var d = qx.ui.core.ClientDocument.getInstance();
d.add(layout1);
});
</script>
</body>
</html>
|