+2005-09-22 Chris Toshok <toshok@ximian.com>
+
+ * System.Configuration.Provider/*: move here from
+ ../System/System.Configuration.Provider.
+
2005-09-22 Chris Toshok <toshok@ximian.com>
* System.Configuration.dll.sources: remove
--- /dev/null
+2005-09-22 Chris Toshok <toshok@ximian.com>
+
+ * ProviderBase.cs (Initialize): set the description to name if
+ description isn't specified in config.
+
+2005-09-22 Chris Toshok <toshok@ximian.com>
+
+ * ProviderBase.cs: handle the description config attribute as
+ described in Homer/Sussman/Howard, Table 7.3.
+
+2005-08-24 Sebastien Pouliot <sebastien@ximian.com>
+
+ * ProviderException.cs: New (2.0). Seems to replace the older
+ NotSupportedByProviderException class.
+
+2004-11-18 Lluis Sanchez Gual <lluis@novell.com>
+
+ * IProvider.cs, ProviderCollection.cs: IProvider has been Replaced by
+ ProviderBase.
+
+2003-11-07 Ben Maurer <bmaurer@users.sourceforge.net>
+
+ * Implemented everything for V2.
+
--- /dev/null
+//
+// System.Configuration.Provider.ProviderBase
+//
+// Authors:
+// Lluis Sanchez Gual (lluis@novell.com)
+//
+// (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
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System.Collections.Specialized;
+
+namespace System.Configuration.Provider
+{
+ public abstract class ProviderBase
+ {
+ protected ProviderBase ()
+ {
+ }
+
+ public virtual void Initialize (string name, NameValueCollection config)
+ {
+ _name = name;
+
+ _description = config["description"];
+ if (_description == null)
+ _description = _name;
+ }
+
+ public virtual string Name {
+ get { return _name; }
+ }
+
+ public virtual string Description {
+ get { return _description; }
+ }
+
+ string _description;
+ string _name;
+ }
+}
+
+#endif
--- /dev/null
+//
+// System.Configuration.Provider.ProviderCollection
+//
+// Authors:
+// Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+using System.Collections;
+
+namespace System.Configuration.Provider {
+ public class ProviderCollection : ICollection
+ {
+ public ProviderCollection ()
+ {
+ lookup = new Hashtable (10, CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
+ values = new ArrayList ();
+ }
+
+ public virtual void Add (ProviderBase provider)
+ {
+ if (readOnly)
+ throw new NotSupportedException ();
+
+ if (provider == null || provider.Name == null)
+ throw new ArgumentNullException ();
+
+ int pos = values.Add (provider);
+ try {
+ lookup.Add (provider.Name, pos);
+ } catch {
+ values.RemoveAt (pos);
+ throw;
+ }
+ }
+
+ public void Clear ()
+ {
+ if (readOnly)
+ throw new NotSupportedException ();
+ values.Clear ();
+ lookup.Clear ();
+ }
+
+ public void CopyTo (ProviderBase[] array, int index)
+ {
+ values.CopyTo (array, index);
+ }
+
+ void ICollection.CopyTo (Array array, int index)
+ {
+ values.CopyTo (array, index);
+ }
+
+ public IEnumerator GetEnumerator ()
+ {
+ return values.GetEnumerator();
+ }
+
+ public void Remove (string name)
+ {
+ if (readOnly)
+ throw new NotSupportedException ();
+
+ object position = lookup [name];
+
+ if (position == null || !(position is int))
+ throw new ArgumentException ();
+
+ int pos = (int) position;
+ if (pos >= values.Count)
+ throw new ArgumentException ();
+
+ values.RemoveAt (pos);
+ lookup.Remove (name);
+
+ ArrayList changed = new ArrayList ();
+ foreach (DictionaryEntry de in lookup) {
+ if ((int) de.Value <= pos)
+ continue;
+ changed.Add (de.Key);
+ }
+
+ foreach (string key in changed)
+ lookup [key] = (int)lookup [key] - 1;
+ }
+
+ public void SetReadOnly ()
+ {
+ readOnly = true;
+ }
+
+ public int Count { get { return values.Count; } }
+ public bool IsSynchronized { get { return false; } }
+ public object SyncRoot { get { return this; } }
+
+ public ProviderBase this [string name] {
+ get {
+ object pos = lookup [name];
+ if (pos == null) return null;
+
+ return values [(int) pos] as ProviderBase;
+ }
+ }
+
+
+ Hashtable lookup;
+ bool readOnly;
+ ArrayList values;
+
+ }
+}
+#endif
--- /dev/null
+//
+// System.Configuration.Provider.ProviderException
+//
+// Authors:
+// Ben Maurer (bmaurer@users.sourceforge.net)
+//
+// (C) 2003 Ben Maurer
+// Copyright (c) 2005 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
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+using System.Runtime.Serialization;
+
+namespace System.Configuration.Provider {
+
+ [Serializable]
+ public class ProviderException : Exception {
+
+ public ProviderException ()
+ : base ()
+ {
+ }
+
+ protected ProviderException (SerializationInfo info, StreamingContext context)
+ : base (info, context)
+ {
+ }
+
+ public ProviderException (string message)
+ : base (message)
+ {
+ }
+
+ public ProviderException (string message, Exception innerException)
+ : base (message, innerException)
+ {
+ }
+ }
+}
+#endif