//>>built
define("dojox/wire/ml/Service",["dijit","dojo","dojox","dojo/require!dijit/_Widget,dojox/xml/parser,dojox/wire/_base,dojox/wire/ml/util"],function(_1,_2,_3){_2.provide("dojox.wire.ml.Service");_2.require("dijit._Widget");_2.require("dojox.xml.parser");_2.require("dojox.wire._base");_2.require("dojox.wire.ml.util");_2.declare("dojox.wire.ml.Service",_1._Widget,{url:"",serviceUrl:"",serviceType:"",handlerClass:"",preventCache:true,postCreate:function(){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(){if(this.url){var _4=this;var d=_2.xhrGet({url:this.url,handleAs:"json",sync:true});d.addCallback(function(_5){_4.smd=_5;});if(this.smd&&!this.serviceUrl){this.serviceUrl=(this.smd.serviceUrl||this.smd.serviceURL);}}var _6=undefined;if(this.handlerClass){_6=_3.wire._getClass(this.handlerClass);}else{if(this.serviceType){_6=this._handlerClasses[this.serviceType];if(_6&&_2.isString(_6)){_6=_3.wire._getClass(_6);this._handlerClasses[this.serviceType]=_6;}}else{if(this.smd&&this.smd.serviceType){_6=this._handlerClasses[this.smd.serviceType];if(_6&&_2.isString(_6)){_6=_3.wire._getClass(_6);this._handlerClasses[this.smd.serviceType]=_6;}}}}if(!_6){return null;}return new _6();},callMethod:function(_7,_8){var _9=new _2.Deferred();this.handler.bind(_7,_8,_9,this.serviceUrl);return _9;}});});