diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui3.0.0/build/datasource/datasource-cache.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui3.0.0/build/datasource/datasource-cache.js Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,136 @@ +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0 +build: 1549 +*/ +YUI.add('datasource-cache', function(Y) { + +/** + * Extends DataSource with caching functionality. + * + * @module datasource + * @submodule datasource-cache + */ + +/** + * Adds cacheability to the DataSource Utility. + * @class DataSourceCache + * @extends Cache + */ +var DataSourceCache = function() { + DataSourceCache.superclass.constructor.apply(this, arguments); +}; + +Y.mix(DataSourceCache, { + /** + * The namespace for the plugin. This will be the property on the host which + * references the plugin instance. + * + * @property NS + * @type String + * @static + * @final + * @value "cache" + */ + NS: "cache", + + /** + * Class name. + * + * @property NAME + * @type String + * @static + * @final + * @value "dataSourceCache" + */ + NAME: "dataSourceCache", + + ///////////////////////////////////////////////////////////////////////////// + // + // DataSourceCache Attributes + // + ///////////////////////////////////////////////////////////////////////////// + + ATTRS: { + + } +}); + +Y.extend(DataSourceCache, Y.Cache, { + /** + * Internal init() handler. + * + * @method initializer + * @param config {Object} Config object. + * @private + */ + initializer: function(config) { + this.doBefore("_defRequestFn", this._beforeDefRequestFn); + this.doBefore("_defResponseFn", this._beforeDefResponseFn); + }, + + /** + * First look for cached response, then send request to live data. + * + * @method _beforeDefRequestFn + * @param e {Event.Facade} Event Facade with the following properties: + *
+ *
tId (Number)
Unique transaction ID.
+ *
request (Object)
The request.
+ *
callback (Object)
The callback object.
+ *
cfg (Object)
Configuration object.
+ *
+ * @protected + */ + _beforeDefRequestFn: function(e) { + // Is response already in the Cache? + var entry = (this.retrieve(e.request)) || null; + if(entry && entry.response) { + this.get("host").fire("response", Y.mix({response: entry.response}, e)); + return new Y.Do.Halt("DataSourceCache plugin halted _defRequestFn"); + } + }, + + /** + * Adds data to cache before returning data. + * + * @method _beforeDefResponseFn + * @param e {Event.Facade} Event Facade with the following properties: + *
+ *
tId (Number)
Unique transaction ID.
+ *
request (Object)
The request.
+ *
callback (Object)
The callback object with the following properties: + *
+ *
success (Function)
Success handler.
+ *
failure (Function)
Failure handler.
+ *
+ *
+ *
data (Object)
Raw data.
+ *
response (Object)
Normalized response object with the following properties: + *
+ *
cached (Object)
True when response is cached.
+ *
results (Object)
Parsed results.
+ *
meta (Object)
Parsed meta data.
+ *
error (Object)
Error object.
+ *
+ *
+ *
cfg (Object)
Configuration object.
+ *
+ * @protected + */ + _beforeDefResponseFn: function(e) { + // Add to Cache before returning + if(e.response && !e.response.cached) { + e.response.cached = true; + this.add(e.request, e.response, (e.callback && e.callback.argument)); + } + } +}); + +Y.namespace('Plugin').DataSourceCache = DataSourceCache; + + + +}, '3.0.0' ,{requires:['datasource-local', 'cache']});