2004-01-26 Sebastien Pouliot <spouliot@videotron.ca>
[mono.git] / mcs / class / corlib / System.Security.Policy / NetCodeGroup.cs
1 //
2 // System.Security.Policy.NetCodeGroup
3 //
4 // Author(s):
5 //  Jackson Harper (Jackson@LatitudeGeo.com)
6 //
7 // (C) 2002 Jackson Harper, All rights reserved
8 //
9
10 using System;
11
12 namespace System.Security.Policy {
13
14         [Serializable]
15         public sealed class NetCodeGroup : CodeGroup {
16
17                 public NetCodeGroup (IMembershipCondition condition) 
18                         : base (condition, null) {}
19
20                 // for PolicyLevel (to avoid validation duplication)
21                 internal NetCodeGroup (SecurityElement e) : base (e) {}
22         
23                 //
24                 // Public Properties
25                 //
26
27                 public override string AttributeString {
28                         get { return null; }
29                 }
30         
31                 public override string MergeLogic {
32                         get { return "Union"; }
33                 }
34
35                 public override string PermissionSetName {
36                         get { return "Same site Web."; }
37                 }
38
39                 //
40                 // Public Methods
41                 //
42
43                 public override CodeGroup Copy ()
44                 {
45                         NetCodeGroup copy = new NetCodeGroup (MembershipCondition);
46                         copy.Name = Name;
47                         copy.Description = Description;
48                         copy.PolicyStatement = PolicyStatement;         
49
50                         foreach (CodeGroup child in Children) {
51                                 copy.AddChild (child.Copy ());  // deep copy
52                         }
53                         return copy;
54                 }
55
56                 [MonoTODO]
57                 public override PolicyStatement Resolve (Evidence evidence)
58                 {
59                         if (evidence == null) 
60                                 throw new ArgumentNullException ();
61
62                         throw new NotImplementedException ();
63                 }
64         
65                 public override CodeGroup ResolveMatchingCodeGroups (Evidence evidence) 
66                 {
67                         if (evidence == null)
68                                 throw new ArgumentNullException ();
69                         
70                         CodeGroup return_group = null;
71                         if (MembershipCondition.Check (evidence)) {
72                                 return_group = Copy ();
73
74                                 foreach (CodeGroup child_group in Children) {
75                                         CodeGroup matching = 
76                                                 child_group.ResolveMatchingCodeGroups (evidence);
77                                         if (matching == null)
78                                                 continue;
79                                         return_group.AddChild (matching);
80                                 }
81                         }
82
83                         return return_group;
84                 }
85         }
86 }
87