Author: ddumont
Date: Wed Aug  8 23:16:04 2012
New Revision: 1371013

URL: http://svn.apache.org/viewvc?rev=1371013&view=rev
Log:
Provide order of container mixin execution.

Modified:
    shindig/trunk/features/src/main/javascript/features/container/container.js
    
shindig/trunk/features/src/test/javascript/features/container/container_test.js

Modified: 
shindig/trunk/features/src/main/javascript/features/container/container.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/container.js?rev=1371013&r1=1371012&r2=1371013&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js 
Wed Aug  8 23:16:04 2012
@@ -403,6 +403,7 @@ osapi.container.Container.addMixin = fun
       return func.call(this, container);
     };
   } else {
+    osapi.container.Container.prototype.mixinsOrder_.push(namespace);
     mixins[namespace] = func;
   }
 };
@@ -421,14 +422,24 @@ osapi.container.Container.addMixin = fun
  */
 osapi.container.Container.prototype.mixins_ = {};
 
+/**
+ * Order of addMixin calls.
+ * @type {Array<string>}
+ * @private
+ */
+osapi.container.Container.prototype.mixinsOrder_ = [];
+
 
 /**
  * Called from the constructor to add any namespace extensions.
  * @private
  */
 osapi.container.Container.prototype.initializeMixins_ = function() {
-  for (var i in this.mixins_) {
-    this[i] = new this.mixins_[i](this);
+  var mixins = osapi.container.Container.prototype.mixins_,
+      order = osapi.container.Container.prototype.mixinsOrder_;
+  for (var i = 0; i < order.length; i++) {
+    var namespace = order[i];
+    this[namespace] = new mixins[namespace](this);
   }
 };
 

Modified: 
shindig/trunk/features/src/test/javascript/features/container/container_test.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/container/container_test.js?rev=1371013&r1=1371012&r2=1371013&view=diff
==============================================================================
--- 
shindig/trunk/features/src/test/javascript/features/container/container_test.js 
(original)
+++ 
shindig/trunk/features/src/test/javascript/features/container/container_test.js 
Wed Aug  8 23:16:04 2012
@@ -142,6 +142,7 @@ ContainerTest.prototype.testMixinViaProt
       }
     };
   };
+  osapi.container.Container.prototype.mixinsOrder_.push('test');
   var container = new osapi.container.Container();
   this.setupGadgetSite(1, {}, null);
   container.newGadgetSite(null);


Reply via email to