Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        Copyright (c) 2004-2006, The Dojo Foundation
        All Rights Reserved.

        Licensed under the Academic Free License version 2.1 or above OR the
        modified BSD license. For more information on Dojo licensing, see:

                http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.rpc.JsonService");
dojo.require("dojo.rpc.RpcService");
dojo.require("dojo.io.*");
dojo.require("dojo.json");
dojo.require("dojo.lang.common");
dojo.rpc.JsonService = function (args) {
        if (args) {
                if (dojo.lang.isString(args)) {
                        this.connect(args);
                } else {
                        if (args["smdUrl"]) {
                                this.connect(args.smdUrl);
                        }
                        if (args["smdStr"]) {
                                this.processSmd(dj_eval("(" + args.smdStr + ")"));
                        }
                        if (args["smdObj"]) {
                                this.processSmd(args.smdObj);
                        }
                        if (args["serviceUrl"]) {
                                this.serviceUrl = args.serviceUrl;
                        }
                        if (typeof args["strictArgChecks"] != "undefined") {
                                this.strictArgChecks = args.strictArgChecks;
                        }
                }
        }
};
dojo.inherits(dojo.rpc.JsonService, dojo.rpc.RpcService);
dojo.extend(dojo.rpc.JsonService, {bustCache:false, contentType:"application/json-rpc", lastSubmissionId:0, callRemote:function (method, params) {
        var deferred = new dojo.Deferred();
        this.bind(method, params, deferred);
        return deferred;
}, bind:function (method, parameters, deferredRequestHandler, url) {
        dojo.io.bind({url:url || this.serviceUrl, postContent:this.createRequest(method, parameters), method:"POST", contentType:this.contentType, mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:this.bustCache});
}, createRequest:function (method, params) {
        var req = {"params":params, "method":method, "id":++this.lastSubmissionId};
        var data = dojo.json.serialize(req);
        dojo.debug("JsonService: JSON-RPC Request: " + data);
        return data;
}, parseResults:function (obj) {
        if (!obj) {
                return;
        }
        if (obj["Result"] != null) {
                return obj["Result"];
        } else {
                if (obj["result"] != null) {
                        return obj["result"];
                } else {
                        if (obj["ResultSet"]) {
                                return obj["ResultSet"];
                        } else {
                                return obj;
                        }
                }
        }
}});