2 // System.Security.Policy.UrlMembershipCondition.cs
5 // Duncan Mak (duncan@ximian.com)
6 // Sebastien Pouliot (spouliot@motus.com)
8 // (C) 2003, Ximian Inc.
9 // (C) 2004 Motus Technologies Inc. (http://www.motus.com)
13 using System.Globalization;
15 namespace System.Security.Policy {
18 public sealed class UrlMembershipCondition
19 : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable, IConstantMembershipCondition
23 public UrlMembershipCondition (string url)
25 this.url = System.Security.Policy.Url.Prepare (url);
30 set { url = System.Security.Policy.Url.Prepare (value); }
33 public bool Check (Evidence evidence)
38 foreach (object o in evidence) {
41 // note: there shouldn't be more than one Url evidence
42 if (System.Security.Policy.Url.Compare (url, u.Value))
49 public IMembershipCondition Copy ()
51 return new UrlMembershipCondition (url);
54 public override bool Equals (Object o)
56 if (o is UrlMembershipCondition) {
57 return System.Security.Policy.Url.Compare (url, ((UrlMembershipCondition) o).Url);
62 public void FromXml (SecurityElement element)
64 FromXml (element, null);
67 public void FromXml (SecurityElement element, PolicyLevel level)
70 throw new ArgumentNullException ("element");
72 if (element.Tag != "IMembershipCondition")
73 throw new ArgumentException (
74 Locale.GetText ("Invalid tag - expected IMembershipCondition"));
76 if (element.Attribute ("class") != GetType ().AssemblyQualifiedName)
77 throw new ArgumentException (
78 Locale.GetText ("Invalid class attribute"));
80 if (element.Attribute ("version") != "1")
81 throw new ArgumentException (
82 Locale.GetText ("Invalid version"));
84 url = element.Attribute ("Url");
87 public override int GetHashCode ()
89 return url.GetHashCode ();
92 public override string ToString ()
94 return "Url - " + url;
97 public SecurityElement ToXml ()
102 public SecurityElement ToXml (PolicyLevel level)
104 SecurityElement element = new SecurityElement ("IMembershipCondition");
105 element.AddAttribute ("class", this.GetType ().AssemblyQualifiedName);
106 element.AddAttribute ("version", "1");
107 element.AddAttribute ("Url", url);