diff options
author | Sebastien Pouliot <sebastien@ximian.com> | 2004-08-03 22:23:50 +0400 |
---|---|---|
committer | Sebastien Pouliot <sebastien@ximian.com> | 2004-08-03 22:23:50 +0400 |
commit | 2e6376961d163494dab5d7857e0217f265074395 (patch) | |
tree | bb8345619133d4503e876f9054b95750c91f2e39 /mcs/class/corlib/System.Security.Permissions | |
parent | 60bf77af62b3c8f513993bb7b95bc7b42e49ce94 (diff) |
2004-08-03 Sebastien Pouliot <sebastien@ximian.com>
* ZoneIdentityPermission.cs: Fixed buglets wrt new unit tests. Added
globalization to exceptions.
svn path=/trunk/mcs/; revision=31816
Diffstat (limited to 'mcs/class/corlib/System.Security.Permissions')
-rw-r--r-- | mcs/class/corlib/System.Security.Permissions/ChangeLog | 3 | ||||
-rw-r--r-- | mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermission.cs | 84 |
2 files changed, 54 insertions, 33 deletions
diff --git a/mcs/class/corlib/System.Security.Permissions/ChangeLog b/mcs/class/corlib/System.Security.Permissions/ChangeLog index 66d3db41974..aa11ef66df6 100644 --- a/mcs/class/corlib/System.Security.Permissions/ChangeLog +++ b/mcs/class/corlib/System.Security.Permissions/ChangeLog @@ -1,7 +1,8 @@ 2004-08-03 Sebastien Pouliot <sebastien@ximian.com> * ZoneIdentityPermission.cs: Reordered attributes in ToXml and added - missing Zone attribute. + missing Zone attribute. Fixed buglets wrt new unit tests. Added + globalization to exceptions. 2004-07-14 Sebastien Pouliot <sebastien@ximian.com> diff --git a/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermission.cs index 525ef00b9ac..5105feecbd4 100644 --- a/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermission.cs @@ -3,6 +3,7 @@ // // Authors: // Gonzalo Paniagua Javier (gonzalo@ximian.com) +// Sebastien Pouliot <sebastien@ximian.com> // // (C) 2002 Ximian, Inc (http://www.ximian.com) // Copyright (C) 2004 Novell, Inc (http://www.novell.com) @@ -26,7 +27,9 @@ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // + using System; +using System.Globalization; using System.Security; namespace System.Security.Permissions { @@ -34,22 +37,27 @@ namespace System.Security.Permissions { [Serializable] public sealed class ZoneIdentityPermission : CodeAccessPermission, IBuiltInPermission { - SecurityZone zone; + private SecurityZone zone; public ZoneIdentityPermission (PermissionState state) { - if (state == PermissionState.Unrestricted) - throw new ArgumentException ("unrestricted not allowed"); - - if (state != PermissionState.None) - throw new ArgumentException ("invalid state"); - - zone = SecurityZone.NoZone; + switch (state) { + case PermissionState.None: + zone = SecurityZone.NoZone; + break; + case PermissionState.Unrestricted: + throw new ArgumentException (Locale.GetText ( + "unrestricted not allowed")); + default: + throw new ArgumentException (Locale.GetText ( + "invalid state")); + } } public ZoneIdentityPermission (SecurityZone zone) { - this.zone = zone; + // also needs the validations + SecurityZone = zone; } public override IPermission Copy () @@ -62,10 +70,13 @@ namespace System.Security.Permissions { if (target == null) return zone == SecurityZone.NoZone; - if (!(target is ZoneIdentityPermission)) - throw new ArgumentException (); + ZoneIdentityPermission zip = (target as ZoneIdentityPermission); + if (zip == null) { + throw new ArgumentException (Locale.GetText ( + "Invalid permission")); + } - return zone != ((ZoneIdentityPermission) target).zone; + return (zone == zip.zone); } public override IPermission Union (IPermission target) @@ -73,17 +84,23 @@ namespace System.Security.Permissions { if (target == null) return (zone == SecurityZone.NoZone) ? null : Copy (); - if (!(target is ZoneIdentityPermission)) - throw new ArgumentException (); + ZoneIdentityPermission zip = (target as ZoneIdentityPermission); + if (zip == null) { + throw new ArgumentException (Locale.GetText ( + "Invalid permission")); + } - ZoneIdentityPermission se = (ZoneIdentityPermission) target; - if (zone == se.zone || se.zone == SecurityZone.NoZone) + if (zone == zip.zone || zip.zone == SecurityZone.NoZone) return Copy (); if (zone == SecurityZone.NoZone) - return se.Copy (); - + return zip.Copy (); +#if NET_2_0 + throw new ArgumentException (Locale.GetText ( + "Union impossible")); +#else return null; +#endif } public override IPermission Intersect (IPermission target) @@ -91,10 +108,13 @@ namespace System.Security.Permissions { if (target == null || zone == SecurityZone.NoZone) return null; - if (!(target is ZoneIdentityPermission)) - throw new ArgumentException (); + ZoneIdentityPermission zip = (target as ZoneIdentityPermission); + if (zip == null) { + throw new ArgumentException (Locale.GetText ( + "Invalid permission")); + } - if (zone == ((ZoneIdentityPermission) target).zone) + if (zone == zip.zone) return Copy (); return null; @@ -103,10 +123,12 @@ namespace System.Security.Permissions { public override void FromXml (SecurityElement esd) { if (esd == null) - throw new ArgumentException ("esd is null"); + throw new ArgumentException ("esd"); - if (esd.Attribute ("version") != "1") - throw new ArgumentException ("version attributte is wrong"); + if (esd.Attribute ("version") != "1") { + throw new ArgumentException (Locale.GetText ( + "version attributte is wrong")); + } string zoneName = esd.Attribute ("Zone"); zone = (SecurityZone) Enum.Parse (typeof (SecurityZone), zoneName); @@ -123,15 +145,13 @@ namespace System.Security.Permissions { return se; } - public SecurityZone SecurityZone - { - get { - return zone; - } - + public SecurityZone SecurityZone { + get { return zone; } set { - if (!Enum.IsDefined (typeof (SecurityZone), value)) - throw new ArgumentException ("invalid zone"); + if (!Enum.IsDefined (typeof (SecurityZone), value)) { + throw new ArgumentException (Locale.GetText ( + "invalid zone")); + } zone = value; } } |