Author: rbaxter85
Date: Fri Sep 16 13:36:19 2011
New Revision: 1171551
URL: http://svn.apache.org/viewvc?rev=1171551&view=rev
Log:
SHINDIG-1569
Committed For Dan Dumont
Change osapi._registerMethods to 'last one in wins'
Modified:
shindig/trunk/features/src/main/javascript/features/osapi.base/osapi.js
Modified:
shindig/trunk/features/src/main/javascript/features/osapi.base/osapi.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/osapi.base/osapi.js?rev=1171551&r1=1171550&r2=1171551&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/osapi.base/osapi.js
(original)
+++ shindig/trunk/features/src/main/javascript/features/osapi.base/osapi.js Fri
Sep 16 13:36:19 2011
@@ -35,15 +35,11 @@ osapi._registerMethod = function(method,
last[parts[i]] = last[parts[i]] || {};
last = last[parts[i]];
}
- var basename = parts[parts.length - 1];
+ var basename = parts[parts.length - 1], old;
+
+ // registered methods are now 'last one in wins'. See tamings__ below.
if (last[basename]) {
- if (!last['__dupwarn']) {
- gadgets.warn('Skipping duplicate osapi method definition '
- + method + ' on transport ' + transport['name'] +
- '; others may exist, but suppressing warnings');
- }
- last['__dupwarn'] = true;
- return;
+ old = last[basename];
}
last[basename] = function(rpc) {
@@ -57,9 +53,20 @@ osapi._registerMethod = function(method,
};
if (typeof tamings___ !== 'undefined') {
- tamings___.push(function() {
+ var newTaming = function() {
caja___.markTameAsFunction(last[basename], method);
- });
+ };
+
+ // Remove the old taming if we are replacing it, no sense in growing the
array
+ // needlessly. This function (_registerMethod) gets called a lot.
+ if (old && old.__taming_index) {
+ last[basename].__taming_index = old.__taming_index;
+ tamings___[old.__taming_index] = newTaming;
+ }
+ else {
+ last[basename].__taming_index = tamings___.length;
+ tamings___.push(newTaming);
+ }
}
};