123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // wrapped by build app
- define("dojox/wire/ml/Service", ["dijit","dojo","dojox","dojo/require!dijit/_Widget,dojox/xml/parser,dojox/wire/_base,dojox/wire/ml/util"], function(dijit,dojo,dojox){
- dojo.provide("dojox.wire.ml.Service");
- dojo.require("dijit._Widget");
- dojo.require("dojox.xml.parser");
- dojo.require("dojox.wire._base");
- dojo.require("dojox.wire.ml.util");
- dojo.declare("dojox.wire.ml.Service", dijit._Widget, {
- // summary:
- // A widget for a service
- // description:
- // This widget represents a service defined by a service description
- // specified with 'url' attribute.
- // If 'serviceType' and 'serviceUrl' attributes are specified, 'url'
- // attribute can be omitted.
- // url:
- // A URL to a service description
- // serviceUrl:
- // A URL to a service
- // serviceType:
- // A service type
- // handlerClass:
- // A service handler class name
- url: "",
- serviceUrl: "",
- serviceType: "",
- handlerClass: "",
- preventCache: true,
- postCreate: function(){
- // summary:
- // Call _createHandler()
- // description:
- // See _createHandler().
- this.handler = this._createHandler();
- },
- _handlerClasses: {
- "TEXT": "dojox.wire.ml.RestHandler",
- "XML": "dojox.wire.ml.XmlHandler",
- "JSON": "dojox.wire.ml.JsonHandler",
- "JSON-RPC": "dojo.rpc.JsonService"
- },
- _createHandler: function(){
- // summary:
- // Create a service handler
- // desription:
- // A service handler class is determined by:
- // 1. 'handlerClass' attribute
- // 2. 'serviceType' attribute
- // 3. 'serviceType' property in a service description
- // returns:
- // A service handler
- if(this.url){
- var self = this;
- var d = dojo.xhrGet({
- url: this.url,
- handleAs: "json",
- sync: true
- });
- d.addCallback(function(result){
- self.smd = result;
- });
- if(this.smd && !this.serviceUrl){
- this.serviceUrl = (this.smd.serviceUrl || this.smd.serviceURL);
- }
- }
- var handlerClass = undefined;
- if(this.handlerClass){
- handlerClass = dojox.wire._getClass(this.handlerClass);
- }else if(this.serviceType){
- handlerClass = this._handlerClasses[this.serviceType];
- if(handlerClass && dojo.isString(handlerClass)){
- handlerClass = dojox.wire._getClass(handlerClass);
- this._handlerClasses[this.serviceType] = handlerClass;
- }
- }else if(this.smd && this.smd.serviceType){
- handlerClass = this._handlerClasses[this.smd.serviceType];
- if(handlerClass && dojo.isString(handlerClass)){
- handlerClass = dojox.wire._getClass(handlerClass);
- this._handlerClasses[this.smd.serviceType] = handlerClass;
- }
- }
- if(!handlerClass){
- return null; //null
- }
- return new handlerClass(); //Object
- },
- callMethod: function(method, parameters){
- // summary:
- // Call a service method with parameters
- // method:
- // A method name
- // parameters:
- // An array parameters
- var deferred = new dojo.Deferred();
- this.handler.bind(method, parameters, deferred, this.serviceUrl);
- return deferred;
- }
- });
- });
|