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);
+    }
   }
 };
 


Reply via email to