a:39:{s:9:"#provides";s:21:"dojox.wire.ml.Service";s:9:"#resource";s:18:"wire/ml/Service.js";s:9:"#requires";a:4:{i:0;a:3:{i:0;s:6:"common";i:1;s:13:"dijit._Widget";i:2;s:5:"dijit";}i:1;a:2:{i:0;s:6:"common";i:1;s:16:"dojox.xml.parser";}i:2;a:2:{i:0;s:6:"common";i:1;s:16:"dojox.wire._base";}i:3;a:2:{i:0;s:6:"common";i:1;s:18:"dojox.wire.ml.util";}}s:21:"dojox.wire.ml.Service";a:5:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dijit._Widget";}s:4:"call";a:1:{i:0;s:13:"dijit._Widget";}}s:7:"summary";s:22:"A widget for a service";s:11:"description";s:189:"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.";s:9:"classlike";b:1;}s:25:"dojox.wire.ml.Service.url";a:3:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:1:"A";s:7:"summary";s:28:"URL to a service description";}s:32:"dojox.wire.ml.Service.serviceUrl";a:4:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:8:"instance";s:21:"dojox.wire.ml.Service";s:4:"type";s:1:"A";s:7:"summary";s:16:"URL to a service";}s:33:"dojox.wire.ml.Service.serviceType";a:3:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:1:"A";s:7:"summary";s:12:"service type";}s:34:"dojox.wire.ml.Service.handlerClass";a:3:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:1:"A";s:7:"summary";s:26:"service handler class name";}s:34:"dojox.wire.ml.Service.preventCache";a:2:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:7:"summary";s:0:"";}s:32:"dojox.wire.ml.Service.postCreate";a:5:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:8:"Function";s:6:"source";s:39:"		this.handler = this._createHandler();";s:7:"summary";s:21:"Call _createHandler()";s:11:"description";s:21:"See _createHandler().";}s:37:"dojox.wire.ml.Service._handlerClasses";a:4:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:6:"Object";s:7:"private";b:1;s:7:"summary";s:0:"";}s:36:"dojox.wire.ml.Service._createHandler";a:7:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:8:"Function";s:6:"source";s:1050:"		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";s:7:"summary";s:184:"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";s:14:"return_summary";s:17:"A service handler";s:7:"returns";s:11:"null|Object";s:7:"private";b:1;}s:32:"dojox.wire.ml.Service.callMethod";a:5:{s:9:"prototype";s:21:"dojox.wire.ml.Service";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:6:"method";a:2:{s:4:"type";s:1:"A";s:7:"summary";s:11:"method name";}s:10:"parameters";a:2:{s:4:"type";s:2:"An";s:7:"summary";s:16:"array parameters";}}s:6:"source";s:124:"		var deferred = new dojo.Deferred();
		this.handler.bind(method, parameters, deferred, this.serviceUrl);
		return deferred;";s:7:"summary";s:37:"Call a service method with parameters";}s:29:"dojox.wire.ml.Service.handler";a:2:{s:8:"instance";s:21:"dojox.wire.ml.Service";s:7:"summary";s:0:"";}s:42:"dojox.wire.ml.Service._handlerClasses.TEXT";a:2:{s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:41:"dojox.wire.ml.Service._handlerClasses.XML";a:2:{s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:42:"dojox.wire.ml.Service._handlerClasses.JSON";a:2:{s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:46:"dojox.wire.ml.Service._handlerClasses.JSON-RPC";a:2:{s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:25:"dojox.wire.ml.RestHandler";a:4:{s:4:"type";s:8:"Function";s:7:"summary";s:22:"A REST service handler";s:11:"description";s:131:"This class serves as a base REST service.
Sub-classes may override _getContent() and _getResult() to handle
specific content types.";s:9:"classlike";b:1;}s:37:"dojox.wire.ml.RestHandler.contentType";a:2:{s:9:"prototype";s:25:"dojox.wire.ml.RestHandler";s:7:"summary";s:0:"";}s:34:"dojox.wire.ml.RestHandler.handleAs";a:2:{s:9:"prototype";s:25:"dojox.wire.ml.RestHandler";s:7:"summary";s:0:"";}s:30:"dojox.wire.ml.RestHandler.bind";a:6:{s:9:"prototype";s:25:"dojox.wire.ml.RestHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:4:{s:6:"method";a:2:{s:4:"type";s:1:"A";s:7:"summary";s:11:"method name";}s:10:"parameters";a:2:{s:4:"type";s:2:"An";s:7:"summary";s:19:"array of parameters";}s:8:"deferred";a:2:{s:4:"type";s:8:"Deferred";s:7:"summary";s:0:"";}s:3:"url";a:2:{s:4:"type";s:1:"A";s:7:"summary";s:18:"URL for the method";}}s:6:"source";s:729:"		method = method.toUpperCase();
		var self = this;
		var args = {
			url: this._getUrl(method, parameters, url),
			contentType: this.contentType,
			handleAs: this.handleAs,
			headers: this.headers,
			preventCache: this.preventCache
		};
		var d = null;
		if(method == "POST"){
			args.postData = this._getContent(method, parameters);
			d = dojo.rawXhrPost(args);
		}else if(method == "PUT"){
			args.putData = this._getContent(method, parameters);
			d = dojo.rawXhrPut(args);
		}else if(method == "DELETE"){
			d = dojo.xhrDelete(args);
		}else{ // "GET"
			d = dojo.xhrGet(args);
		}
		d.addCallbacks(function(result){
			deferred.callback(self._getResult(result));
		}, function(error){
			deferred.errback(error);
		});";s:7:"summary";s:38:"Call a service method with parameters.";s:11:"description";s:245:"A service is called with a URL generated by _getUrl() and
an HTTP method specified with 'method'.
For "POST" and "PUT", a content is generated by _getContent().
When data is loaded, _getResult() is used to pass the result to
Deferred.callback().";}s:33:"dojox.wire.ml.RestHandler._getUrl";a:9:{s:9:"prototype";s:25:"dojox.wire.ml.RestHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:6:"method";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:13:"A method name";}s:10:"parameters";a:2:{s:4:"type";s:5:"Array";s:7:"summary";s:22:"An array of parameters";}s:3:"url";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:10:"A base URL";}}s:6:"source";s:804:"		var query;
		if(method == "GET" || method == "DELETE"){
			if(parameters.length > 0){
				query = parameters[0];
			}
		}else{ // "POST" || "PUT"
			if(parameters.length > 1){
				query = parameters[1];
			}
		}
		if(query){
			var queryString = "";
			for(var name in query){
				var value = query[name];
				if(value){
					value = encodeURIComponent(value);
					var variable = "{" + name + "}";
					var index = url.indexOf(variable);
					if(index >= 0){ // encode in path
						url = url.substring(0, index) + value + url.substring(index + variable.length);
					}else{ // encode as query string
						if(queryString){
							queryString += "&";
						}
						queryString += (name + "=" + value);
					}
				}
			}
			if(queryString){
				url += "?" + queryString;
			}
		}
		return url; //String";s:7:"summary";s:14:"Generate a URL";s:11:"description";s:276:"If 'method' is "GET" or "DELETE", a query string is generated
from a query object specified to the first parameter in
'parameters' and appended to 'url'.
If 'url' contains variable seguments ("{parameter_name}"),
they are replaced with corresponding parameter values, instead.";s:14:"return_summary";s:5:"A URL";s:7:"returns";s:6:"String";s:7:"private";b:1;}s:37:"dojox.wire.ml.RestHandler._getContent";a:9:{s:9:"prototype";s:25:"dojox.wire.ml.RestHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:6:"method";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:13:"A method name";}s:10:"parameters";a:2:{s:4:"type";s:5:"Array";s:7:"summary";s:22:"An array of parameters";}}s:6:"source";s:136:"		if(method == "POST" || method == "PUT"){
			return (parameters ? parameters[0] : null); //anything
		}else{
			return null; //null
		}";s:7:"summary";s:26:"Generate a request content";s:11:"description";s:80:"If 'method' is "POST" or "PUT", the first parameter in
'parameters' is returned.";s:14:"return_summary";s:17:"A request content";s:7:"returns";s:13:"anything|null";s:7:"private";b:1;}s:36:"dojox.wire.ml.RestHandler._getResult";a:9:{s:9:"prototype";s:25:"dojox.wire.ml.RestHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:2:{s:4:"type";s:8:"anything";s:7:"summary";s:37:"A response data returned by a service";}}s:6:"source";s:25:"		return data; //anything";s:7:"summary";s:16:"Extract a result";s:11:"description";s:34:"A response data is returned as is.";s:14:"return_summary";s:15:"A result object";s:7:"returns";s:8:"anything";s:7:"private";b:1;}s:24:"dojox.wire.ml.XmlHandler";a:5:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:25:"dojox.wire.ml.RestHandler";}s:4:"call";a:1:{i:0;s:25:"dojox.wire.ml.RestHandler";}}s:7:"summary";s:30:"A REST service handler for XML";s:11:"description";s:52:"This class provides XML handling for a REST service.";s:9:"classlike";b:1;}s:36:"dojox.wire.ml.XmlHandler.contentType";a:2:{s:9:"prototype";s:24:"dojox.wire.ml.XmlHandler";s:7:"summary";s:0:"";}s:33:"dojox.wire.ml.XmlHandler.handleAs";a:2:{s:9:"prototype";s:24:"dojox.wire.ml.XmlHandler";s:7:"summary";s:0:"";}s:36:"dojox.wire.ml.XmlHandler._getContent";a:8:{s:9:"prototype";s:24:"dojox.wire.ml.XmlHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:6:"method";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:13:"A method name";}s:10:"parameters";a:2:{s:4:"type";s:5:"Array";s:7:"summary";s:22:"An array of parameters";}}s:6:"source";s:538:"		var content = null;
		if(method == "POST" || method == "PUT"){
			var p = parameters[0];
			if(p){
				if(dojo.isString(p)){
					content = p;
				}else{
					var element = p;
					if(element instanceof dojox.wire.ml.XmlElement){
						element = element.element;
					}else if(element.nodeType === 9 /* DOCUMENT_NODE */){
						element = element.documentElement;
					}
					var declaration = "<?xml version=\"1.0\"?>"; // TODO: encoding?
					content = declaration + dojox.xml.parser.innerXML(element);
				}
			}
		}
		return content;";s:11:"description";s:103:"If 'method' is "POST" or "PUT", the first parameter in
'parameters' is used to generate an XML content.";s:14:"return_summary";s:17:"A request content";s:7:"private";b:1;s:7:"summary";s:0:"";}s:35:"dojox.wire.ml.XmlHandler._getResult";a:8:{s:9:"prototype";s:24:"dojox.wire.ml.XmlHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:2:{s:4:"type";s:8:"Document";s:7:"summary";s:37:"A response data returned by a service";}}s:6:"source";s:76:"		if(data){
			data = new dojox.wire.ml.XmlElement(data);
		}
		return data;";s:7:"summary";s:16:"Extract a result";s:11:"description";s:67:"A response data (XML Document) is returned wrapped with
XmlElement.";s:14:"return_summary";s:15:"A result object";s:7:"private";b:1;}s:25:"dojox.wire.ml.JsonHandler";a:5:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:25:"dojox.wire.ml.RestHandler";}s:4:"call";a:1:{i:0;s:25:"dojox.wire.ml.RestHandler";}}s:7:"summary";s:31:"A REST service handler for JSON";s:11:"description";s:53:"This class provides JSON handling for a REST service.";s:9:"classlike";b:1;}s:37:"dojox.wire.ml.JsonHandler.contentType";a:2:{s:9:"prototype";s:25:"dojox.wire.ml.JsonHandler";s:7:"summary";s:0:"";}s:34:"dojox.wire.ml.JsonHandler.handleAs";a:2:{s:9:"prototype";s:25:"dojox.wire.ml.JsonHandler";s:7:"summary";s:0:"";}s:33:"dojox.wire.ml.JsonHandler.headers";a:3:{s:9:"prototype";s:25:"dojox.wire.ml.JsonHandler";s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:37:"dojox.wire.ml.JsonHandler._getContent";a:9:{s:9:"prototype";s:25:"dojox.wire.ml.JsonHandler";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:6:"method";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:13:"A method name";}s:10:"parameters";a:2:{s:4:"type";s:5:"Array";s:7:"summary";s:22:"An array of parameters";}}s:6:"source";s:255:"		var content = null;
		if(method == "POST" || method == "PUT"){
			var p = (parameters ? parameters[0] : undefined);
			if(p){
				if(dojo.isString(p)){
					content = p;
				}else{
					content = dojo.toJson(p);
				}
			}
		}
		return content; //String";s:7:"summary";s:26:"Generate a request content";s:11:"description";s:102:"If 'method' is "POST" or "PUT", the first parameter in
'parameter' is used to generate a JSON content.";s:14:"return_summary";s:17:"A request content";s:7:"returns";s:6:"String";s:7:"private";b:1;}s:40:"dojox.wire.ml.JsonHandler.headers.Accept";a:1:{s:7:"summary";s:0:"";}s:13:"dojox.wire.ml";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:10:"dojox.wire";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:5:"dojox";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}