Use IndexOf (char)
[mono.git] / mcs / class / System.Web / System.Web.Configuration_2.0 / AuthorizationRuleCollection.cs
index 1d0747db93cac7b58af4a96e60505e6430cea66c..0c1a39d5933d75c0160260397cce7e5a6a8b0c2e 100644 (file)
@@ -35,7 +35,7 @@ using System.Configuration;
 
 namespace System.Web.Configuration {
 
-       [ConfigurationCollection (typeof (AuthorizationRule), AddItemName="add,deny", CollectionType = ConfigurationElementCollectionType.BasicMapAlternate)]
+       [ConfigurationCollection (typeof (AuthorizationRule), AddItemName="allow,deny", CollectionType = ConfigurationElementCollectionType.BasicMapAlternate)]
        public sealed class AuthorizationRuleCollection : ConfigurationElementCollection
        {
                static ConfigurationPropertyCollection properties;
@@ -47,7 +47,7 @@ namespace System.Web.Configuration {
 
                public void Add (AuthorizationRule rule)
                {
-                       BaseAdd (rule);
+                       BaseAdd (rule, false);
                }
 
                public void Clear ()
@@ -55,13 +55,11 @@ namespace System.Web.Configuration {
                        BaseClear ();
                }
 
-               [MonoTODO]
                protected override ConfigurationElement CreateNewElement (string elementName)
                {
-                       return new AuthorizationRule (AuthorizationRuleAction.Allow);
+                       return new AuthorizationRule (elementName == "allow" ? AuthorizationRuleAction.Allow : AuthorizationRuleAction.Deny);
                }
 
-               [MonoTODO]
                protected override ConfigurationElement CreateNewElement ()
                {
                        return new AuthorizationRule (AuthorizationRuleAction.Allow);
@@ -72,27 +70,26 @@ namespace System.Web.Configuration {
                        return (AuthorizationRule) BaseGet (index);
                }
 
-               [MonoTODO]
                protected override object GetElementKey (ConfigurationElement element)
                {
-                       throw new NotImplementedException ();
+                       AuthorizationRule rule = (AuthorizationRule)element;
+
+                       return rule.Action.ToString();
                }
 
-               [MonoTODO]
                public int IndexOf (AuthorizationRule rule)
                {
-                       throw new NotImplementedException ();
+                       return BaseIndexOf (rule);
                }
 
-               [MonoTODO]
                protected override bool IsElementName (string elementname)
                {
-                       throw new NotImplementedException ();
+                       return (elementname == "allow" || elementname == "deny");
                }
 
                public void Remove (AuthorizationRule rule)
                {
-                       BaseRemove (rule);
+                       BaseRemove (rule.Action.ToString());
                }
 
                public void RemoveAt (int index)
@@ -100,31 +97,30 @@ namespace System.Web.Configuration {
                        BaseRemoveAt (index);
                }
 
-               [MonoTODO]
                public void Set (int index, AuthorizationRule rule)
                {
-                       throw new NotImplementedException ();
+                       if (BaseGet(index) != null)
+                               BaseRemoveAt(index);
+                       BaseAdd(index, rule);
                }
 
-               protected override ConfigurationElementCollectionType CollectionType {
+               public override ConfigurationElementCollectionType CollectionType {
                        get { return ConfigurationElementCollectionType.BasicMapAlternate; }
                }
 
-               [MonoTODO]
+               [MonoTODO ("is it okay to return a comma delimited string here?")]
                protected override string ElementName {
-                       get { throw new NotImplementedException (); }
+                       get { return "allow,deny"; }
                }
 
-               [MonoTODO]
                public AuthorizationRule this [int index] {
-                       get { throw new NotImplementedException (); }
-                       set { throw new NotImplementedException (); }
+                       get { return Get (index); }
+                       set { Set (index, value); }
                }
 
                protected override ConfigurationPropertyCollection Properties {
                        get { return properties; }
                }
-
        }
 
 }