Author: lindner
Date: Thu Sep 15 15:47:18 2011
New Revision: 1171152

URL: http://svn.apache.org/viewvc?rev=1171152&view=rev
Log:
SHINDIG-1579 | Patch from Jesse Ciancetta | Allow for incremental preloading of 
gadget metadata and security tokens

Modified:
    shindig/trunk/features/src/main/javascript/features/container/container.js
    shindig/trunk/features/src/main/javascript/features/container/feature.xml
    
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=1171152&r1=1171151&r2=1171152&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js 
Thu Sep 15 15:47:18 2011
@@ -134,7 +134,7 @@ osapi.container.Container = function(opt
 
   this.initializeMixins_();
 
-  this.preloadFromConfig_(config);
+  this.preloadCaches(config);
 
   this.registerRpcServices_();
 
@@ -527,18 +527,18 @@ osapi.container.Container.prototype.addP
 
 
 /**
- * Preload gadgets and tokens from container config.
- * Support caching by providing server time to override respnse time usage.
- * @param {Object} config container configuration.
- * @private
+ * Preload gadget metadata and tokens to avoid the need for XHR's when 
navigating gadget sites.
+ * This function is safe to call repeatedly if needed to incrementally build 
up the internal caches.
+ * Support caching by providing server time to override response time usage.
+ * @param {Object} preloadData object containing data to be preloaded.
  */
-osapi.container.Container.prototype.preloadFromConfig_ = function(config) {
+osapi.container.Container.prototype.preloadCaches = function(preloadData) {
   var gadgets = osapi.container.util.getSafeJsonValue(
-      config, osapi.container.ContainerConfig.PRELOAD_METADATAS, {});
+      preloadData, osapi.container.ContainerConfig.PRELOAD_METADATAS, {});
   var tokens = osapi.container.util.getSafeJsonValue(
-      config, osapi.container.ContainerConfig.PRELOAD_TOKENS, {});
+      preloadData, osapi.container.ContainerConfig.PRELOAD_TOKENS, {});
   var refTime = osapi.container.util.getSafeJsonValue(
-      config, osapi.container.ContainerConfig.PRELOAD_REF_TIME, null);
+      preloadData, osapi.container.ContainerConfig.PRELOAD_REF_TIME, null);
 
   this.service_.addGadgetMetadatas(gadgets, refTime);
   this.service_.addGadgetTokens(tokens, refTime);

Modified: 
shindig/trunk/features/src/main/javascript/features/container/feature.xml
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/feature.xml?rev=1171152&r1=1171151&r2=1171152&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/feature.xml 
(original)
+++ shindig/trunk/features/src/main/javascript/features/container/feature.xml 
Thu Sep 15 15:47:18 2011
@@ -39,6 +39,7 @@ under the License.
       <exports 
type="js">osapi.container.Container.prototype.closeGadget</exports>
       <exports 
type="js">osapi.container.Container.prototype.preloadGadget</exports>
       <exports 
type="js">osapi.container.Container.prototype.preloadGadgets</exports>
+      <exports 
type="js">osapi.container.Container.prototype.preloadCaches</exports>
       <exports 
type="js">osapi.container.Container.prototype.unloadGadget</exports>
       <exports 
type="js">osapi.container.Container.prototype.unloadGadgets</exports>
       <exports 
type="js">osapi.container.Container.prototype.getGadgetMetadata</exports>

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=1171152&r1=1171151&r2=1171152&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 
Thu Sep 15 15:47:18 2011
@@ -80,6 +80,27 @@ ContainerTest.prototype.testPreloadConfi
   this.assertFalse('2', 'preloaded2.xml' in container.preloadedGadgetUrls_);
 };
 
+ContainerTest.prototype.testPreloadCaches = function() {
+  var self = this;
+  this.setupGadgetsRpcRegister();
+  var mockMetadata = {'preloaded1.xml' : {}};
+  var container = new osapi.container.Container();
+  container.service_.addGadgetMetadatas = function(gadgets, refTime) {
+    self.assertEquals(mockMetadata, gadgets);
+    self.assertNull(refTime);
+  };
+  container.service_.addGadgetTokens = function(tokens, refTime) {
+    self.assertEquals(mockMetadata, tokens);
+    self.assertNull(refTime);
+  };
+  container.addPreloadGadgets_ = function(gadgets) {
+    self.assertEquals(mockMetadata, gadgets);
+  };
+  container.preloadCaches({
+    'preloadMetadatas' : mockMetadata,
+    'preloadTokens' : mockMetadata
+  });
+};
 
 ContainerTest.prototype.testNavigateGadget = function() {
   this.setupGadgetsRpcRegister();


Reply via email to