1 /******************************************************************************
3 * Copyright (c) 2003 Novell Inc., www.novell.com
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:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
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
22 *******************************************************************************/
25 // System.DirectoryServices.DirectoryServicesPermissionEntryCollection.cs
27 // Copyright (C) 2004 Novell Inc.
29 // Written by Raja R Harinath <rharinath@novell.com>
32 using System
.Collections
;
33 using System
.Security
.Permissions
;
35 namespace System
.DirectoryServices
{
37 // when deserializing an instance serialized by MS.NET, you get the following
38 // error : Field "owner" not found in class ....
40 [MonoTODO ("Fix serialization compatibility with MS.NET")]
41 public class DirectoryServicesPermissionEntryCollection
: CollectionBase
{
43 private DirectoryServicesPermission owner
;
45 internal DirectoryServicesPermissionEntryCollection (DirectoryServicesPermission owner
)
48 ResourcePermissionBaseEntry
[] entries
= owner
.GetEntries ();
49 if (entries
.Length
> 0) {
50 foreach (ResourcePermissionBaseEntry entry
in entries
) {
51 DirectoryServicesPermissionAccess dspa
= (DirectoryServicesPermissionAccess
) entry
.PermissionAccess
;
52 DirectoryServicesPermissionEntry dspe
= new DirectoryServicesPermissionEntry (dspa
, entry
.PermissionAccessPath
[0]);
53 // we don't want to add them (again) to the base class
59 public DirectoryServicesPermissionEntry
this [int index
] {
60 get { return List[index] as DirectoryServicesPermissionEntry; }
61 set { List[index] = value; }
64 public int Add (DirectoryServicesPermissionEntry entry
)
66 return List
.Add (entry
);
69 public void AddRange (DirectoryServicesPermissionEntry
[] entries
)
71 foreach (DirectoryServicesPermissionEntry entry
in entries
)
75 public void AddRange (DirectoryServicesPermissionEntryCollection entries
)
77 foreach (DirectoryServicesPermissionEntry entry
in entries
)
81 public void CopyTo (DirectoryServicesPermissionEntry
[] copy_to
, int index
)
83 foreach (DirectoryServicesPermissionEntry entry
in List
)
84 copy_to
[index
++] = entry
;
87 public bool Contains (DirectoryServicesPermissionEntry entry
)
89 return List
.Contains (entry
);
92 public int IndexOf (DirectoryServicesPermissionEntry entry
)
94 return List
.IndexOf (entry
);
97 public void Insert (int pos
, DirectoryServicesPermissionEntry entry
)
99 List
.Insert (pos
, entry
);
102 public void Remove (DirectoryServicesPermissionEntry entry
)
107 protected override void OnClear ()
109 owner
.ClearEntries ();
112 protected override void OnInsert (int index
, object value)
117 protected override void OnRemove (int index
, object value)
119 owner
.Remove (value);
122 protected override void OnSet (int index
, object oldValue
, object newValue
)
124 owner
.Remove (oldValue
);
125 owner
.Add (newValue
);