using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Web; namespace Umbraco.Core.Cache { /// /// A cache provider that caches items in the HttpContext.Items /// internal class HttpRequestCacheProvider : DictionaryCacheProdiverBase { private readonly Func _context; public HttpRequestCacheProvider(HttpContext context) { _context = () => new HttpContextWrapper(context); } public HttpRequestCacheProvider(Func context) { _context = context; } protected override DictionaryCacheWrapper DictionaryCache { get { var ctx = _context(); return new DictionaryCacheWrapper( ctx.Items, o => ctx.Items[o], o => ctx.Items.Remove(o)); } } public override T GetCacheItem(string cacheKey, Func getCacheItem) { var ctx = _context(); var ck = GetCacheKey(cacheKey); if (ctx.Items[ck] == null) { ctx.Items[ck] = getCacheItem(); } return (T)ctx.Items[ck]; } } }