From dc6087e62043cc3301c1c7ef1db327211c19b00a Mon Sep 17 00:00:00 2001 From: Piotr Szmyd Date: Wed, 15 Oct 2014 02:02:36 +0200 Subject: [PATCH] Making ICacheService and ICacheServiceProviders generic. --- .../Services/DefaultCacheService.cs | 10 +++++----- .../Services/DefaultCacheStorageProvider.cs | 13 +++++++++---- .../Orchard.Caching/Services/ICacheService.cs | 19 +++++++------------ .../Services/ICacheStorageProvider.cs | 6 +++--- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheService.cs b/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheService.cs index 378f576b3..af53e4b65 100644 --- a/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheService.cs +++ b/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheService.cs @@ -17,15 +17,15 @@ namespace Orchard.Caching.Services { _prefix = shellSettings.Name; } - public object Get(string key) { - return _cacheStorageProvider.Get(BuildFullKey(key)); + public T Get(string key) { + return _cacheStorageProvider.Get(BuildFullKey(key)); } - public void Put(string key, object value) { + public void Put(string key, T value) { _cacheStorageProvider.Put(BuildFullKey(key), value); } - public void Put(string key, object value, TimeSpan validFor) { + public void Put(string key, T value, TimeSpan validFor) { _cacheStorageProvider.Put(BuildFullKey(key), value, validFor); } @@ -38,7 +38,7 @@ namespace Orchard.Caching.Services { } private string BuildFullKey(string key) { - return String.Concat(_prefix, "_", key); + return String.Concat(_prefix, ":", key); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheStorageProvider.cs index 47e8e66aa..a5d3c1c6f 100644 --- a/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Caching/Services/DefaultCacheStorageProvider.cs @@ -6,7 +6,7 @@ using System.Web; namespace Orchard.Caching.Services { public class DefaultCacheStorageProvider : ICacheStorageProvider { - public void Put(string key, object value) { + public void Put(string key, T value) { HttpRuntime.Cache.Insert( key, value, @@ -17,7 +17,7 @@ namespace Orchard.Caching.Services { null); } - public void Put(string key, object value, TimeSpan validFor) { + public void Put(string key, T value, TimeSpan validFor) { HttpRuntime.Cache.Insert( key, value, @@ -44,8 +44,13 @@ namespace Orchard.Caching.Services { } } - public object Get(string key) { - return HttpRuntime.Cache.Get(key); + public T Get(string key) { + var value = HttpRuntime.Cache.Get(key); + if (value is T) { + return (T)value; + } + + return default(T); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheService.cs b/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheService.cs index 74ee9d39a..03aeede41 100644 --- a/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheService.cs +++ b/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheService.cs @@ -2,23 +2,18 @@ namespace Orchard.Caching.Services { public interface ICacheService : IDependency { + T Get(string key); - object Get(string key); - void Put(string key, object value); - void Put(string key, object value, TimeSpan validFor); + void Put(string key, T value); + void Put(string key, T value, TimeSpan validFor); void Remove(string key); void Clear(); } public static class CachingExtensions { - - public static T Get(this ICacheService cacheService, string key) { - return (T)cacheService.Get(key); - } - public static T Get(this ICacheService cacheService, string key, Func factory) { - var result = cacheService.Get(key); + var result = cacheService.Get(key); if (result == null) { var computed = factory(); cacheService.Put(key, computed); @@ -26,11 +21,11 @@ namespace Orchard.Caching.Services { } // try to convert to T - return (T)result; + return result; } public static T Get(this ICacheService cacheService, string key, Func factory, TimeSpan validFor) { - var result = cacheService.Get(key); + var result = cacheService.Get(key); if (result == null) { var computed = factory(); cacheService.Put(key, computed, validFor); @@ -38,7 +33,7 @@ namespace Orchard.Caching.Services { } // try to convert to T - return (T)result; + return result; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs index 545b4f0df..60253600f 100644 --- a/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs @@ -2,9 +2,9 @@ namespace Orchard.Caching.Services { public interface ICacheStorageProvider : IDependency { - object Get(string key); - void Put(string key, object value); - void Put(string key, object value, TimeSpan validFor); + T Get(string key); + void Put(string key, T value); + void Put(string key, T value, TimeSpan validFor); void Remove(string key); void Clear(); }