rem: exceptionHandler:overrides.exceptionHandler, callback:overrides.callback 
add: exceptionHandler:callData.exceptionHandler, callback:callData.callback 
context: dwr.engine._execute = function(path, scriptName, methodName, vararg_params) {  var singleShot = false;  if (dwr.engine._batch == null) {    dwr.engine.beginBatch();    singleShot = true;  }  var batch = dwr.engine._batch;  // To make them easy to manipulate we copy the arguments into an args array  var args = [];  for (var i = 0; i < arguments.length - 3; i++) {    args[i] = arguments[i + 3];  }  // All the paths MUST be to the same servlet  if (batch.path == null) {    batch.path = path;  }  else {    if (batch.path != path) {      dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." });      return;    }  }  // From the other params, work out which is the function (or object with  // call meta-data) and which is the call parameters  var callData;  var lastArg = args[args.length - 1];  if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() };  else callData = args.pop();  // Merge from the callData into the batch  dwr.engine.mergeBatch(batch, callData);  batch.handlers[batch.map.callCount] = {    exceptionHandler:overrides.exceptionHandler,    callback:overrides.callback  };  // Copy to the map the things that need serializing  var prefix = "c" + batch.map.callCount + "-";  batch.map[prefix + "scriptName"] = scriptName;  batch.map[prefix + "methodName"] = methodName;  batch.map[prefix + "id"] = batch.map.callCount;  for (i = 0; i < args.length; i++) {    dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i);  }  // Now we have finished remembering the call, we incr the call count  batch.map.callCount++;  if (singleShot) dwr.engine.endBatch();};
meta: 266	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/266/ff32a83aaa4551fa4fa13ec95f2f262c15a459db/engine.js/buggy/java/org/directwebremoting/engine.js