[tests] Separate MONO_PATH directories by PLATFORM_PATH_SEPARATOR
[mono.git] / mcs / class / System.DirectoryServices / System.DirectoryServices / DirectoryServicesPermission.cs
1 /******************************************************************************
2 * The MIT License
3 * Copyright (c) 2003 Novell Inc.,  www.novell.com
4
5 * Permission is hereby granted, free of charge, to any person obtaining  a copy
6 * of this software and associated documentation files (the Software), to deal
7 * in the Software without restriction, including  without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
9 * copies of the Software, and to  permit persons to whom the Software is 
10 * furnished to do so, subject to the following conditions:
11
12 * The above copyright notice and this permission notice shall be included in 
13 * all copies or substantial portions of the Software.
14
15 * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 * SOFTWARE.
22 *******************************************************************************/
23
24 //
25 // System.DirectoryServices.DirectoryEntry.cs
26 //
27 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
28 //
29 // Authors
30 //      Raja R Harinath <rharinath@novell.com>
31 //      Sebastien Pouliot  <sebastien@ximian.com>
32 //
33
34 using System.Security.Permissions;
35
36 namespace System.DirectoryServices {
37
38         [Serializable]
39         public sealed class DirectoryServicesPermission : ResourcePermissionBase {
40
41                 DirectoryServicesPermissionEntryCollection innerCollection;
42
43                 public DirectoryServicesPermission ()
44                 {
45                         SetUp ();
46                 }
47
48                 public DirectoryServicesPermission (DirectoryServicesPermissionEntry[] entries)
49                 {
50                         SetUp ();
51                         innerCollection = new DirectoryServicesPermissionEntryCollection (this);
52                         innerCollection.AddRange (entries);
53                 }
54
55                 public DirectoryServicesPermission (PermissionState state)
56                         : base (state)
57                 {
58                         SetUp ();
59                 }
60
61                 public DirectoryServicesPermission (DirectoryServicesPermissionAccess access, string path)
62                 {
63                         SetUp ();
64                         innerCollection = new DirectoryServicesPermissionEntryCollection (this);
65                         innerCollection.Add (new DirectoryServicesPermissionEntry (access, path));
66                 }
67
68                 public DirectoryServicesPermissionEntryCollection PermissionEntries {
69                         get {
70                                 if (innerCollection == null) {
71                                         // must be here to work with XML deserialization
72                                         innerCollection = new DirectoryServicesPermissionEntryCollection (this);
73                                 }
74                                 return innerCollection;
75                         }
76                 }
77
78                 // helpers
79
80                 private void SetUp ()
81                 {
82                         PermissionAccessType = typeof (DirectoryServicesPermissionAccess);
83                         TagNames = new string[1] { "Path" };
84                 }
85
86                 internal ResourcePermissionBaseEntry[] GetEntries ()
87                 {
88                         return base.GetPermissionEntries ();
89                 }
90
91                 internal void ClearEntries ()
92                 {
93                         base.Clear ();
94                 }
95
96                 internal void Add (object obj) 
97                 {
98                         DirectoryServicesPermissionEntry dspe = (obj as DirectoryServicesPermissionEntry);
99                         base.AddPermissionAccess (dspe.GetBaseEntry ());
100                 }
101
102                 internal void Remove (object obj) 
103                 {
104                         DirectoryServicesPermissionEntry dspe = (obj as DirectoryServicesPermissionEntry);
105                         base.RemovePermissionAccess (dspe.GetBaseEntry ());
106                 }
107         }
108 }