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();