//>>built
define("dojox/wire/ml/Invocation",["dojo","dijit","dojox","dojo/require!dojox/wire/ml/Action"],function(_1,_2,_3){
_1.provide("dojox.wire.ml.Invocation");
_1.require("dojox.wire.ml.Action");
_1.declare("dojox.wire.ml.Invocation",_3.wire.ml.Action,{object:"",method:"",topic:"",parameters:"",result:"",error:"",_run:function(){
if(this.topic){
var _4=this._getParameters(arguments);
try{
_1.publish(this.topic,_4);
this.onComplete();
}
catch(e){
this.onError(e);
}
}else{
if(this.method){
var _5=(this.object?_3.wire.ml._getValue(this.object):_1.global);
if(!_5){
return;
}
var _4=this._getParameters(arguments);
var _6=_5[this.method];
if(!_6){
_6=_5.callMethod;
if(!_6){
return;
}
_4=[this.method,_4];
}
try{
var _7=false;
if(_5.getFeatures){
var _8=_5.getFeatures();
if((this.method=="fetch"&&_8["dojo.data.api.Read"])||(this.method=="save"&&_8["dojo.data.api.Write"])){
var _9=_4[0];
if(!_9.onComplete){
_9.onComplete=function(){
};
}
this.connect(_9,"onComplete","onComplete");
if(!_9.onError){
_9.onError=function(){
};
}
this.connect(_9,"onError","onError");
_7=true;
}
}
var r=_6.apply(_5,_4);
if(!_7){
if(r&&(r instanceof _1.Deferred)){
var _a=this;
r.addCallbacks(function(_b){
_a.onComplete(_b);
},function(_c){
_a.onError(_c);
});
}else{
this.onComplete(r);
}
}
}
catch(e){
this.onError(e);
}
}
}
},onComplete:function(_d){
if(this.result){
_3.wire.ml._setValue(this.result,_d);
}
if(this.error){
_3.wire.ml._setValue(this.error,"");
}
},onError:function(_e){
if(this.error){
if(_e&&_e.message){
_e=_e.message;
}
_3.wire.ml._setValue(this.error,_e);
}
},_getParameters:function(_f){
if(!this.parameters){
return _f;
}
var _10=[];
var _11=this.parameters.split(",");
if(_11.length==1){
var _12=_3.wire.ml._getValue(_1.trim(_11[0]),_f);
if(_1.isArray(_12)){
_10=_12;
}else{
_10.push(_12);
}
}else{
for(var i in _11){
_10.push(_3.wire.ml._getValue(_1.trim(_11[i]),_f));
}
}
return _10;
}});
});
