2008-10-24 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web.UI / ControlCachePolicy.cs
1 //
2 // System.Web.UI.ControlCachePolicy
3 //
4 // Authors:
5 //      Dick Porter  <dick@ximian.com>
6 //      Marek Habersack <mhabersack@novell.com>
7 //
8 // Copyright (C) 2005-2008 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 #if NET_2_0
31
32 using System.Web.Caching;
33
34 namespace System.Web.UI
35 {
36         public sealed class ControlCachePolicy
37         {
38                 BasePartialCachingControl bpcc;
39                 bool cached;
40                 
41                 internal ControlCachePolicy () : this (null)
42                 {
43                 }
44
45                 internal ControlCachePolicy (BasePartialCachingControl bpcc)
46                 {
47                         this.bpcc = bpcc;
48                 }
49                 
50                 public bool Cached 
51                 {
52                         get {
53                                 AssertBasePartialCachingControl ();
54                                 return cached;
55                         }
56                         
57                         set {
58                                 AssertBasePartialCachingControl ();
59                                 cached = value;
60                         }
61                 }
62
63                 public CacheDependency Dependency 
64                 {
65                         get {
66                                 AssertBasePartialCachingControl ();
67                                 return bpcc.Dependency;
68                         }
69                         set {
70                                 AssertBasePartialCachingControl ();
71                                 bpcc.Dependency = value;
72                         }
73                 }
74
75                 public TimeSpan Duration 
76                 {
77                         get {
78                                 AssertBasePartialCachingControl ();
79                                 return TimeSpan.FromMinutes (bpcc.Duration);
80                         }
81                         set {
82                                 AssertBasePartialCachingControl ();
83                                 bpcc.Duration = value.Minutes;
84                         }
85                 }
86
87                 public bool SupportsCaching 
88                 {
89                         get {
90                                 return bpcc != null;
91                         }
92                 }
93
94                 public string VaryByControl 
95                 {
96                         get {
97                                 AssertBasePartialCachingControl ();
98                                 return bpcc.VaryByControls;
99                         }
100                         set {
101                                 AssertBasePartialCachingControl ();
102                                 bpcc.VaryByControls = value;
103                         }
104                 }
105
106                 public HttpCacheVaryByParams VaryByParams {
107                         get {
108                                 AssertBasePartialCachingControl ();
109                                 throw new NotImplementedException ();
110                         }
111                 }
112
113                 public void SetExpires (DateTime expirationTime)
114                 {
115                         AssertBasePartialCachingControl ();
116                         bpcc.ExpirationTime = expirationTime;
117                 }
118
119                 public void SetSlidingExpiration (bool useSlidingExpiration)
120                 {
121                         AssertBasePartialCachingControl ();
122                         bpcc.SlidingExpiration = useSlidingExpiration;
123                 }
124
125                 public void SetVaryByCustom (string varyByCustom)
126                 {
127                         AssertBasePartialCachingControl ();
128                         bpcc.VaryByCustom = varyByCustom;
129                 }
130
131                 void AssertBasePartialCachingControl ()
132                 {
133                         if (bpcc == null)
134                                 throw new HttpException ("The user control is not associated with a 'BasePartialCachingControl' and is not cacheable.");
135                 }
136                 
137         }
138 }
139 #endif