2005-09-22 Chris Toshok <toshok@ximian.com>
authorChris Toshok <toshok@novell.com>
Fri, 23 Sep 2005 18:09:41 +0000 (18:09 -0000)
committerChris Toshok <toshok@novell.com>
Fri, 23 Sep 2005 18:09:41 +0000 (18:09 -0000)
* System.Configuration.Provider/*: move here from
../System/System.Configuration.Provider.

svn path=/trunk/mcs/; revision=50606

mcs/class/System.Configuration/ChangeLog
mcs/class/System.Configuration/System.Configuration.Provider/ChangeLog [new file with mode: 0644]
mcs/class/System.Configuration/System.Configuration.Provider/ProviderBase.cs [new file with mode: 0644]
mcs/class/System.Configuration/System.Configuration.Provider/ProviderCollection.cs [new file with mode: 0644]
mcs/class/System.Configuration/System.Configuration.Provider/ProviderException.cs [new file with mode: 0644]

index 0fe1a60309af0dfcb433eef59349d02e64222fcb..6e68be566c11cbadb64fa36e0238ac2ec539e997 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/mcs/class/System.Configuration/System.Configuration.Provider/ChangeLog b/mcs/class/System.Configuration/System.Configuration.Provider/ChangeLog
new file mode 100644 (file)
index 0000000..b25b12c
--- /dev/null
@@ -0,0 +1,24 @@
+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.
+
diff --git a/mcs/class/System.Configuration/System.Configuration.Provider/ProviderBase.cs b/mcs/class/System.Configuration/System.Configuration.Provider/ProviderBase.cs
new file mode 100644 (file)
index 0000000..fc9afe1
--- /dev/null
@@ -0,0 +1,65 @@
+//
+// 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
diff --git a/mcs/class/System.Configuration/System.Configuration.Provider/ProviderCollection.cs b/mcs/class/System.Configuration/System.Configuration.Provider/ProviderCollection.cs
new file mode 100644 (file)
index 0000000..422e98f
--- /dev/null
@@ -0,0 +1,136 @@
+//
+// 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
diff --git a/mcs/class/System.Configuration/System.Configuration.Provider/ProviderException.cs b/mcs/class/System.Configuration/System.Configuration.Provider/ProviderException.cs
new file mode 100644 (file)
index 0000000..3b2c783
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// 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