2009-08-24 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web / HttpApplicationState.cs
index 17f0968fe09e3df8310a99ca8949d91c30e92d47..3b0f3e1ad6f9cf8e1c3e7ca6c8ca6f3a2e50a600 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
+
 using System.Threading;
-using System.Web;
 using System.Collections.Specialized;
+using System.Security.Permissions;
 
-namespace System.Web \r
-{
+namespace System.Web {
 
-       public sealed class HttpApplicationState : NameObjectCollectionBase \r
+       // CAS - no InheritanceDemand here as the class is sealed
+       [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+       public sealed class HttpApplicationState : NameObjectCollectionBase 
        {
-               private HttpStaticObjectsCollection _AppObjects;
-               private HttpStaticObjectsCollection _SessionObjects;
+               HttpStaticObjectsCollection _AppObjects;
+               HttpStaticObjectsCollection _SessionObjects;
 
-               private ReaderWriterLock _Lock; 
+               ReaderWriterLock _Lock; 
 
                internal HttpApplicationState ()
                {
-                       _AppObjects = new HttpStaticObjectsCollection ();
-                       _SessionObjects = new HttpStaticObjectsCollection ();
+                       // do not use the public (empty) ctor as it required UnmanagedCode permission
+                       _AppObjects = new HttpStaticObjectsCollection (this);
+                       _SessionObjects = new HttpStaticObjectsCollection (this);
                        _Lock = new ReaderWriterLock ();
                }
 
                internal HttpApplicationState (HttpStaticObjectsCollection AppObj,
                        HttpStaticObjectsCollection SessionObj)
                {
-                       if (null != AppObj) \r
+                       if (null != AppObj) 
                        {
                                _AppObjects = AppObj;
-                       } \r
-                       else \r
+                       } 
+                       else 
                        {
-                               _AppObjects = new HttpStaticObjectsCollection ();
+                               // do not use the public (empty) ctor as it required UnmanagedCode permission
+                               _AppObjects = new HttpStaticObjectsCollection (this);
                        }
 
-                       if (null != SessionObj) \r
+                       if (null != SessionObj) 
                        {
                                _SessionObjects = SessionObj;
-                       } \r
-                       else \r
+                       } 
+                       else 
                        {
-                               _SessionObjects = new HttpStaticObjectsCollection ();
+                               // do not use the public (empty) ctor as it required UnmanagedCode permission
+                               _SessionObjects = new HttpStaticObjectsCollection (this);
                        }
                        _Lock = new ReaderWriterLock ();
                }
@@ -73,11 +77,11 @@ namespace System.Web
                public void Add (string name, object value)
                {
                        _Lock.AcquireWriterLock (-1); 
-                       try \r
+                       try 
                        {
                                BaseAdd (name, value);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseWriterLock ();
                        }
@@ -86,11 +90,11 @@ namespace System.Web
                public void Clear ()
                {
                        _Lock.AcquireWriterLock (-1); 
-                       try \r
+                       try 
                        {
                                BaseClear ();
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseWriterLock ();
                        }
@@ -101,11 +105,11 @@ namespace System.Web
                        object ret = null;
 
                        _Lock.AcquireReaderLock (-1); 
-                       try \r
+                       try 
                        {
                                ret = BaseGet (name);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseReaderLock ();
                        }
@@ -118,11 +122,11 @@ namespace System.Web
                        object ret = null;
 
                        _Lock.AcquireReaderLock (-1); 
-                       try \r
+                       try 
                        {
                                ret = BaseGet (index);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseReaderLock ();
                        }
@@ -135,11 +139,11 @@ namespace System.Web
                        string ret = null;
 
                        _Lock.AcquireReaderLock (-1); 
-                       try \r
+                       try 
                        {
                                ret = BaseGetKey (index);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseReaderLock ();
                        }
@@ -155,11 +159,11 @@ namespace System.Web
                public void Remove (string name)
                {
                        _Lock.AcquireWriterLock (-1); 
-                       try \r
+                       try 
                        {
                                BaseRemove (name);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseWriterLock ();
                        }      
@@ -173,11 +177,11 @@ namespace System.Web
                public void RemoveAt (int index)
                {
                        _Lock.AcquireWriterLock (-1); 
-                       try \r
+                       try 
                        {
                                BaseRemoveAt (index);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseWriterLock ();
                        }      
@@ -186,11 +190,11 @@ namespace System.Web
                public void Set (string name, object value)
                {
                        _Lock.AcquireWriterLock (-1); 
-                       try \r
+                       try 
                        {
                                BaseSet (name, value);
-                       } \r
-                       finally \r
+                       } 
+                       finally 
                        {
                                _Lock.ReleaseWriterLock ();
                        }      
@@ -201,18 +205,18 @@ namespace System.Web
                        _Lock.ReleaseWriterLock ();
                }
 
-               public string [] AllKeys \r
+               public string [] AllKeys 
                {
-                       get \r
+                       get 
                        {
                                string [] ret = null;
 
                                _Lock.AcquireReaderLock (-1); 
-                               try \r
+                               try 
                                {
                                        ret = BaseGetAllKeys ();
-                               } \r
-                               finally \r
+                               } 
+                               finally 
                                {
                                        _Lock.ReleaseReaderLock ();
                                }     
@@ -221,23 +225,23 @@ namespace System.Web
                        }
                }
 
-               public HttpApplicationState Contents \r
+               public HttpApplicationState Contents 
                {
                        get { return this; }
                }
 
-               public override int Count \r
+               public override int Count 
                {
-                       get \r
+                       get 
                        {
                                int ret = 0;
 
                                _Lock.AcquireReaderLock (-1); 
-                               try \r
+                               try 
                                {
                                        ret = base.Count;
-                               } \r
-                               finally \r
+                               } 
+                               finally 
                                {
                                        _Lock.ReleaseReaderLock ();
                                }     
@@ -246,25 +250,25 @@ namespace System.Web
                        }
                }   
 
-               public object this [string name] \r
+               public object this [string name] 
                {
                        get { return Get (name); }
                        set { Set (name, value); }
                }
 
-               public object this [int index] \r
+               public object this [int index] 
                {
                        get { return Get (index); }
                }
 
                //  ASP Session based objects
-               internal HttpStaticObjectsCollection SessionObjects \r
+               internal HttpStaticObjectsCollection SessionObjects 
                {
                        get { return _SessionObjects; }
                }
 
                //  ASP App based objects
-               public HttpStaticObjectsCollection StaticObjects \r
+               public HttpStaticObjectsCollection StaticObjects 
                {
                        get { return _AppObjects; }
                }