src/cm/media/js/lib/yui/yui_3.10.3/build/cache-base/cache-base.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('cache-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * The Cache utility provides a common configurable interface for components to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * cache and retrieve data from a local JavaScript struct.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @module cache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @main
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 * Provides the base class for the YUI Cache utility.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 * @submodule cache-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
var LANG = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    isDate = Y.Lang.isDate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
 * Base class for the YUI Cache utility.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
 * @class Cache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
 * @extends Base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
Cache = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    Cache.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    // Cache static properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
Y.mix(Cache, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
     * Class name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     * @property NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
     * @final
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
     * @value "cache"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    NAME: "cache",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        // Cache Attributes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        * @attribute max
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        * @description Maximum number of entries the Cache can hold.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        * Set to 0 to turn off caching.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        max: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            setter: "_setMax"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        * @attribute size
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        * @description Number of entries currently cached.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        size: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
            readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
            getter: "_getSize"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        * @attribute uniqueKeys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        * @description Validate uniqueness of stored keys. Default is false and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        * is more performant.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        uniqueKeys: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        * @attribute expires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        * @description Absolute Date when data expires or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
        * relative number of milliseconds. Zero disables expiration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        * @type Date | Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
        * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        expires: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
            validator: function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
                return Y.Lang.isDate(v) || (Y.Lang.isNumber(v) && v >= 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
         * @attribute entries
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
         * @description Cached entries.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
         * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        entries: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            getter: "_getEntries"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
Y.extend(Cache, Y.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
    // Cache private properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     * Array of request/response objects indexed chronologically.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
     * @property _entries
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     * @type Object[]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    _entries: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
    // Cache private methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    * @description Internal init() handler.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    * @param config {Object} Config object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    initializer: function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        * @event add
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
        * @description Fired when an entry is added.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
        * @param e {Event.Facade} Event Facade with the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
         * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
         * <dt>entry (Object)</dt> <dd>The cached entry.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
         * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
        * @preventable _defAddFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        this.publish("add", {defaultFn: this._defAddFn});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        * @event flush
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        * @description Fired when the cache is flushed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        * @param e {Event.Facade} Event Facade object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        * @preventable _defFlushFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        this.publish("flush", {defaultFn: this._defFlushFn});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        * @event request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        * @description Fired when an entry is requested from the cache.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        * @param e {Event.Facade} Event Facade with the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        * <dt>request (Object)</dt> <dd>The request object.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        * @event retrieve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        * @description Fired when an entry is retrieved from the cache.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        * @param e {Event.Facade} Event Facade with the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        * <dt>entry (Object)</dt> <dd>The retrieved entry.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        // Initialize internal values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        this._entries = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
    * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
    * @description Internal destroy() handler.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
    destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        this._entries = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    // Cache protected methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
     * Sets max.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
     * @method _setMax
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    _setMax: function(value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        // If the cache is full, make room by removing stalest element (index=0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        var entries = this._entries;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        if(value > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            if(entries) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
                while(entries.length > value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                    entries.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            value = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            this._entries = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
        return value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
     * Gets size.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
     * @method _getSize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    _getSize: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        return this._entries.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
     * Gets all entries.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
     * @method _getEntries
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    _getEntries: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        return this._entries;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
     * Adds entry to cache.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
     * @method _defAddFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
     * @param e {Event.Facade} Event Facade with the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
     * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
     * <dt>entry (Object)</dt> <dd>The cached entry.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
     * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    _defAddFn: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        var entries = this._entries,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
            entry   = e.entry,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            max     = this.get("max"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            pos;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        // If uniqueKeys is true and item exists with this key, then remove it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        if (this.get("uniqueKeys")) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            pos = this._position(e.entry.request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            if (LANG.isValue(pos)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
                entries.splice(pos, 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        // If the cache at or over capacity, make room by removing stalest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        // element(s) starting at index-0.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        while (max && entries.length >= max) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
            entries.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        // Add entry to cache in the newest position, at the end of the array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        entries[entries.length] = entry;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
     * Flushes cache.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
     * @method _defFlushFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
     * @param e {Event.Facade} Event Facade object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    _defFlushFn: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        var entries = this._entries,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            details = e.details[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            pos;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
        //passed an item, flush only that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        if(details && LANG.isValue(details.request)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            pos = this._position(details.request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
            if(LANG.isValue(pos)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                entries.splice(pos,1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
        //no item, flush everything
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
            this._entries = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
     * Default overridable method compares current request with given cache entry.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
     * Returns true if current request matches the cached request, otherwise
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
     * false. Implementers should override this method to customize the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
     * cache-matching algorithm.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
     * @method _isMatch
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
     * @param request {Object} Request object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
     * @param entry {Object} Cached entry.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
     * @return {Boolean} True if current request matches given cached request, false otherwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    _isMatch: function(request, entry) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        if(!entry.expires || new Date() < entry.expires) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
            return (request === entry.request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
     * Returns position of a request in the entries array, otherwise null.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
     * @method _position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
     * @param request {Object} Request object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
     * @return {Number} Array position if found, null otherwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
    _position: function(request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        // If cache is enabled...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        var entries = this._entries,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            length = entries.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            i = length-1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        if((this.get("max") === null) || this.get("max") > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
            // Loop through each cached entry starting from the newest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
            for(; i >= 0; i--) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                // Execute matching function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
                if(this._isMatch(request, entries[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
                    return i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    // Cache public methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    /////////////////////////////////////////////////////////////////////////////
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
     * Adds a new entry to the cache of the format
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
     * {request:request, response:response, cached:cached, expires:expires}.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
     * If cache is full, evicts the stalest entry before adding the new one.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
     * @method add
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
     * @param request {Object} Request value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
     * @param response {Object} Response value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
    add: function(request, response) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
        var expires = this.get("expires");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
        if(this.get("initialized") && ((this.get("max") === null) || this.get("max") > 0) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                (LANG.isValue(request) || LANG.isNull(request) || LANG.isUndefined(request))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
            this.fire("add", {entry: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
                request:request,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
                response:response,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
                cached: new Date(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
                expires: isDate(expires) ? expires :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
            (expires ? new Date(new Date().getTime() + this.get("expires")) : null)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
            }});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
     * Flushes cache.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     * @method flush
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    flush: function(request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
        this.fire("flush", { request: (LANG.isValue(request) ? request : null) });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
     * Retrieves cached object for given request, if available, and refreshes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
     * entry in the cache. Returns null if there is no cache match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
     * @method retrieve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
     * @param request {Object} Request object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
     * @return {Object} Cached object with the properties request and response, or null.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
    retrieve: function(request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
        // If cache is enabled...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        var entries = this._entries,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            length = entries.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            entry = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
            pos;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        if((length > 0) && ((this.get("max") === null) || (this.get("max") > 0))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
            this.fire("request", {request: request});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            pos = this._position(request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
            if(LANG.isValue(pos)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                entry = entries[pos];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                this.fire("retrieve", {entry: entry});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                // Refresh the position of the cache hit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                if(pos < length-1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                    // Remove element from its original location
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
                    entries.splice(pos,1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                    // Add as newest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                    entries[entries.length] = entry;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                return entry;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
        return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
Y.Cache = Cache;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
}, '3.10.3', {"requires": ["base"]});