// System.Diagnostics.EventLogPermission.cs
//
// Authors:
-// Jonathan Pryor (jonpryor@vt.edu)
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+// Jonathan Pryor (jonpryor@vt.edu)
+// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+// Sebastien Pouliot <sebastien@ximian.com>
//
// (C) 2002 Jonathan Pryor
// (C) 2003 Andreas Nahr
-//
-
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
-using System.Diagnostics;
using System.Security.Permissions;
namespace System.Diagnostics {
[Serializable]
- public sealed class EventLogPermission : ResourcePermissionBase
- {
+ public sealed class EventLogPermission : ResourcePermissionBase {
+
+ EventLogPermissionEntryCollection innerCollection;
- public EventLogPermission()
+ public EventLogPermission ()
{
+ SetUp ();
}
public EventLogPermission (EventLogPermissionEntry[] permissionAccessEntries)
{
if (permissionAccessEntries == null)
- throw new ArgumentNullException("permissionAccessEntries");
- foreach (EventLogPermissionEntry entry in permissionAccessEntries)
- AddPermissionAccess (entry.CreateResourcePermissionBaseEntry ());
+ throw new ArgumentNullException ("permissionAccessEntries");
+
+ SetUp ();
+ innerCollection = new EventLogPermissionEntryCollection (this);
+ innerCollection.AddRange (permissionAccessEntries);
}
public EventLogPermission (PermissionState state)
: base (state)
{
+ SetUp ();
}
public EventLogPermission (EventLogPermissionAccess permissionAccess, string machineName)
{
- AddPermissionAccess (new EventLogPermissionEntry (permissionAccess, machineName).CreateResourcePermissionBaseEntry ());
+ SetUp ();
+ innerCollection = new EventLogPermissionEntryCollection (this);
+ innerCollection.Add (new EventLogPermissionEntry (permissionAccess, machineName));
}
public EventLogPermissionEntryCollection PermissionEntries {
- get {return new EventLogPermissionEntryCollection (base.GetPermissionEntries()); }
+ get {
+ if (innerCollection == null) {
+ // must be here to work with XML deserialization
+ innerCollection = new EventLogPermissionEntryCollection (this);
+ }
+ return innerCollection;
+ }
+ }
+
+ // private stuff
+
+ private void SetUp ()
+ {
+ TagNames = new string [1] { "Machine" };
+ PermissionAccessType = typeof (EventLogPermissionAccess);
+ }
+
+ internal ResourcePermissionBaseEntry[] GetEntries ()
+ {
+ return base.GetPermissionEntries ();
+ }
+
+ internal void ClearEntries ()
+ {
+ base.Clear ();
+ }
+
+ internal void Add (object obj)
+ {
+ EventLogPermissionEntry elpe = (obj as EventLogPermissionEntry);
+ base.AddPermissionAccess (elpe.CreateResourcePermissionBaseEntry ());
+ }
+
+ internal void Remove (object obj)
+ {
+ EventLogPermissionEntry elpe = (obj as EventLogPermissionEntry);
+ base.RemovePermissionAccess (elpe.CreateResourcePermissionBaseEntry ());
}
}
}
-