summaryrefslogtreecommitdiff
path: root/swat/apps/qooxdoo-examples/test/RPC_5.html
blob: 6e31ed60b2d86098d5924354e09b16f87c28e3a3 (plain)
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 &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 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>