Use UNIX line endings consistently
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / DataSourceCacheManager.cs
index b4003c75e5314edd3d7d0f2d8d4fd76188a15e7f..78be86d371f6ec558c05f1b461b40dbad90c14a4 100644 (file)
@@ -44,14 +44,18 @@ namespace System.Web.UI.WebControls
                readonly string cacheKeyDependency;
                readonly string controlID;
                readonly DataSourceCacheExpiry cacheExpirationPolicy;
+               readonly Control owner;
+               readonly HttpContext context;
 
                internal DataSourceCacheManager (int cacheDuration, string cacheKeyDependency,
-                       DataSourceCacheExpiry cacheExpirationPolicy, string controlID)
+                       DataSourceCacheExpiry cacheExpirationPolicy, Control owner, HttpContext context)
                {
                        this.cacheDuration = cacheDuration;
                        this.cacheKeyDependency = cacheKeyDependency;
                        this.cacheExpirationPolicy = cacheExpirationPolicy;
-                       this.controlID = controlID;
+                       this.controlID = owner.UniqueID;
+                       this.owner = owner;
+                       this.context = context;
 
                        if (DataCache [controlID] == null)
                                DataCache [controlID] = new object ();
@@ -84,14 +88,14 @@ namespace System.Web.UI.WebControls
                                if (cacheExpirationPolicy == DataSourceCacheExpiry.Absolute)
                                        absoluteExpiration = DateTime.Now.AddSeconds (cacheDuration);
                                else
-                                       slidindExpiraion = new TimeSpan (cacheDuration * 10000);
+                                       slidindExpiraion = new TimeSpan (0, 0, cacheDuration);
                        }
 
                        string [] dependencies;
                        if (cacheKeyDependency.Length > 0)
-                               dependencies = new string [] { cacheKeyDependency, controlID };
+                               dependencies = new string [] { cacheKeyDependency };
                        else
-                               dependencies = new string [] { controlID };
+                               dependencies = new string [] { };
 
                        DataCache.Add (key, o,
                                new CacheDependency (new string [] { }, dependencies),
@@ -100,22 +104,24 @@ namespace System.Web.UI.WebControls
 
                static Cache DataCache
                {
-                       get
-                       {
+                       get {
                                if (HttpContext.Current != null)
-                                       return HttpContext.Current.Cache;
+                                       return HttpContext.Current.InternalCache;
 
                                throw new InvalidOperationException ("HttpContext.Current is null.");
                        }
                }
 
-               static string GetKeyFromParameters (string methodName, ParameterCollection parameters)
+               string GetKeyFromParameters (string methodName, ParameterCollection parameters)
                {
                        StringBuilder sb = new StringBuilder (methodName);
 
+                       if (owner != null)
+                               sb.Append (owner.ID);
+
                        for (int i = 0; i < parameters.Count; i++) {
                                sb.Append (parameters [i].Name);
-                               sb.Append (parameters [i].DefaultValue);
+                               sb.Append (parameters [i].GetValue (context, owner));
                        }
 
                        return sb.ToString ();
@@ -123,4 +129,4 @@ namespace System.Web.UI.WebControls
        }
 }
 
-#endif
\ No newline at end of file
+#endif