[seam-commits] Seam SVN: r11905 - modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Sun Jan 3 18:15:01 EST 2010


Author: shane.bryzak at jboss.com
Date: 2010-01-03 18:15:01 -0500 (Sun, 03 Jan 2010)
New Revision: 11905

Modified:
   modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js
Log:
callbacks should be call-scoped


Modified: modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js
===================================================================
--- modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js	2010-01-03 23:01:06 UTC (rev 11904)
+++ modules/remoting/trunk/src/main/resources/org/jboss/seam/remoting/remote.js	2010-01-03 23:15:01 UTC (rev 11905)
@@ -572,7 +572,7 @@
   var b = cn(call.response.documentElement, "body");
   if (b) {
     var n = cn(b, "model");
-    if (call.model) call.model.processExpandResponse(n, call.refId, call.property);
+    if (call.model) call.model.processExpandResponse(n, call.refId, call.property, call.callback);
   }
 }
 
@@ -582,7 +582,7 @@
   var b = cn(call.response.documentElement, "body");
   if (b) {
     var n = cn(b, "model");
-    if (call.model) call.model.processResponse(n);  
+    if (call.model) call.model.processResponse(n, call.callback);  
   }
 }
 
@@ -911,7 +911,6 @@
   this.values = [];
   this.sourceRefs = [];
   this.workingRefs = [];
-  this.callback = null;
 
   Seam.Model.prototype.addExpression = function(alias, expr) {
     this.expressions.push({alias: alias, expr: expr});
@@ -948,15 +947,14 @@
     this.beans.push({alias: alias, bean: bean, property: property, qualifiers: q});
   }
 
-  Seam.Model.prototype.fetch = function(action, callback) {
-    this.callback = callback;
-    var r = this.createFetchRequest(action);
+  Seam.Model.prototype.fetch = function(action, cb) {
+    var r = this.createFetchRequest(action, cb);
     var env = Seam.createEnvelope(Seam.createHeader(r.id), r.data);
     Seam.pendingCalls.put(r.id, r);
     Seam.sendAjaxRequest(env, Seam.PATH_MODEL, Seam.processResponse, false);
   }
 
-  Seam.Model.prototype.createFetchRequest = function(a) {
+  Seam.Model.prototype.createFetchRequest = function(a, cb) {
     var callId = "" + Seam.__callId++;
     var d = "<model operation=\"fetch\">";
     var refs = [];
@@ -1007,10 +1005,10 @@
       }
     }
     d += "</model>";
-    return {data:d, id:callId, model:this, handler: Seam.preProcessModelResponse};
+    return {data:d, id:callId, model:this, handler: Seam.preProcessModelResponse, callback: cb};
   }
 
-  Seam.Model.prototype.processResponse = function(modelNode) {
+  Seam.Model.prototype.processResponse = function(modelNode, cb) {
     var refsNode = Seam.Xml.childNode(modelNode, "refs");
     this.id = modelNode.getAttribute("id");
     var valueNodes = Seam.Xml.childNodes(modelNode, "value");         
@@ -1020,21 +1018,21 @@
       var value = Seam.unmarshalValue(valueNodes[i].firstChild,this.workingRefs);
       this.values.push({alias:valueNodes[i].getAttribute("alias"),value:value, refIndex:i});
     }
-    if (this.callback) this.callback(this);
+    if (cb) cb(this);
   }
 
-  Seam.Model.prototype.applyUpdates = function(a) {
+  Seam.Model.prototype.applyUpdates = function(a, cb) {
     var d = new Seam.Delta(this);
     for (var i=0; i<this.values.length; i++) {
       d.scanForChanges(this.values[i].value);
     }
-    var r = this.createApplyRequest(a, d);
+    var r = this.createApplyRequest(a, d, cb);
     var env = Seam.createEnvelope(Seam.createHeader(r.id), r.data);
     Seam.pendingCalls.put(r.id, r);
     Seam.sendAjaxRequest(env, Seam.PATH_MODEL, Seam.processResponse, false);
   }
 
-  Seam.Model.prototype.createApplyRequest = function(a, delta) {
+  Seam.Model.prototype.createApplyRequest = function(a, delta, cb) {
     var callId = "" + Seam.__callId++;
     var d = "<model id=\"" + this.id + "\" operation=\"apply\">";
     var refs = delta.buildRefs();
@@ -1087,7 +1085,7 @@
       d += "</refs>";
     }
     d += "</model>";
-    return {data:d, id:callId, model:this, handler: Seam.preProcessModelResponse};
+    return {data:d, id:callId, model:this, handler: Seam.preProcessModelResponse, callback: cb};
   }
 
   Seam.Model.prototype.getRefId = function(v) {
@@ -1097,30 +1095,29 @@
     return -1;
   }
   
-  Seam.Model.prototype.expand = function(v, p, callback) {
+  Seam.Model.prototype.expand = function(v, p, cb) {
     if (v[p] != undefined) return;
     var refId = this.getRefId(v);    
-    var r = this.createExpandRequest(refId, p);
+    var r = this.createExpandRequest(refId, p, cb);
     var env = Seam.createEnvelope(Seam.createHeader(r.id), r.data);
-    this.callback = callback;
     Seam.pendingCalls.put(r.id, r);
     Seam.sendAjaxRequest(env, Seam.PATH_MODEL, Seam.processResponse, false);
   }
 
-  Seam.Model.prototype.createExpandRequest = function(refId, propName) {
+  Seam.Model.prototype.createExpandRequest = function(refId, propName, cb) {
     var callId = "" + Seam.__callId++;
     var d = "<model id=\"" + this.id + "\" operation=\"expand\">" +
       "<ref id=\"" + refId + "\"><member name=\"" + propName + "\"/></ref></model>";
-    return {data: d, id: callId, model: this, refId: refId, property: propName, handler: Seam.preProcessModelExpandResponse};
+    return {data: d, id: callId, model: this, refId: refId, property: propName, handler: Seam.preProcessModelExpandResponse, callback: cb};
   }
 
-  Seam.Model.prototype.processExpandResponse = function(modelNode, refId, propName) {
+  Seam.Model.prototype.processExpandResponse = function(modelNode, refId, propName, cb) {
     var refsNode = Seam.Xml.childNode(modelNode, "refs");
     var resultNode = Seam.Xml.childNode(modelNode, "result");
     Seam.unmarshalRefs(refsNode, this.sourceRefs);
     Seam.unmarshalRefs(refsNode, this.workingRefs);
     this.sourceRefs[refId][propName] = Seam.unmarshalValue(resultNode.firstChild,this.sourceRefs);
     this.workingRefs[refId][propName] = Seam.unmarshalValue(resultNode.firstChild,this.workingRefs);
-    if (this.callback) this.callback(this);
+    if (cb) cb(this);
   }
 }
\ No newline at end of file



More information about the seam-commits mailing list