Ver código fonte

[system.data] Replace connection string builder from reference sources

Marek Safar 11 anos atrás
pai
commit
0042e68c2e
28 arquivos alterados com 63 adições e 3272 exclusões
  1. 1 0
      mcs/build/common/SR.cs
  2. 2 1
      mcs/class/System.Data/Makefile
  3. 4 0
      mcs/class/System.Data/ReferenceSources/Bid.cs
  4. 0 57
      mcs/class/System.Data/ReferenceSources/DbConnectionStringDefaults.cs
  5. 16 0
      mcs/class/System.Data/ReferenceSources/OdbcHandle.cs
  6. 2 2
      mcs/class/System.Data/ReferenceSources/Res.cs
  7. 12 0
      mcs/class/System.Data/ReferenceSources/ResCategoryAttribute.cs
  8. 0 131
      mcs/class/System.Data/System.Data.Common/DataColumnMapping.cs
  9. 0 338
      mcs/class/System.Data/System.Data.Common/DataColumnMappingCollection.cs
  10. 0 59
      mcs/class/System.Data/System.Data.Common/DataColumnMappingConverter.cs
  11. 0 159
      mcs/class/System.Data/System.Data.Common/DataTableMapping.cs
  12. 0 326
      mcs/class/System.Data/System.Data.Common/DataTableMappingCollection.cs
  13. 0 59
      mcs/class/System.Data/System.Data.Common/DataTableMappingConverter.cs
  14. 0 257
      mcs/class/System.Data/System.Data.Common/DbConnectionOptions.cs
  15. 0 113
      mcs/class/System.Data/System.Data.Common/DbConnectionString.cs
  16. 0 802
      mcs/class/System.Data/System.Data.Common/DbConnectionStringBuilder.cs
  17. 0 317
      mcs/class/System.Data/System.Data.Common/DbDataPermission.cs
  18. 0 113
      mcs/class/System.Data/System.Data.Common/DbDataPermissionAttribute.cs
  19. 2 2
      mcs/class/System.Data/System.Data.Odbc/OdbcConnection.cs
  20. 0 219
      mcs/class/System.Data/System.Data.Odbc/OdbcConnectionStringBuilder.cs
  21. 0 104
      mcs/class/System.Data/System.Data.Odbc/OdbcError.cs
  22. 0 87
      mcs/class/System.Data/System.Data.Odbc/OdbcPermission.cs
  23. 0 64
      mcs/class/System.Data/System.Data.Odbc/OdbcPermissionAttribute.cs
  24. 2 2
      mcs/class/System.Data/System.Data.SqlClient/SqlConnectionStringBuilder.cs
  25. 20 17
      mcs/class/System.Data/System.Data.dll.sources
  26. 0 41
      mcs/class/System.Data/System.Data/KeyRestrictionBehavior.cs
  27. 1 1
      mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionTest.cs
  28. 1 1
      mcs/class/System.Data/Test/System.Data.Common/DbConnectionStringBuilderTest.cs

+ 1 - 0
mcs/build/common/SR.cs

@@ -9,6 +9,7 @@ static class AssemblyRef
 	public const string EcmaPublicKey = "b77a5c561934e089";
 	public const string MicrosoftPublicKey = "b03f5f7f11d50a3a";
  
+ 	public const string MicrosoftVSDesigner = Consts.AssemblyMicrosoft_VSDesigner;
 	public const string SystemDesign = Consts.AssemblySystem_Design;
 	public const string SystemDrawing = Consts.AssemblySystem_Drawing;
 	public const string SystemWeb = Consts.AssemblySystem_Web;

+ 2 - 1
mcs/class/System.Data/Makefile

@@ -8,7 +8,8 @@ LIB_MCS_FLAGS = \
 	-nowarn:649 \
 	-unsafe \
 	-r:System			 	\
-	-r:System.Xml.dll
+	-r:System.Xml.dll \
+	-r:System.Core.dll
 
 MOBILE := $(filter monotouch monodroid xammac mobile mobile_static, $(PROFILE))
 ifdef MOBILE

+ 4 - 0
mcs/class/System.Data/ReferenceSources/Bid.cs

@@ -12,6 +12,10 @@ static class Bid
 	{
 	}
 
+	internal static void TraceSqlReturn(string fmtPrintfW, System.Data.Odbc.ODBC32.RetCode a1, string a2)
+	{
+	}
+
 	internal static void ScopeEnter(out IntPtr hScp, string fmt, params object[] args) {
 		hScp = NoData;
 	}

+ 0 - 57
mcs/class/System.Data/ReferenceSources/DbConnectionStringDefaults.cs

@@ -1,57 +0,0 @@
-using System.Data.SqlClient;
-
-namespace System.Data.Common {
-    internal static class DbConnectionStringDefaults {
-        // all
-//        internal const string NamedConnection           = "";
-
-        // Odbc
-        internal const string Driver                    = "";
-        internal const string Dsn                       = "";
-
-        // OleDb
-        internal const bool   AdoNetPooler              = false;
-        internal const string FileName                  = "";
-        internal const int    OleDbServices             = ~(/*DBPROPVAL_OS_AGR_AFTERSESSION*/0x00000008 | /*DBPROPVAL_OS_CLIENTCURSOR*/0x00000004); // -13
-        internal const string Provider                  = "";
-
-        // OracleClient
-        internal const bool   Unicode                   = false;
-        internal const bool   OmitOracleConnectionName  = false;
-
-        // SqlClient
-        internal const ApplicationIntent ApplicationIntent = System.Data.SqlClient.ApplicationIntent.ReadWrite;
-        internal const string ApplicationName           = ".Net SqlClient Data Provider";
-        internal const bool   AsynchronousProcessing    = false;
-        internal const string AttachDBFilename          = "";
-        internal const int    ConnectTimeout            = 15;
-        internal const bool   ConnectionReset           = true;
-        internal const bool   ContextConnection         = false;
-        internal const string CurrentLanguage           = "";
-        internal const string DataSource                = "";
-        internal const bool   Encrypt                   = false;
-        internal const bool   Enlist                    = true;
-        internal const string FailoverPartner           = "";
-        internal const string InitialCatalog            = "";
-        internal const bool   IntegratedSecurity        = false;
-        internal const int    LoadBalanceTimeout        = 0; // default of 0 means don't use
-        internal const bool   MultipleActiveResultSets  = false;
-        internal const bool   MultiSubnetFailover       = false;
-        internal const int    MaxPoolSize               = 100;
-        internal const int    MinPoolSize               = 0;
-        internal const string NetworkLibrary            = "";
-        internal const int    PacketSize                = 8000;
-        internal const string Password                  = "";
-        internal const bool   PersistSecurityInfo       = false;
-        internal const bool   Pooling                   = true;
-        internal const bool   TrustServerCertificate    = false;
-        internal const string TypeSystemVersion         = "Latest";
-        internal const string UserID                    = "";
-        internal const bool   UserInstance              = false;
-        internal const bool   Replication               = false;
-        internal const string WorkstationID             = "";
-        internal const string TransactionBinding        = "Implicit Unbind";
-        internal const int    ConnectRetryCount         = 1;
-        internal const int    ConnectRetryInterval      = 10;
-    }
-}

+ 16 - 0
mcs/class/System.Data/ReferenceSources/OdbcHandle.cs

@@ -0,0 +1,16 @@
+using System.Text;
+using System.Runtime.InteropServices;
+
+namespace System.Data.Odbc {
+
+    internal abstract class OdbcHandle : SafeHandle {
+
+    	protected OdbcHandle(ODBC32.SQL_HANDLE handleType, OdbcHandle parentHandle) : base(IntPtr.Zero, true) {
+			throw new NotImplementedException ();
+    	}
+
+		internal ODBC32.RetCode GetDiagnosticRecord(short record, out string sqlState, StringBuilder message, out int nativeError, out short cchActual) {
+			throw new NotImplementedException ();
+		}
+    }
+}

+ 2 - 2
mcs/class/System.Data/ReferenceSources/Res.cs

@@ -74,7 +74,7 @@ static class Res
 	public const string ADP_InvalidDataType = "ADP_InvalidDataType";
 	public const string ADP_InvalidDateTimeDigits = "ADP_InvalidDateTimeDigits";
 	public const string ADP_InvalidDestinationBufferIndex = "ADP_InvalidDestinationBufferIndex";
-	public const string ADP_InvalidEnumerationValue = "ADP_InvalidEnumerationValue";
+	public const string ADP_InvalidEnumerationValue = "The {0} enumeration value, {1}, is invalid.";
 	public const string ADP_InvalidFormatValue = "ADP_InvalidFormatValue";
 	public const string ADP_InvalidImplicitConversion = "ADP_InvalidImplicitConversion";
 	public const string ADP_InvalidKey = "ADP_InvalidKey";
@@ -99,7 +99,7 @@ static class Res
 	public const string ADP_InvalidUDL = "ADP_InvalidUDL";
 	public const string ADP_InvalidValue = "ADP_InvalidValue";
 	public const string ADP_InvalidXMLBadVersion = "ADP_InvalidXMLBadVersion";
-	public const string ADP_KeywordNotSupported = "ADP_KeywordNotSupported";
+	public const string ADP_KeywordNotSupported = "Keyword not supported: '{0}'.";
 	public const string ADP_LiteralValueIsInvalid = "ADP_LiteralValueIsInvalid";
 	public const string ADP_LocalTransactionPresent = "ADP_LocalTransactionPresent";
 	public const string ADP_MismatchedAsyncResult = "ADP_MismatchedAsyncResult";

+ 12 - 0
mcs/class/System.Data/ReferenceSources/ResCategoryAttribute.cs

@@ -0,0 +1,12 @@
+using System.ComponentModel;
+
+namespace System.Data
+{
+	sealed class ResCategoryAttribute : CategoryAttribute
+	{
+		public ResCategoryAttribute (string category)
+			: base (category)
+		{
+		}
+	}
+}

+ 0 - 131
mcs/class/System.Data/System.Data.Common/DataColumnMapping.cs

@@ -1,131 +0,0 @@
-//
-// System.Data.Common.DataColumnMapping.cs
-//
-// Authors:
-//   Rodrigo Moya ([email protected])
-//   Tim Coleman ([email protected])
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-//
-
-//
-// Copyright (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.
-//
-
-using System.ComponentModel;
-using System.Data;
-
-namespace System.Data.Common {
-#if NET_2_0
-	[TypeConverterAttribute ("System.Data.Common.DataColumnMapping+DataColumnMappingConverter, " + Consts.AssemblySystem_Data)]
-#else
-	[TypeConverterAttribute (typeof (DataColumnMappingConverter))]
-#endif
-	public sealed class DataColumnMapping : MarshalByRefObject, IColumnMapping, ICloneable
-	{
-		#region Fields
-
-		string sourceColumn;
-		string dataSetColumn;
-
-		#endregion // Fields
-
-		#region Constructors
-		
-		public DataColumnMapping () 
-		{
-			sourceColumn = String.Empty;
-			dataSetColumn = String.Empty;
-		}
-
-		public DataColumnMapping (string sourceColumn, string dataSetColumn) 
-		{
-			this.sourceColumn = sourceColumn;
-			this.dataSetColumn = dataSetColumn;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-#if ONLY_1_1
-		[DataSysDescription ("DataColumn.ColumnName")]
-#endif
-		[DefaultValue ("")]
-		public string DataSetColumn {
-			get { return dataSetColumn; }
-			set { dataSetColumn = value; }
-		}
-
-#if !NET_2_0
-		[DataSysDescription ("Source column name - case sensitive.")]
-#endif
-		[DefaultValue ("")]
-		public string SourceColumn {
-			get { return sourceColumn; }
-			set { sourceColumn = value; }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public DataColumn GetDataColumnBySchemaAction (DataTable dataTable, Type dataType, MissingSchemaAction schemaAction) 
-		{
-			if (dataTable.Columns.Contains (dataSetColumn))
-				return dataTable.Columns [dataSetColumn];
-			if (schemaAction == MissingSchemaAction.Ignore)
-				return null;
-			if (schemaAction == MissingSchemaAction.Error)
-				throw new InvalidOperationException (String.Format ("Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'", DataSetColumn, dataTable.TableName, SourceColumn));
-			return new DataColumn (dataSetColumn, dataType);
-		}
-
-#if NET_2_0
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public static DataColumn GetDataColumnBySchemaAction (string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
-		{
-			if (dataTable.Columns.Contains (dataSetColumn))
-				return dataTable.Columns [dataSetColumn];
-			if (schemaAction == MissingSchemaAction.Ignore)
-				return null;
-			if (schemaAction == MissingSchemaAction.Error)
-				throw new InvalidOperationException (String.Format ("Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'", dataSetColumn, dataTable.TableName, sourceColumn));
-			return new DataColumn (dataSetColumn, dataType);
-		}
-#endif
-
-		object ICloneable.Clone ()
-		{
-			return new DataColumnMapping (SourceColumn, DataSetColumn);
-		}
-
-		public override string ToString ()
-		{
-			return SourceColumn; 
-		}
-
-		#endregion // Methods
-	}
-}

+ 0 - 338
mcs/class/System.Data/System.Data.Common/DataColumnMappingCollection.cs

@@ -1,338 +0,0 @@
-//
-// System.Data.Common.DataColumnMappingCollection
-//
-// Authors:
-//   Rodrigo Moya ([email protected])
-//   Tim Coleman ([email protected])
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-//
-
-//
-// Copyright (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.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-
-namespace System.Data.Common
-{
-	public sealed class DataColumnMappingCollection : MarshalByRefObject, IColumnMappingCollection , IList, ICollection, IEnumerable
-	{
-		#region Fields
-
-		readonly ArrayList list;
-		readonly Hashtable sourceColumns;
-		readonly Hashtable dataSetColumns;
-
-		#endregion // Fields
-
-		#region Constructors 
-
-		public DataColumnMappingCollection ()
-		{
-			list = new ArrayList ();
-			sourceColumns = new Hashtable ();
-			dataSetColumns = new Hashtable ();
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		[Browsable (false)]
-#if !NET_2_0
-		[DataSysDescription ("The number of items in the collection")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public int Count {
-			get { return list.Count; }
-		}
-
-		[Browsable (false)]
-#if !NET_2_0
-		[DataSysDescription ("The specified DataColumnMapping object.")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public DataColumnMapping this [int index] {
-			get { return (DataColumnMapping)(list[index]); }
-			set { 
-				DataColumnMapping mapping = (DataColumnMapping)(list[index]);
-				sourceColumns[mapping] = value;
-				dataSetColumns[mapping] = value;
-				list[index] = value;
-			}
-		}
-
-		[Browsable (false)]
-#if !NET_2_0
-		[DataSysDescription ("The specified DataColumnMapping object.")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public DataColumnMapping this [string sourceColumn] {
-			get {
-				if (!Contains(sourceColumn))
-					throw new IndexOutOfRangeException("DataColumnMappingCollection doesn't contain DataColumnMapping with SourceColumn '" + sourceColumn + "'.");
-				return (DataColumnMapping) sourceColumns [sourceColumn];
-			}
-			set {
-				this [list.IndexOf (sourceColumns [sourceColumn])] = value;
-			}
-		}
-
-		object ICollection.SyncRoot {
-			get { return list.SyncRoot; }
-		}
-
-		bool ICollection.IsSynchronized {
-			get { return list.IsSynchronized; }
-		}
-
-		object IColumnMappingCollection.this [string index] {
-			get { return this [index]; }
-			set {
-				if (!(value is DataColumnMapping))
-					throw new ArgumentException ();
-				this [index] = (DataColumnMapping) value;
-			}
-		}
-
-		object IList.this [int index] {
-			get { return this [index]; }
-			set {
-				if (!(value is DataColumnMapping))
-					throw new ArgumentException ();
-				this [index] = (DataColumnMapping) value;
-			}
-		}
-
-		bool IList.IsReadOnly {
-			get { return false; }
-		}
-
-		bool IList.IsFixedSize {
-			get { return false; }
-		}
-		
-		#endregion // Properties
-
-		#region Methods
-
-		public int Add (object value)
-		{
-			if (!(value is DataColumnMapping))
-				throw new InvalidCastException ();
-
-			list.Add (value);
-			sourceColumns [((DataColumnMapping) value).SourceColumn] = value;
-			dataSetColumns [((DataColumnMapping )value).DataSetColumn] = value;
-			return list.IndexOf (value);
-		}
-
-		public DataColumnMapping Add (string sourceColumn, string dataSetColumn)
-		{
-			DataColumnMapping mapping = new DataColumnMapping (sourceColumn, dataSetColumn);
-			Add (mapping);
-			return mapping;
-		}
-
-#if NET_2_0
-		public void AddRange (Array values)
-		{
-			for (int i = 0; i < values.Length; ++i)
-				Add (values.GetValue (i));
-		}
-#endif
-
-		public void AddRange (DataColumnMapping[] values)
-		{
-			foreach (DataColumnMapping mapping in values)
-				Add (mapping);
-		}
-
-		public void Clear ()
-		{
-			list.Clear ();
-		}
-
-		public bool Contains (object value)
-		{
-			if (!(value is DataColumnMapping))
-				throw new InvalidCastException("Object is not of type DataColumnMapping");
-			return (list.Contains (value));
-		}
-
-		public bool Contains (string value)
-		{
-			return (sourceColumns.Contains (value));
-		}
-
-		public void CopyTo (Array array, int index)
-		{
-			list.CopyTo (array,index);
-		}
-
-#if NET_2_0
-		public void CopyTo (DataColumnMapping [] array, int index)
-		{
-			list.CopyTo (array, index);
-		}
-#endif
-
-		public DataColumnMapping GetByDataSetColumn (string value)
-		{
-			// this should work case-insenstive.
-			if (!(dataSetColumns [value] == null))
-				return (DataColumnMapping) (dataSetColumns [value]);
-			else {
-				string lowcasevalue = value.ToLower ();
-				object [] keyarray = new object [dataSetColumns.Count];
-				dataSetColumns.Keys.CopyTo (keyarray, 0);
-				for (int i = 0; i < keyarray.Length; i++) {
-					string temp = (string) keyarray [i];
-					if (lowcasevalue.Equals (temp.ToLower ()))
-						return (DataColumnMapping) (dataSetColumns [keyarray [i]]);
-				}
-				return null;
-			}
-		}
-
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public static DataColumnMapping GetColumnMappingBySchemaAction (DataColumnMappingCollection columnMappings, string sourceColumn, MissingMappingAction mappingAction)
-		{
-			if (columnMappings.Contains (sourceColumn))
-				return columnMappings[sourceColumn];
-			if (mappingAction == MissingMappingAction.Ignore)
-				return null;
-			if (mappingAction == MissingMappingAction.Error)
-				throw new InvalidOperationException (String.Format ("Missing SourceColumn mapping for '{0}'", sourceColumn));
-			return new DataColumnMapping (sourceColumn, sourceColumn);
-		}
-
-#if NET_2_0
-		[MonoTODO]
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public static DataColumn GetDataColumn (DataColumnMappingCollection columnMappings, string sourceColumn, Type dataType, DataTable dataTable, MissingMappingAction mappingAction, MissingSchemaAction schemaAction)
-		{
-			throw new NotImplementedException ();
-		}
-#endif
-
-		public IEnumerator GetEnumerator ()
-		{
-			return list.GetEnumerator ();
-		}
-
-		IColumnMapping IColumnMappingCollection.Add (string sourceColumnName, string dataSetColumnName)
-		{
-			return Add (sourceColumnName, dataSetColumnName);
-		}
-
-		IColumnMapping IColumnMappingCollection.GetByDataSetColumn (string dataSetColumnName)
-		{
-			return GetByDataSetColumn (dataSetColumnName);
-		}
-
-		public int IndexOf (object value)
-		{
-			return list.IndexOf (value);
-		}
-
-		public int IndexOf (string sourceColumn)
-		{
-			return list.IndexOf (sourceColumns [sourceColumn]);
-		}
-
-		public int IndexOfDataSetColumn (string dataSetColumn)
-		{
-			// this should work case-insensitive
-			if (!(dataSetColumns [dataSetColumn] == null))
-				return list.IndexOf (dataSetColumns [dataSetColumn]);
-			else {
-				string lowcasevalue = dataSetColumn.ToLower ();
-				object [] keyarray = new object[dataSetColumns.Count];
-				dataSetColumns.Keys.CopyTo (keyarray,0);
-				for (int i = 0; i < keyarray.Length; i++) {
-					string temp = (string) keyarray [i];
-					if (lowcasevalue.Equals (temp.ToLower ()))
-						return list.IndexOf (dataSetColumns [keyarray [i]]);
-				}
-				return -1;
-			}
-		}
-
-		public void Insert (int index, object value)
-		{
-			list.Insert (index, value);
-			sourceColumns [((DataColumnMapping) value).SourceColumn] = value;
-			dataSetColumns [((DataColumnMapping) value).DataSetColumn] = value;
-		}
-
-#if NET_2_0
-		public void Insert (int index, DataColumnMapping value)
-		{
-			list.Insert (index, value);
-			sourceColumns [value.SourceColumn] = value;
-			dataSetColumns [value.DataSetColumn] = value;
-		}
-#endif
-
-		public void Remove (object value)
-		{
-			int index = list.IndexOf (value);
-			sourceColumns.Remove (((DataColumnMapping) value).SourceColumn);
-			dataSetColumns.Remove (((DataColumnMapping) value).DataSetColumn);
-			if (index < 0 || index >=list.Count)
-				throw new ArgumentException("There is no such element in collection.");
-			list.Remove (value);
-		}
-
-#if NET_2_0
-		public void Remove (DataColumnMapping value)
-		{
-			int index = list.IndexOf (value);
-			sourceColumns.Remove (value.SourceColumn);
-			dataSetColumns.Remove (value.DataSetColumn);
-			if ( index < 0 || index >=list.Count)
-				throw new ArgumentException("There is no such element in collection.");
-			list.Remove (value);
-		}
-#endif
-
-		public void RemoveAt (int index)
-		{
-			if (index < 0 || index >=list.Count)
-				throw new IndexOutOfRangeException("There is no element in collection.");
-			Remove (list [index]);
-		}
-
-		public void RemoveAt (string sourceColumn)
-		{
-			RemoveAt (list.IndexOf (sourceColumns [sourceColumn]));
-		}
-
-		#endregion // Methods
-	}
-}

+ 0 - 59
mcs/class/System.Data/System.Data.Common/DataColumnMappingConverter.cs

@@ -1,59 +0,0 @@
-//
-// System.Data.Common.DataColumnMappingConverter.cs
-//
-// Author:
-//   Andreas Nahr ([email protected])
-//
-// (C) 2004 Andreas Nahr
-//
-
-//
-// Copyright (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.
-//
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Data.Common
-{
-	internal sealed class DataColumnMappingConverter : ExpandableObjectConverter
-	{
-		[MonoTODO]
-		public DataColumnMappingConverter ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-		{
-			throw new NotImplementedException ();
-		}
-	}
-}

+ 0 - 159
mcs/class/System.Data/System.Data.Common/DataTableMapping.cs

@@ -1,159 +0,0 @@
-//
-// System.Data.Common.DataTableMapping.cs
-//
-// Authors:
-//   Rodrigo Moya ([email protected])
-//   Tim Coleman ([email protected])
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-//
-
-//
-// Copyright (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.
-//
-
-using System.ComponentModel;
-using System.Data;
-
-namespace System.Data.Common {
-#if NET_2_0
-	[TypeConverterAttribute ("System.Data.Common.DataTableMapping+DataTableMappingConverter, " + Consts.AssemblySystem_Data)]
-#else
-	[TypeConverterAttribute (typeof (DataTableMappingConverter))]
-#endif
-	public sealed class DataTableMapping : MarshalByRefObject, ITableMapping, ICloneable
-	{
-		#region Fields
-
-		string sourceTable;
-		string dataSetTable;
-		DataColumnMappingCollection columnMappings;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public DataTableMapping () 
-		{
-			dataSetTable = String.Empty;
-			sourceTable = String.Empty;
-			columnMappings = new DataColumnMappingCollection ();
-		}
-
-		public DataTableMapping (string sourceTable, string dataSetTable) 
-			: this ()
-		{
-			this.sourceTable = sourceTable;
-			this.dataSetTable = dataSetTable;
-		}
-		
-		public DataTableMapping (string sourceTable, string dataSetTable, DataColumnMapping[] columnMappings) 
-			: this (sourceTable, dataSetTable)
-		{
-			this.columnMappings.AddRange (columnMappings);
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-#if !NET_2_0
-		[DataSysDescription ("Individual columns mappings when this table mapping is matched.")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public DataColumnMappingCollection ColumnMappings {
-			get { return columnMappings; }
-		}
-
-#if !NET_2_0
-		[DataSysDescription ("DataTable.TableName")]
-#endif
-		[DefaultValue ("")]
-		public string DataSetTable {
-			get { return dataSetTable; } 
-			set { dataSetTable = value; }
-		}
-
-		IColumnMappingCollection ITableMapping.ColumnMappings {
-			get { return ColumnMappings; }
-		}
-	
-#if !NET_2_0
-		[DataSysDescription ("The DataTableMapping source table name. This name is case sensitive.")]
-#endif
-		[DefaultValue ("")]
-		public string SourceTable {
-			get { return sourceTable; }
-			set { sourceTable = value; }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public DataColumnMapping GetColumnMappingBySchemaAction (string sourceColumn, MissingMappingAction mappingAction) 
-		{
-			return DataColumnMappingCollection.GetColumnMappingBySchemaAction (columnMappings, sourceColumn, mappingAction);
-		}
-
-#if NET_2_0
-		[MonoTODO]
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public DataColumn GetDataColumn (string sourceColumn, 
-						 Type dataType, 
-						 DataTable dataTable, 
-						 MissingMappingAction mappingAction, 
-						 MissingSchemaAction schemaAction)
-		{
-			throw new NotImplementedException ();
-		}
-#endif
-
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public DataTable GetDataTableBySchemaAction (DataSet dataSet, MissingSchemaAction schemaAction) 
-		{
-			if (dataSet.Tables.Contains (DataSetTable))
-				return dataSet.Tables [DataSetTable];
-			if (schemaAction == MissingSchemaAction.Ignore)
-				return null;
-			if (schemaAction == MissingSchemaAction.Error)
-				throw new InvalidOperationException (String.Format ("Missing the '{0} DataTable for the '{1}' SourceTable", DataSetTable, SourceTable));
-			return new DataTable (DataSetTable);
-		}
-
-		object ICloneable.Clone ()
-		{
-			DataColumnMapping [] arr = new DataColumnMapping [columnMappings.Count];
-			columnMappings.CopyTo (arr, 0);
-			return new DataTableMapping (SourceTable, DataSetTable, arr);
-		}
-
-		public override string ToString ()
-		{
-			return SourceTable; 
-		}
-		
-		#endregion // Methods
-	}
-}

+ 0 - 326
mcs/class/System.Data/System.Data.Common/DataTableMappingCollection.cs

@@ -1,326 +0,0 @@
-//
-// System.Data.Common.DataTableMappingCollection.cs
-//
-// Author:
-//   Rodrigo Moya ([email protected])
-//   Tim Coleman ([email protected])
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-//
-
-//
-// Copyright (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.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data.Common
-{
-	[ListBindable (false)]
-	[EditorAttribute ("Microsoft.VSDesigner.Data.Design.DataTableMappingCollectionEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-	public sealed class DataTableMappingCollection : MarshalByRefObject, ITableMappingCollection, IList, ICollection, IEnumerable
-	{
-		#region Fields
-
-		ArrayList mappings;
-		Hashtable sourceTables;
-		Hashtable dataSetTables;
-
-		#endregion
-
-		#region Constructors 
-
-		public DataTableMappingCollection() 
-		{
-			mappings = new ArrayList ();
-			sourceTables = new Hashtable ();
-			dataSetTables = new Hashtable ();
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		[Browsable (false)]
-#if !NET_2_0
-		[DataSysDescription ("The number of items in the collection")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public int Count {
-			get { return mappings.Count; }
-		}
-
-		[Browsable (false)]
-#if !NET_2_0
-		[DataSysDescription ("The specified DataTableMapping object")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public DataTableMapping this [int index] {
-			get { return (DataTableMapping)(mappings[index]); }
-			set {
-				DataTableMapping mapping = (DataTableMapping) mappings[index];
-				sourceTables [mapping.SourceTable] = value;
-				dataSetTables [mapping.DataSetTable] = value;
-				mappings [index] = value; 
-			}
-		}
-
-		[Browsable (false)]
-#if !NET_2_0
-		[DataSysDescription ("The specified DataTableMapping object")]
-#endif
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public DataTableMapping this [string sourceTable] {
-			get { return (DataTableMapping) sourceTables[sourceTable]; }
-			set { this [mappings.IndexOf (sourceTables[sourceTable])] = value; }
-		}
-
-		object IList.this [int index] {
-			get { return (object)(this[index]); }
-			set {
-				if (!(value is DataTableMapping))
-					throw new ArgumentException (); 
-				this[index] = (DataTableMapping)value;
-			}
-		}
-
-		bool ICollection.IsSynchronized {
-			get { return mappings.IsSynchronized; }
-		}
-
-		object ICollection.SyncRoot {
-			get { return mappings.SyncRoot; }
-		}
-
-		bool IList.IsFixedSize {
-			get { return false; }
-		}
-
-		bool IList.IsReadOnly {
-			get { return false; }
-		}
-
-		object ITableMappingCollection.this [string index] {
-			get { return this [index]; }
-			set {
-				if (!(value is DataTableMapping))
-					throw new ArgumentException ();
-				this [index] = (DataTableMapping) value;
-			}
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		public int Add (object value)
-		{
-			if (!(value is System.Data.Common.DataTableMapping))
-				throw new InvalidCastException ("The object passed in was not a DataTableMapping object.");
-
-			sourceTables [((DataTableMapping) value).SourceTable] = value;
-			dataSetTables [((DataTableMapping) value).DataSetTable] = value;
-			return mappings.Add (value);
-		}
-
-		public DataTableMapping Add (string sourceTable, string dataSetTable) 
-		{
-			DataTableMapping mapping = new DataTableMapping (sourceTable, dataSetTable);
-			Add (mapping);
-			return mapping;
-		}
-
-#if NET_2_0
-		public void AddRange (Array values)
-		{
-			for (int i = 0; i < values.Length; ++i)
-				Add (values.GetValue (i));
-		}
-#endif
-
-		public void AddRange (DataTableMapping[] values)
-		{
-			foreach (DataTableMapping dataTableMapping in values)
-				this.Add (dataTableMapping);
-		}
-
-		public void Clear ()
-		{
-			sourceTables.Clear ();
-			dataSetTables.Clear ();
-			mappings.Clear ();
-		}
-
-		public bool Contains (object value)
-		{
-			return mappings.Contains (value);
-		}
-
-		public bool Contains (string value)
-		{
-			return sourceTables.Contains (value);
-		}
-
-		public void CopyTo (Array array, int index)
-		{
-			mappings.CopyTo (array, index);
-		}
-
-#if NET_2_0
-		public void CopyTo (DataTableMapping[] array, int index) 
-		{
-			mappings.CopyTo (array, index);
-		}
-#endif
-
-		public DataTableMapping GetByDataSetTable (string dataSetTable) 
-		{
-			// this should work case-insenstive.
-			if (!(dataSetTables[dataSetTable] == null))
-				return (DataTableMapping) (dataSetTables [dataSetTable]);
-			else {
-				string lowcasevalue = dataSetTable.ToLower ();
-				object [] keyarray = new object [dataSetTables.Count];
-				dataSetTables.Keys.CopyTo (keyarray, 0);
-				for (int i=0; i<keyarray.Length; i++) {
-					string temp = (string) keyarray [i];
-					if (lowcasevalue.Equals (temp.ToLower ()))
-						return (DataTableMapping) (dataSetTables [keyarray [i]]);
-				}
-				return null;
-			}
-		}
-
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public static DataTableMapping GetTableMappingBySchemaAction (DataTableMappingCollection tableMappings, string sourceTable, string dataSetTable, MissingMappingAction mappingAction) 
-		{
-			if (tableMappings.Contains (sourceTable))
-				return tableMappings[sourceTable];
-			if (mappingAction == MissingMappingAction.Error)
-				throw new InvalidOperationException (String.Format ("Missing source table mapping: '{0}'",
-										    sourceTable));
-			if (mappingAction == MissingMappingAction.Ignore)
-				return null;
-			return new DataTableMapping (sourceTable, dataSetTable);
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return mappings.GetEnumerator ();
-		}
-
-		public int IndexOf (object value) 
-		{
-			return mappings.IndexOf (value);
-		}
-
-		public int IndexOf (string sourceTable) 
-		{
-			return IndexOf (sourceTables[sourceTable]);
-		}
-
-		public int IndexOfDataSetTable (string dataSetTable) 
-		{
-			// this should work case-insensitive
-			if (!(dataSetTables[dataSetTable] == null)) 
-				return IndexOf ((DataTableMapping)(dataSetTables[dataSetTable]));
-			else {
-				string lowcasevalue = dataSetTable.ToLower();
-				object [] keyarray = new object[dataSetTables.Count];
-				dataSetTables.Keys.CopyTo(keyarray,0);
-				for (int i=0; i<keyarray.Length; i++) {
-					string temp = (string) keyarray[i];
-					if (lowcasevalue.Equals(temp.ToLower()))
-						return IndexOf ((DataTableMapping)(dataSetTables[keyarray[i]]));
-				}
-				return -1;
-			}
-
-		}
-
-		public void Insert (int index, object value) 
-		{
-			mappings.Insert (index, value);
-			sourceTables [((DataTableMapping) value).SourceTable] = value;
-			dataSetTables [((DataTableMapping) value).DataSetTable] = value;
-		}
-
-#if NET_2_0
-		public void Insert (int index, DataTableMapping value) 
-		{
-			mappings.Insert (index, value);
-			sourceTables [value.SourceTable] = value;
-			dataSetTables [value.DataSetTable] = value;
-		}
-#endif
-
-		ITableMapping ITableMappingCollection.Add (string sourceTableName, string dataSetTableName)
-		{
-			ITableMapping tableMapping = new DataTableMapping (sourceTableName, dataSetTableName);
-			Add (tableMapping);
-			return tableMapping;
-		}
-
-		ITableMapping ITableMappingCollection.GetByDataSetTable (string dataSetTableName)
-		{
-			return this [mappings.IndexOf (dataSetTables [dataSetTableName])];
-		}
-
-		public void Remove (object value) 
-		{
-			if (!(value is DataTableMapping))
-				throw new InvalidCastException ();
-			int index = mappings.IndexOf (value);
-			if (index < 0 || index >= mappings.Count)
-				throw new ArgumentException("There is no such element in collection.");
-			mappings.Remove ((DataTableMapping) value);
-		}
-
-#if NET_2_0
-		public void Remove (DataTableMapping value) 
-		{
-			int index = mappings.IndexOf (value);
-			if (index < 0 || index >= mappings.Count)
-				throw new ArgumentException("There is no such element in collection."); 
-			mappings.Remove ((DataTableMapping) value);
-		}
-#endif
-
-		public void RemoveAt (int index) 
-		{
-			 if (index < 0 || index >= mappings.Count)
-				throw new IndexOutOfRangeException("There is no element in collection.");
-
-			mappings.RemoveAt (index);
-		}
-
-		public void RemoveAt (string sourceTable) 
-		{
-			RemoveAt (mappings.IndexOf (sourceTables[sourceTable]));
-		}
-
-		#endregion // Methods
-	}
-}

+ 0 - 59
mcs/class/System.Data/System.Data.Common/DataTableMappingConverter.cs

@@ -1,59 +0,0 @@
-//
-// System.Data.Common.DataTableMappingConverter.cs
-//
-// Author:
-//   Andreas Nahr ([email protected])
-//
-// (C) 2004 Andreas Nahr
-//
-
-//
-// Copyright (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.
-//
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Data.Common
-{
-	internal sealed class DataTableMappingConverter : ExpandableObjectConverter
-	{
-		[MonoTODO]
-		public DataTableMappingConverter ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-		{
-			throw new NotImplementedException ();
-		}
-	}
-}

+ 0 - 257
mcs/class/System.Data/System.Data.Common/DbConnectionOptions.cs

@@ -1,257 +0,0 @@
-//
-// System.Data.Common.DbConnectionOptions
-//	adapted from older (pre beta1) DbConnectionString
-//
-// Authors:
-//	Tim Coleman ([email protected])
-//	Sebastien Pouliot  <[email protected]>
-//
-// Copyright (C) Tim Coleman, 2003
-// Copyright (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;
-using System.Collections.Specialized;
-using System.Security;
-using System.Text;
-
-namespace System.Data.Common {
-
-	internal class DbConnectionOptions {
-
-		#region Fields
-
-		internal NameValueCollection options;
-		internal string normalizedConnectionString;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		internal DbConnectionOptions ()
-		{
-		}
-
-		protected internal DbConnectionOptions (DbConnectionOptions connectionOptions)
-		{
-			options = connectionOptions.options;
-		}
-
-		public DbConnectionOptions (string connectionString)
-		{
-			options = new NameValueCollection ();
-			ParseConnectionString (connectionString);
-		}
-		
-		[MonoTODO]
-		public DbConnectionOptions (string connectionString, Hashtable synonyms, bool useFirstKeyValuePair)
-			: this (connectionString)
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		[MonoTODO]
-		public bool IsEmpty {
-			get { throw new NotImplementedException (); }
-		}
-
-		public string this [string keyword] {
-			get { return options [keyword]; }
-		}
-
-		public ICollection Keys {
-			get { return options.Keys; }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		protected void BuildConnectionString (StringBuilder builder, string[] withoutOptions, string insertValue)
-		{
-			throw new NotImplementedException ();
-		}
-
-		public bool ContainsKey (string keyword)
-		{
-			return (options.Get (keyword) != null);
-		}
-
-		public bool ConvertValueToBoolean (string keyname, bool defaultvalue)
-		{
-			if (ContainsKey (keyname))
-				return Boolean.Parse (this [keyname].Trim ());
-			return defaultvalue;
-		}
-
-		public int ConvertValueToInt32 (string keyname, int defaultvalue)
-		{
-			if (ContainsKey (keyname))
-				return Int32.Parse (this [keyname].Trim ());
-			return defaultvalue;
-		}
-
-		[MonoTODO]
-		public bool ConvertValueToIntegratedSecurity ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		public string ConvertValueToString (string keyname, string defaultValue)
-		{
-			if (ContainsKey (keyname))
-				return this [keyname];
-			return defaultValue;
-		}
-
-		[MonoTODO]
-		protected internal virtual PermissionSet CreatePermissionSet ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		protected internal virtual string Expand ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static string RemoveKeyValuePairs (string connectionString, string[] keynames)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public string UsersConnectionString (bool hisPasswordPwd)
-		{
-			throw new NotImplementedException ();
-		}
-
-		internal void ParseConnectionString (string connectionString)
-		{
-			if (connectionString.Length == 0)
-				return;
-
-			connectionString += ";";
-
-			bool inQuote = false;
-			bool inDQuote = false;
-			bool inName = true;
-
-			string name = String.Empty;
-			string value = String.Empty;
-			StringBuilder sb = new StringBuilder ();
-
-			for (int i = 0; i < connectionString.Length; i += 1) {
-				char c = connectionString [i];
-				char peek;
-				if (i == connectionString.Length - 1)
-					peek = '\0';
-				else 
-					peek = connectionString [i + 1];
-
-				switch (c) {
-				case '\'':
-					if (inDQuote) 
-						sb.Append (c);
-					else if (peek.Equals (c)) {
-						sb.Append (c);
-						i += 1;
-					}
-					else 
-						inQuote = !inQuote;
-					break;
-				case '"':
-					if (inQuote) 
-						sb.Append (c);
-					else if (peek.Equals (c)) {
-						sb.Append (c);
-						i += 1;
-					}
-					else 
-						inDQuote = !inDQuote;
-					break;
-				case ';':
-					if (inDQuote || inQuote)
-						sb.Append (c);
-					else {
-						if (name != String.Empty && name != null) {
-							value = sb.ToString ();
-							// FIXME - KeywordLookup is an NOP
-							// options [KeywordLookup (name.Trim ())] = value;
-							options [name.Trim ()] = value;
-						}
-						inName = true;
-						name = String.Empty;
-						value = String.Empty;
-						sb = new StringBuilder ();
-					}
-					break;
-				case '=':
-					if (inDQuote || inQuote || !inName)
-						sb.Append (c);
-					else if (peek.Equals (c)) {
-						sb.Append (c);
-						i += 1;
-					} 
-					else {
-						name = sb.ToString ();
-						sb = new StringBuilder ();
-						inName = false;
-					}
-					break;
-				case ' ':
-					if (inQuote || inDQuote)
-						sb.Append (c);
-					else if (sb.Length > 0 && !peek.Equals (';'))
-						sb.Append (c);
-					break;
-				default:
-					sb.Append (c);
-					break;
-				}
-			}	
-			
-			StringBuilder normalized = new StringBuilder ();
-			ArrayList keys = new ArrayList ();
-			keys.AddRange (Keys);
-			keys.Sort ();
-			foreach (string key in keys)
-			{
-				string entry = String.Format ("{0}=\"{1}\";", key, this [key].Replace ("\"", "\"\""));
-				normalized.Append (entry);
-			}
-			normalizedConnectionString = normalized.ToString ();
-		}
-
-		#endregion // Methods
-	}
-}
-
-#endif

+ 0 - 113
mcs/class/System.Data/System.Data.Common/DbConnectionString.cs

@@ -1,113 +0,0 @@
-//
-// System.Data.Common.DbConnectionString
-//
-// Authors:
-//	Tim Coleman ([email protected])
-//	Sebastien Pouliot  <[email protected]>
-//
-// Copyright (C) Tim Coleman, 2003
-// Copyright (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;
-using System.Collections.Specialized;
-using System.Runtime.Serialization;
-using System.Text;
-
-namespace System.Data.Common {
-
-	[Obsolete ()]
-	internal class DbConnectionString : DbConnectionOptions, ISerializable {
-
-		#region Fields
-
-		KeyRestrictionBehavior behavior;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		protected internal DbConnectionString (DbConnectionString constr)
-		{
-			options = constr.options;
-		}
-
-		public DbConnectionString (string connectionString)
-			: base (connectionString)
-		{
-			options = new NameValueCollection ();
-			ParseConnectionString (connectionString);
-		}
-		
-		[MonoTODO]
-		protected DbConnectionString (SerializationInfo si, StreamingContext sc)
-		{
-		}
-
-		[MonoTODO]
-		public DbConnectionString (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
-			: this (connectionString)
-		{
-			this.behavior = behavior;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public KeyRestrictionBehavior Behavior {
-			get { return behavior; }
-		}
-
-		[MonoTODO]
-		public string Restrictions {
-			get { throw new NotImplementedException (); }
-		}
-		
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
-		{
-			throw new NotImplementedException ();
-		}
-
-		protected virtual string KeywordLookup (string keyname)
-		{
-			return keyname;
-		}
-
-		[MonoTODO]
-		public virtual void PermissionDemand ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
-
-#endif

+ 0 - 802
mcs/class/System.Data/System.Data.Common/DbConnectionStringBuilder.cs

@@ -1,802 +0,0 @@
-//
-// System.Data.Common.DbConnectionStringBuilder.cs
-//
-// Author:
-//	Sureshkumar T ([email protected])
-//	Gert Driesen ([email protected]
-//
-// Copyright (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;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Reflection;
-using System.Text;
-
-namespace System.Data.Common
-{
-	public class DbConnectionStringBuilder : IDictionary, ICollection, IEnumerable, ICustomTypeDescriptor
-	{
-		#region Fields
-
-		readonly Dictionary<string, object> _dictionary;
-		readonly bool useOdbcRules;
-
-		#endregion Fields
-
-		#region Constructors
-
-		public DbConnectionStringBuilder () : this (false)
-		{
-		}
-
-		public DbConnectionStringBuilder (bool useOdbcRules)
-		{
-			this.useOdbcRules = useOdbcRules;
-			_dictionary = new Dictionary <string, object> (StringComparer.InvariantCultureIgnoreCase);
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		[Browsable (false)]
-		[DesignOnly (true)]
-		public bool BrowsableConnectionString {
-			get { throw new NotImplementedException (); }
-			set { throw new NotImplementedException (); }
-		}
-
-		[RefreshProperties (RefreshProperties.All)]
-		public string ConnectionString {
-			get {
-				IDictionary<string, object> dictionary = (IDictionary <string, object>) _dictionary;
-				StringBuilder sb = new StringBuilder ();
-				foreach (string key in Keys) {
-					object value = null;
-					if (!dictionary.TryGetValue (key, out value))
-						continue;
-					string val = value.ToString ();
-					AppendKeyValuePair (sb, key, val, useOdbcRules);
-				}
-				return sb.ToString ();
-			}
-			set {
-				Clear ();
-				if (value == null)
-					return;
-				if (value.Trim ().Length == 0)
-					return;
-				ParseConnectionString (value);
-			}
-		}
-
-		[Browsable (false)]
-                public virtual int Count
-                {
-                        get { return _dictionary.Count; }
-                }
-
-		[Browsable (false)]
-                public virtual bool IsFixedSize
-                {
-                        get { return false; }
-                }
-
-		[Browsable (false)]
-                public bool IsReadOnly
-                {
-                        get { throw new NotImplementedException (); }
-                }
-
-		[Browsable (false)]
-		public virtual object this [string keyword] {
-			get {
-				if (ContainsKey (keyword))
-					return _dictionary [keyword];
-				else
-					throw new ArgumentException (string.Format (
-						"Keyword '{0}' does not exist",
-						keyword));
-			}
-			set {
-				if (value == null) {
-					Remove (keyword);
-					return;
-				}
-
-				if (keyword == null)
-					throw new ArgumentNullException ("keyword");
-
-				if (keyword.Length == 0)
-					throw CreateInvalidKeywordException (keyword);
-
-				for (int i = 0; i < keyword.Length; i++) {
-					char c = keyword [i];
-					if (i == 0 && (Char.IsWhiteSpace (c) || c == ';'))
-						throw CreateInvalidKeywordException (keyword);
-					if (i == (keyword.Length - 1) && Char.IsWhiteSpace (c))
-						throw CreateInvalidKeywordException (keyword);
-					if (Char.IsControl (c))
-						throw CreateInvalidKeywordException (keyword);
-				}
-
-				if (ContainsKey (keyword))
-					_dictionary [keyword] = value;
-				else
-					_dictionary.Add (keyword, value);
-			}
-		}
-
-		[Browsable (false)]
-		public virtual ICollection Keys
-		{
-			get {
-				string [] keys = new string [_dictionary.Keys.Count];
-				((ICollection<string>) _dictionary.Keys).CopyTo (keys, 0);
-				ReadOnlyCollection<string> keyColl = new ReadOnlyCollection<string> (keys);
-				return keyColl; 
-			}
-		}
-
-                bool ICollection.IsSynchronized
-                {
-                        get { throw new NotImplementedException (); }
-                }
-
-                object ICollection.SyncRoot
-                {
-                        get { throw new NotImplementedException (); }
-                }
-
-                object IDictionary.this [object keyword]
-                {
-                        get { return this [(string) keyword]; }
-                        set { this [(string) keyword] = value; }
-                }
-
-		[Browsable (false)]
-		public virtual ICollection Values {
-			get {
-				object [] values = new object [_dictionary.Values.Count];
-				((ICollection<object>) _dictionary.Values).CopyTo (values, 0);
-				ReadOnlyCollection<object> valuesColl = new ReadOnlyCollection<object> (values);
-				return valuesColl; 
-			}
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		public void Add (string keyword, object value)
-		{
-			this [keyword] = value;
-		}
-
-		public static void AppendKeyValuePair (StringBuilder builder, string keyword, string value,
-						       bool useOdbcRules)
-		{
-			if (builder == null)
-				throw new ArgumentNullException ("builder");
-			if (keyword == null)
-				throw new ArgumentNullException ("keyName");
-			if (keyword.Length == 0)
-				throw new ArgumentException ("Empty keyword is not valid.");
-
-			if (builder.Length > 0)
-				builder.Append (';');
-			if (!useOdbcRules)
-				builder.Append (keyword.Replace ("=", "=="));
-			else
-				builder.Append (keyword);
-			builder.Append ('=');
-
-			if (value == null || value.Length == 0)
-				return;
-
-			if (!useOdbcRules) {
-				bool dquoteFound = (value.IndexOf ('\"') > -1);
-				bool squoteFound = (value.IndexOf ('\'') > -1);
-	
-				if (dquoteFound && squoteFound) {
-					builder.Append ('\"');
-					builder.Append (value.Replace ("\"", "\"\""));
-					builder.Append ('\"');
-				} else if (dquoteFound) {
-					builder.Append ('\'');
-					builder.Append (value);
-					builder.Append ('\'');
-				} else if (squoteFound || value.IndexOf ('=') > -1 || value.IndexOf (';') > -1) {
-					builder.Append ('\"');
-					builder.Append (value);
-					builder.Append ('\"');
-				} else if (ValueNeedsQuoting (value)) {
-					builder.Append ('\"');
-					builder.Append (value);
-					builder.Append ('\"');
-				} else
-					builder.Append (value);
-			} else {
-				int braces = 0;
-				bool semicolonFound = false;
-				int len = value.Length;
-				bool needBraces = false;
-
-				int lastChar = -1;
-
-				for (int i = 0; i < len; i++) {
-					int peek = 0;
-					if (i == (len - 1))
-						peek = -1;
-					else
-						peek = value [i + 1];
-
-					char c = value [i];
-					switch (c) {
-					case '{':
-						braces++;
-						break;
-					case '}':
-						if (peek.Equals (c)) {
-							i++;
-							continue;
-						} else {
-							braces--;
-							if (peek != -1)
-								needBraces = true;
-						}
-						break;
-					case ';':
-						semicolonFound = true;
-						break;
-					default:
-						break;
-					}
-					lastChar = c;
-				}
-
-				if (value [0] == '{' && (lastChar != '}' || (braces == 0 && needBraces))) {
-					builder.Append ('{');
-					builder.Append (value.Replace ("}", "}}"));
-					builder.Append ('}');
-					return;
-				}
-
-				bool isDriver = (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0);
-				if (isDriver) {
-					if (value [0] == '{' && lastChar == '}' && !needBraces) {
-						builder.Append (value);
-						return;
-					}
-					builder.Append ('{');
-					builder.Append (value.Replace ("}", "}}"));
-					builder.Append ('}');
-					return;
-				}
-
-				if (value [0] == '{' && (braces != 0 || lastChar != '}') && needBraces) {
-					builder.Append ('{');
-					builder.Append (value.Replace ("}", "}}"));
-					builder.Append ('}');
-					return;
-				}
-
-				if (value [0] != '{' && semicolonFound) {
-					builder.Append ('{');
-					builder.Append (value.Replace ("}", "}}"));
-					builder.Append ('}');
-					return;
-				}
-
-				builder.Append (value);
-			}
-		}
-
-		public static void AppendKeyValuePair (StringBuilder builder, string keyword, string value)
-		{
-			AppendKeyValuePair (builder, keyword, value, false);
-		}
-
-		public virtual void Clear ()
-		{
-			_dictionary.Clear ();
-		}
-
-		public virtual bool ContainsKey (string keyword)
-		{
-			if (keyword == null)
-				throw new ArgumentNullException ("keyword");
-			return _dictionary.ContainsKey (keyword);
-		}
-
-                public virtual bool EquivalentTo (DbConnectionStringBuilder connectionStringBuilder)
-                {
-                        bool ret = true;
-                        try {
-                                if (Count != connectionStringBuilder.Count)
-                                        ret = false;
-                                else {
-                                        foreach (string key in Keys) {
-                                                if (!this [key].Equals (connectionStringBuilder [key])) {
-                                                        ret = false;
-                                                        break;
-                                                }
-                                        }
-                                }
-                        } catch (ArgumentException) {
-                                ret = false;
-                        }
-                        return ret;
-                }
-
-		[MonoTODO]
-		protected virtual void GetProperties (Hashtable propertyDescriptors)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		protected internal void ClearPropertyDescriptors ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		public virtual bool Remove (string keyword)
-		{
-			if (keyword == null)
-				throw new ArgumentNullException ("keyword");
-			return _dictionary.Remove (keyword);
-		}
-
-                public virtual bool ShouldSerialize (string keyword)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                void ICollection.CopyTo (Array array, int index)
-                {
-			if (array == null)
-				throw new ArgumentNullException ("array");
-			KeyValuePair<string, object> [] arr = array as KeyValuePair<string, object> [];
-			if (arr == null)
-				throw new ArgumentException ("Target array type is not compatible with the type of items in the collection");
-			((ICollection<KeyValuePair<string, object>>) _dictionary).CopyTo (arr, index);
-                }
-
-                void IDictionary.Add (object keyword, object value)
-                {
-                        this.Add ((string) keyword, value);
-                }
-
-                bool IDictionary.Contains (object keyword)
-                {
-                        return ContainsKey ((string) keyword);
-                }
-
-                IDictionaryEnumerator IDictionary.GetEnumerator ()
-                {
-                        return (IDictionaryEnumerator) _dictionary.GetEnumerator ();
-                }
-
-                void IDictionary.Remove (object keyword)
-                {
-                        Remove ((string) keyword);
-                }
-
-                IEnumerator IEnumerable.GetEnumerator ()
-                {
-                        return (IEnumerator) _dictionary.GetEnumerator ();
-                }
-
-                private static object _staticAttributeCollection = null;
-                AttributeCollection ICustomTypeDescriptor.GetAttributes ()
-                {
-                        object value = _staticAttributeCollection;
-                        if (value == null) {
-                                CLSCompliantAttribute clsAttr = new CLSCompliantAttribute (true);
-                                DefaultMemberAttribute defMemAttr = new DefaultMemberAttribute ("Item");
-                                Attribute [] attrs = {clsAttr, defMemAttr};
-                                value = new AttributeCollection (attrs);
-                        }
-                        System.Threading.Interlocked.CompareExchange (ref _staticAttributeCollection, value, null);
-                        return _staticAttributeCollection as AttributeCollection;
-                }
-
-                string ICustomTypeDescriptor.GetClassName ()
-                {
-                        return this.GetType ().ToString ();
-                }
-
-                string ICustomTypeDescriptor.GetComponentName ()
-                {
-                        return null;
-                }
-
-                TypeConverter ICustomTypeDescriptor.GetConverter ()
-                {
-                        return new CollectionConverter ();
-                }
-
-                EventDescriptor ICustomTypeDescriptor.GetDefaultEvent ()
-                {
-                        return null;
-                }
-
-                PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty ()
-                {
-                        return null;
-                }
-
-                object ICustomTypeDescriptor.GetEditor (Type editorBaseType)
-                {
-                        return null;
-                }
-
-                EventDescriptorCollection ICustomTypeDescriptor.GetEvents ()
-                {
-                        return EventDescriptorCollection.Empty;
-                }
-
-                EventDescriptorCollection ICustomTypeDescriptor.GetEvents (Attribute [] attributes)
-                {
-                        return EventDescriptorCollection.Empty;
-                }
-
-                PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties ()
-                {
-                        return PropertyDescriptorCollection.Empty;
-                }
-
-                PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties (Attribute [] attributes)
-                {
-                        return PropertyDescriptorCollection.Empty;
-                }
-
-                object ICustomTypeDescriptor.GetPropertyOwner (PropertyDescriptor pd)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                public override string ToString ()
-                {
-                        return ConnectionString;
-                }
-
-                public virtual bool TryGetValue (string keyword, out object value)
-                {
-                        // FIXME : not sure, difference between this [keyword] and this method
-                        bool found = ContainsKey (keyword);
-                        if (found)
-                                value = this [keyword];
-                        else
-                                value = null;
-                        return found;
-                }
-
-		static ArgumentException CreateInvalidKeywordException (string keyword)
-		{
-			return new ArgumentException ("A keyword cannot contain "
-				+ "control characters, leading semicolons or "
-				+ "leading or trailing whitespace.", keyword);
-		}
-
-		static ArgumentException CreateConnectionStringInvalidException (int index)
-		{
-			return new ArgumentException ("Format of initialization "
-				+ "string does not conform to specifications at "
-				+ "index " + index + ".");
-		}
-
-		static bool ValueNeedsQuoting (string value)
-		{
-			foreach (char c in value) {
-				if (char.IsWhiteSpace (c))
-					return true;
-			}
-			return false;
-		}
-		void ParseConnectionString (string connectionString)
-		{
-			if (useOdbcRules)
-				ParseConnectionStringOdbc (connectionString);
-			else
-				ParseConnectionStringNonOdbc (connectionString);
-		}
-
-		void ParseConnectionStringOdbc (string connectionString)
-		{
-			bool inQuote = false;
-			bool inDQuote = false;
-			bool inName = true;
-			bool inBraces = false;
-
-			string name = String.Empty;
-			string val = String.Empty;
-			StringBuilder sb = new StringBuilder ();
-			int len = connectionString.Length;
-
-			for (int i = 0; i < len; i++) {
-				char c = connectionString [i];
-				int peek = (i == (len - 1)) ? -1 : connectionString [i + 1];
-
-				switch (c) {
-				case '{':
-					if (inName) {
-						sb.Append (c);
-						continue;
-					}
-
-					if (sb.Length == 0)
-						inBraces = true;
-					sb.Append (c);
-					break;
-				case '}':
-					if (inName || !inBraces) {
-						sb.Append (c);
-						continue;
-					}
-
-					if (peek == -1) {
-						sb.Append (c);
-						inBraces = false;
-					} else if (peek.Equals (c)) {
-						sb.Append (c);
-						sb.Append (c);
-						i++;
-					} else {
-						int next = NextNonWhitespaceChar (connectionString, i);
-						if (next != -1 && ((char) next) != ';')
-							throw CreateConnectionStringInvalidException (next);
-						sb.Append (c);
-						inBraces = false;
-					}
-					break;
-				case ';':
-					if (inName || inBraces) {
-						sb.Append (c);
-						continue;
-					}
-
-					if (name.Length > 0 && sb.Length > 0) {
-						val = sb.ToString ();
-						name = name.ToLower ().TrimEnd ();
-						this [name] = val;
-					} else if (sb.Length > 0)
-						throw CreateConnectionStringInvalidException (c);
-					inName = true;
-					name = String.Empty;
-					sb.Length = 0;
-					break;
-				case '=':
-					if (inBraces || !inName) {
-						sb.Append (c);
-						continue;
-					}
-
-					name = sb.ToString ();
-					if (name.Length == 0)
-						throw CreateConnectionStringInvalidException (c);
-					sb.Length = 0;
-					inName = false;
-					break;
-				default:
-					if (inDQuote || inQuote || inBraces)
-						sb.Append (c);
-					else if (char.IsWhiteSpace (c)) {
-						// ignore leading whitespace
-						if (sb.Length > 0) {
-							int nextChar = SkipTrailingWhitespace (connectionString, i);
-							if (nextChar == -1)
-								sb.Append (c);
-							else
-								i = nextChar;
-						}
-					} else
-						sb.Append (c);
-					break;
-				}
-			}
-
-			if ((inName && sb.Length > 0) || inDQuote || inQuote || inBraces)
-				throw CreateConnectionStringInvalidException (len - 1);
-
-			if (name.Length > 0 && sb.Length > 0) {
-				val = sb.ToString ();
-				name = name.ToLower ().TrimEnd ();
-				this [name] = val;
-			}
-		}
-
-		void ParseConnectionStringNonOdbc (string connectionString)
-		{
-			bool inQuote = false;
-			bool inDQuote = false;
-			bool inName = true;
-
-			string name = String.Empty;
-			string val = String.Empty;
-			StringBuilder sb = new StringBuilder ();
-			int len = connectionString.Length;
-
-			for (int i = 0; i < len; i++) {
-				char c = connectionString [i];
-				int peek = (i == (len - 1)) ? -1 : connectionString [i + 1];
-
-				switch (c) {
-				case '\'':
-					if (inName) {
-						sb.Append (c);
-						continue;
-					}
-
-					if (inDQuote)
-						sb.Append (c);
-					else if (inQuote) {
-						if (peek == -1)
-							inQuote = false;
-						else if (peek.Equals (c)) {
-							sb.Append (c);
-							i++;
-						} else {
-							int next = NextNonWhitespaceChar (connectionString, i);
-							if (next != -1 && ((char) next) != ';')
-								throw CreateConnectionStringInvalidException (next);
-							inQuote = false;
-						}
-
-						if (!inQuote) {
-							val = sb.ToString ();
-							name = name.ToLower ().TrimEnd ();
-							this [name] = val;
-							inName = true;
-							name = String.Empty;
-							sb.Length = 0;
-						}
-					} else if (sb.Length == 0)
-						inQuote = true;
-					else
-						sb.Append (c);
-					break;
-				case '"':
-					if (inName) {
-						sb.Append (c);
-						continue;
-					}
-
-					if (inQuote)
-						sb.Append (c);
-					else if (inDQuote) {
-						if (peek == -1)
-							inDQuote = false;
-						else if (peek.Equals (c)) {
-							sb.Append (c);
-							i++;
-						} else {
-							int next = NextNonWhitespaceChar (connectionString, i);
-							if (next != -1 && ((char) next) != ';')
-								throw CreateConnectionStringInvalidException (next);
-							inDQuote = false;
-						}
-					} else if (sb.Length == 0)
-						inDQuote = true;
-					else
-						sb.Append (c);
-					break;
-				case ';':
-					if (inName) {
-						sb.Append (c);
-						continue;
-					}
-
-					if (inDQuote || inQuote)
-						sb.Append (c);
-					else {
-						if (name.Length > 0 && sb.Length > 0) {
-							val = sb.ToString ();
-							name = name.ToLower ().TrimEnd ();
-							this [name] = val;
-						} else if (sb.Length > 0)
-							throw CreateConnectionStringInvalidException (c);
-						inName = true;
-						name = String.Empty;
-						sb.Length = 0;
-					}
-					break;
-				case '=':
-					if (inDQuote || inQuote || !inName)
-						sb.Append (c);
-					else if (peek != -1 && peek.Equals (c)) {
-						sb.Append (c);
-						i++;
-					} else {
-						name = sb.ToString ();
-						if (name.Length == 0)
-							throw CreateConnectionStringInvalidException (c);
-						sb.Length = 0;
-						inName = false;
-					}
-					break;
-				default:
-					if (inDQuote || inQuote)
-						sb.Append (c);
-					else if (char.IsWhiteSpace (c)) {
-						// ignore leading whitespace
-						if (sb.Length > 0) {
-							int nextChar = SkipTrailingWhitespace (connectionString, i);
-							if (nextChar == -1)
-								sb.Append (c);
-							else
-								i = nextChar;
-						}
-					} else
-						sb.Append (c);
-					break;
-				}
-			}
-
-			if ((inName && sb.Length > 0) || inDQuote || inQuote)
-				throw CreateConnectionStringInvalidException (len -1);
-
-			if (name.Length > 0 && sb.Length > 0) {
-				val = sb.ToString ();
-				name = name.ToLower ().TrimEnd ();
-				this [name] = val;
-			}
-		}
-
-		static int SkipTrailingWhitespace (string value, int index)
-		{
-			int len = value.Length;
-			for (int i = (index + 1); i < len; i++) {
-				char c = value [i];
-				if (c == ';')
-					return (i - 1);
-				if (!char.IsWhiteSpace (c))
-					return -1;
-			}
-			return len - 1;
-		}
-
-		static int NextNonWhitespaceChar (string value, int index)
-		{
-			int len = value.Length;
-			for (int i = (index + 1); i < len; i++) {
-				char c = value [i];
-				if (!char.IsWhiteSpace (c))
-					return (int) c;
-			}
-			return -1;
-		}
-
-		#endregion // Public Methods
-	}
-}
-#endif // NET_2_0 using

+ 0 - 317
mcs/class/System.Data/System.Data.Common/DbDataPermission.cs

@@ -1,317 +0,0 @@
-//
-// System.Data.Common.DbDataPermission.cs
-//
-// Authors:
-//	Rodrigo Moya ([email protected])
-//	Tim Coleman ([email protected])
-//	Sebastien Pouliot  <[email protected]>
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-// Copyright (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.
-//
-
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.Common {
-
-	[Serializable]
-	public abstract class DBDataPermission : CodeAccessPermission, IUnrestrictedPermission {
-
-		#region Fields
-
-		private const int version = 1;
-
-		private bool allowBlankPassword;
-		private PermissionState state;
-		private Hashtable _connections;
-
-		#endregion // Fields
-
-		#region Constructors
-
-#if NET_2_0
-		[Obsolete ("use DBDataPermission (PermissionState.None)", true)]
-#endif
-		protected DBDataPermission () 
-			: this (PermissionState.None)
-		{
-		}
-
-		protected DBDataPermission (DBDataPermission permission)
-		{
-			if (permission == null)
-				throw new ArgumentNullException ("permission");
-
-			state = permission.state;
-			if (state != PermissionState.Unrestricted) {
-				allowBlankPassword = permission.allowBlankPassword;
-				_connections = (Hashtable) permission._connections.Clone ();
-			}
-		}
-
-		protected DBDataPermission (DBDataPermissionAttribute permissionAttribute)
-		{
-			if (permissionAttribute == null)
-				throw new ArgumentNullException ("permissionAttribute");
-
-			_connections = new Hashtable ();
-			if (permissionAttribute.Unrestricted) {
-				state = PermissionState.Unrestricted;
-			}
-			else {
-				state = PermissionState.None;
-				allowBlankPassword = permissionAttribute.AllowBlankPassword;
-				if (permissionAttribute.ConnectionString.Length > 0) {
-					Add (permissionAttribute.ConnectionString, permissionAttribute.KeyRestrictions, 
-						permissionAttribute.KeyRestrictionBehavior);
-				}
-			}
-		}
-
-		protected DBDataPermission (PermissionState state) 
-		{
-			this.state = PermissionHelper.CheckPermissionState (state, true);
-			_connections = new Hashtable ();
-		}
-
-#if NET_2_0
-		[Obsolete ("use DBDataPermission (PermissionState.None)", true)]
-		protected 
-#else
-		public
-#endif
-		DBDataPermission (PermissionState state, bool allowBlankPassword)
-			: this (state)
-		{
-			this.allowBlankPassword = allowBlankPassword;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool AllowBlankPassword {
-			get { return allowBlankPassword; }
-			set { allowBlankPassword = value; }
-		}
-		
-		#endregion // Properties
-
-		#region Methods
-
-		public virtual void Add (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
-		{
-			state = PermissionState.None;
-			_connections [connectionString] = new object [2] { restrictions, behavior };
-		}
-
-		protected void Clear ()
-		{
-			_connections.Clear ();
-		}
-
-		public override IPermission Copy () 
-		{
-			DBDataPermission dbdp = CreateInstance ();
-			dbdp.allowBlankPassword = this.allowBlankPassword;
-			dbdp._connections = (Hashtable) this._connections.Clone ();
-			return dbdp;
-		}
-
-		protected virtual DBDataPermission CreateInstance ()
-		{
-			return (DBDataPermission) Activator.CreateInstance (this.GetType (), new object [1] { PermissionState.None });
-		}
-
-		public override void FromXml (SecurityElement securityElement) 
-		{
-			PermissionHelper.CheckSecurityElement (securityElement, "securityElement", version, version);
-			// Note: we do not (yet) care about the return value 
-			// as we only accept version 1 (min/max values)
-
-			state = (PermissionHelper.IsUnrestricted (securityElement) ? 
-				PermissionState.Unrestricted : PermissionState.None);
-
-			allowBlankPassword = false;
-			string blank = securityElement.Attribute ("AllowBlankPassword");
-			if (blank != null) {
-#if NET_2_0
-				// avoid possible exceptions with Fx 2.0
-				if (!Boolean.TryParse (blank, out allowBlankPassword))
-					allowBlankPassword = false;
-#else
-				try {
-					allowBlankPassword = Boolean.Parse (blank);
-				}
-				catch {
-					allowBlankPassword = false;
-				}
-#endif
-			}
-
-			if (securityElement.Children != null) {
-				foreach (SecurityElement child in securityElement.Children) {
-					string connect = child.Attribute ("ConnectionString");
-					string restricts = child.Attribute ("KeyRestrictions");
-					KeyRestrictionBehavior behavior = (KeyRestrictionBehavior) Enum.Parse (
-						typeof (KeyRestrictionBehavior), child.Attribute ("KeyRestrictionBehavior"));
-
-					if ((connect != null) && (connect.Length > 0))
-						Add (connect, restricts, behavior);
-				}
-			}
-		}
-
-		public override IPermission Intersect (IPermission target) 
-		{
-			// FIXME: restrictions not completely implemented - nor documented
-			DBDataPermission dbdp = Cast (target);
-			if (dbdp == null)
-				return null;
-			if (IsUnrestricted ()) {
-				if (dbdp.IsUnrestricted ()) {
-					DBDataPermission u = CreateInstance ();
-					u.state = PermissionState.Unrestricted;
-					return u;
-				}
-				return dbdp.Copy ();
-			}
-			if (dbdp.IsUnrestricted ())
-				return Copy ();
-			if (IsEmpty () || dbdp.IsEmpty ())
-				return null;
-
-			DBDataPermission p = CreateInstance ();
-			p.allowBlankPassword = (allowBlankPassword && dbdp.allowBlankPassword);
-			foreach (DictionaryEntry de in _connections) {
-				object o = dbdp._connections [de.Key];
-				if (o != null)
-					p._connections.Add (de.Key, de.Value);
-			}
-			return (p._connections.Count > 0) ? p : null;
-		}
-
-		public override bool IsSubsetOf (IPermission target) 
-		{
-			// FIXME: restrictions not completely implemented - nor documented
-			DBDataPermission dbdp = Cast (target);
-			if (dbdp == null)
-				return IsEmpty ();
-			if (dbdp.IsUnrestricted ())
-				return true;
-			if (IsUnrestricted ())
-				return dbdp.IsUnrestricted ();
-
-			if (allowBlankPassword && !dbdp.allowBlankPassword)
-				return false;
-			if (_connections.Count > dbdp._connections.Count)
-				return false;
-
-			foreach (DictionaryEntry de in _connections) {
-				object o = dbdp._connections [de.Key];
-				if (o == null)
-					return false;
-				// FIXME: this is a subset of what is required
-				// it seems that we must process both the connect string
-				// and the restrictions - but this has other effects :-/
-			}
-			return true;
-		}
-
-		public bool IsUnrestricted () 
-		{
-			return (state == PermissionState.Unrestricted);
-		}
-
-		public override SecurityElement ToXml ()
-		{
-			SecurityElement se = PermissionHelper.Element (this.GetType (), version);
-			if (IsUnrestricted ()) {
-				se.AddAttribute ("Unrestricted", "true");
-			}
-			else {
-				// attribute is present for both True and False
-				se.AddAttribute ("AllowBlankPassword", allowBlankPassword.ToString ());
-				foreach (DictionaryEntry de in _connections) {
-					SecurityElement child = new SecurityElement ("add");
-					child.AddAttribute ("ConnectionString", (string) de.Key);
-					object[] restrictionsInfo = (object[]) de.Value;
-					child.AddAttribute ("KeyRestrictions", (string) restrictionsInfo [0]);
-					KeyRestrictionBehavior krb = (KeyRestrictionBehavior) restrictionsInfo [1];
-					child.AddAttribute ("KeyRestrictionBehavior", krb.ToString ());
-					se.AddChild (child);
-				}
-			}
-			return se;
-		}
-
-		public override IPermission Union (IPermission target) 
-		{
-			// FIXME: restrictions not completely implemented - nor documented
-			DBDataPermission dbdp = Cast (target);
-			if (dbdp == null)
-				return Copy ();
-			if (IsEmpty () && dbdp.IsEmpty ())
-				return Copy ();
-
-			DBDataPermission p = CreateInstance ();
-			if (IsUnrestricted () || dbdp.IsUnrestricted ()) {
-				p.state = PermissionState.Unrestricted;
-			}
-			else {
-				p.allowBlankPassword = (allowBlankPassword || dbdp.allowBlankPassword);
-				p._connections = new Hashtable (_connections.Count + dbdp._connections.Count);
-				foreach (DictionaryEntry de in _connections)
-					p._connections.Add (de.Key, de.Value);
-				// don't duplicate
-				foreach (DictionaryEntry de in dbdp._connections)
-					p._connections [de.Key] = de.Value;
-			}
-			return p;
-		}
-
-		// helpers
-
-		private bool IsEmpty ()
-		{
-			return ((state != PermissionState.Unrestricted) && (_connections.Count == 0));
-		}
-
-		private DBDataPermission Cast (IPermission target)
-		{
-			if (target == null)
-				return null;
-
-			DBDataPermission dbdp = (target as DBDataPermission);
-			if (dbdp == null) {
-				PermissionHelper.ThrowInvalidPermission (target, this.GetType ());
-			}
-
-			return dbdp;
-		}
-
-		#endregion // Methods
-	}
-}

+ 0 - 113
mcs/class/System.Data/System.Data.Common/DbDataPermissionAttribute.cs

@@ -1,113 +0,0 @@
-//
-// System.Data.Common.DbDataPermissionAttribute.cs
-//
-// Authors:
-//	Rodrigo Moya ([email protected])
-//	Tim Coleman ([email protected])
-//	Sebastien Pouliot  <[email protected]>
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002
-// Copyright (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.
-//
-
-using System.ComponentModel;
-using System.Security.Permissions;
-using System.Globalization;
-
-namespace System.Data.Common {
-
-	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | 
-			 AttributeTargets.Struct | AttributeTargets.Constructor | 
-			 AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
-	[Serializable]
-	public abstract class DBDataPermissionAttribute : CodeAccessSecurityAttribute {
-		#region Fields
-
-		bool allowBlankPassword;
-		string keyRestrictions;
-		KeyRestrictionBehavior keyRestrictionBehavior;
-		string connectionString;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		protected DBDataPermissionAttribute (SecurityAction action) 
-			: base (action) 
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool AllowBlankPassword {
-			get { return allowBlankPassword; }
-			set { allowBlankPassword = value; }
-		}
-
-		public string KeyRestrictions {
-			get {
-				if (keyRestrictions == null)
-					return String.Empty;
-				return keyRestrictions;
-			}
-			set { keyRestrictions = value; }
-		}
-
-		public string ConnectionString {
-			get {
-				if (connectionString == null)
-					return String.Empty;
-				return connectionString;
-			}
-			set { connectionString = value; }
-		}
-
-		public KeyRestrictionBehavior KeyRestrictionBehavior {
-			get { return keyRestrictionBehavior; }
-			set {
-				ExceptionHelper.CheckEnumValue (typeof (KeyRestrictionBehavior), value);
-				keyRestrictionBehavior = value;
-			}
-		}
-
-		#endregion // Properties
-
-		#region // Methods
-		[EditorBrowsableAttribute (EditorBrowsableState.Never)]
-		public bool ShouldSerializeConnectionString ()
-		{
-			// FIXME: configurable ? why is this in the attribute class ?
-			return false;
-		}
-
-		[EditorBrowsableAttribute (EditorBrowsableState.Never)]
-		public bool ShouldSerializeKeyRestrictions ()
-		{
-			// FIXME: configurable ? why is this in the attribute class ?
-			return false;
-		}
-		#endregion // Methods
-	}
-}

+ 2 - 2
mcs/class/System.Data/System.Data.Odbc/OdbcConnection.cs

@@ -384,7 +384,7 @@ namespace System.Data.Odbc
 				ret = libodbc.SQLAllocHandle (OdbcHandleType.Env, IntPtr.Zero, ref henv);
 				if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo)) {
 					OdbcErrorCollection errors = new OdbcErrorCollection ();
-					errors.Add (new OdbcError (this));
+					errors.Add (new OdbcError (SafeDriver, "Error in " + SafeDriver, "", 1));
 					e = new OdbcException (errors);
 					MessageHandler (e);
 					throw e;
@@ -584,7 +584,7 @@ namespace System.Data.Odbc
 				string state = RemoveTrailingNullChar (Encoding.Unicode.GetString (buf_SqlState));
 				string message = Encoding.Unicode.GetString (buf_MsgText, 0, txtlen * 2);
 
-				errors.Add (new OdbcError (message, state, nativeerror));
+				errors.Add (new OdbcError (SafeDriver, message, state, nativeerror));
 			}
 
 			string source = SafeDriver;

+ 0 - 219
mcs/class/System.Data/System.Data.Odbc/OdbcConnectionStringBuilder.cs

@@ -1,219 +0,0 @@
-//
-// System.Data.Odbc.OdbcConnectionStringBuilder
-//
-// Authors: 
-//	  Nidhi Rawal ([email protected])
-//
-// Copyright (C) 2007 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;
-using System.Collections;
-using System.ComponentModel;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.Common;
-using System.Data.Odbc;
-using System.Reflection;
-using System.Text;
-
-namespace System.Data.Odbc
-{
-	[DefaultProperty ("Driver")]
-	[TypeConverter ("System.Data.Odbc.OdbcConnectionStringBuilder+OdbcConnectionStringBuilderConverter, " + Consts.AssemblySystem_Data)]
-	public sealed class OdbcConnectionStringBuilder : DbConnectionStringBuilder
-	{
-		#region Fields
-		string driver;
-		string dsn;
-		#endregion //Fields
-
-		#region Constructors
-
-		public OdbcConnectionStringBuilder () : base (true)
-		{
-		}
-
-		public OdbcConnectionStringBuilder (string connectionString) : base (true)
-		{
-			if (connectionString == null) {
-				base.ConnectionString = string.Empty;
-				return;
-			}
-
-			base.ConnectionString = connectionString;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public override Object this [string keyword] {
-			get {
-				if (keyword == null)
-					throw new ArgumentNullException ("keyword");
-				if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
-					return Driver;
-				if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
-					return Dsn;
-				return base [keyword];
-			}
-			set {
-				if (value == null) {
-					Remove (keyword);
-					return;
-				}
-
-				if (keyword == null)
-					throw new ArgumentNullException ("keyword");
-
-				string text_value = value.ToString ();
-
-				if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0) {
-					Driver = text_value;
-					return;
-				} else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0) {
-					dsn = text_value;
-				} else if (value.ToString ().IndexOf (';') != -1) {
-					text_value = "{" + text_value + "}";
-				}
-				base [keyword] = value;
-			}
-		}
-
-		public override ICollection Keys {
-			get {
-				List<string> keys = new List<string> ();
-				keys.Add ("Dsn");
-				keys.Add ("Driver");
-
-				ICollection base_keys = base.Keys;
-				foreach (string keyword in base_keys) {
-					if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
-						continue;
-					if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
-						continue;
-					keys.Add (keyword);
-				}
-
-				string [] final = new string [keys.Count];
-				keys.CopyTo (final);
-				return final;
-			}
-		}
-
-		[DisplayName ("Driver")]
-		[RefreshProperties (RefreshProperties.All)]
-		public string Driver {
-			get {
-				if (driver == null)
-					return string.Empty;
-				return driver;
-			}
-			set {
-				if (value == null)
-					throw new ArgumentNullException ("Driver");
-				driver = value;
-
-				if (value.Length > 0) {
-					int startBrace = value.IndexOf ('{');
-					int endBrace = value.IndexOf ('}');
-					if (startBrace == -1 || endBrace == -1)
-						value = "{" + value + "}";
-					else if (startBrace > 0 || endBrace < (value.Length - 1))
-						value = "{" + value + "}";
-				}
-				base ["Driver"] = value;
-			}
-		}
-		
-		[DisplayName ("Dsn")]
-		[RefreshProperties (RefreshProperties.All)]
-		public string Dsn {
-			get {
-				if (dsn == null)
-					return string.Empty;
-				return dsn;
-			}
-			set {
-				if (value == null)
-					throw new ArgumentNullException ("Dsn");
-				dsn = value;
-				base ["Dsn"] = dsn;
-			}
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		public override bool ContainsKey (string keyword)
-		{
-			if (keyword == null)
-				throw new ArgumentNullException ("keyword");
-			if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
-				return true;
-			if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
-				return true;
-			return base.ContainsKey (keyword);
-		}
-
-		public override bool Remove (string keyword)
-		{
-			if (keyword == null)
-				throw new ArgumentNullException ("keyword");
-			if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
-				driver = string.Empty;
-			else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
-				dsn = string.Empty;
-			return base.Remove (keyword);
-		}
-
-		public override void Clear ()
-		{
-			driver = null;
-			dsn = null;
-			base.Clear ();
-		}
-
-		public override bool TryGetValue (string keyword, out Object value)
-		{
-			if (keyword == null )
-				throw new ArgumentNullException ("keyword");
-			bool found = base.TryGetValue (keyword, out value);
-			if (found)
-				return found;
-			if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0) {
-				value = string.Empty;
-				return true;
-			} else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0) {
-				value = string.Empty;
-				return true;
-			}
-			return false;
-		}
-
-		#endregion // Methods
-	}
-}
-#endif // NET_2_0 using

+ 0 - 104
mcs/class/System.Data/System.Data.Odbc/OdbcError.cs

@@ -1,104 +0,0 @@
-//
-// System.Data.Odbc.OdbcError
-//
-// Author:
-//   Brian Ritchie ([email protected]) 
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (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.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Text;
-
-namespace System.Data.Odbc
-{
-	[Serializable]
-	public sealed class OdbcError
-	{
-		readonly string _message;
-		string _source;
-		readonly string _state;
-		readonly int _nativeerror;
-
-		#region Constructors
-
-		internal OdbcError (OdbcConnection connection)
-		{
-			_nativeerror = 1;
-			_source = connection.SafeDriver;
-			_message = "Error in " + _source;
-			_state = string.Empty;
-		}
-
-		internal OdbcError (string message, string state, int nativeerror)
-		{
-			_message = message;
-			_state = state;
-			_nativeerror = nativeerror;
-		}
-
-		#endregion // Constructors
-		
-		#region Properties
-
-		public string Message {
-			get { return _message; }
-		}
-
-		public int NativeError {
-			get { return _nativeerror; }
-		}
-
-		public string Source {
-			get { return _source; }
-		}
-
-		public string SQLState {
-			get { return _state; }
-		}
-
-		#endregion // Properties
-		
-		#region methods
-		
-		public override string ToString ()
-		{
-			return Message;
-		}
-
-		internal void SetSource (string source)
-		{
-			_source = source;
-		}
-
-		#endregion
-
-	}
-
-}

+ 0 - 87
mcs/class/System.Data/System.Data.Odbc/OdbcPermission.cs

@@ -1,87 +0,0 @@
-//
-// System.Data.Odbc.OdbcPermission
-//
-// Authors:
-//	Umadevi S ([email protected])
-//	Sebastien Pouliot  <[email protected]>
-//
-// Copyright (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.
-//
-
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.Odbc
-{
-	[Serializable]
-	public sealed class OdbcPermission : DBDataPermission
-	{
-		#region Constructors
-
-		[Obsolete ("use OdbcPermission(PermissionState.None)", true)]
-		public OdbcPermission ()
-			: base (PermissionState.None)
-		{
-		}
-
-		public OdbcPermission (PermissionState state)
-			: base (state)
-		{
-		}
-
-		[Obsolete ("use OdbcPermission(PermissionState.None)", true)]
-		public OdbcPermission (PermissionState state, bool allowBlankPassword)
-			: base (state)
-		{
-			AllowBlankPassword = allowBlankPassword;
-		}
-
-		// required for Copy method
-		internal OdbcPermission (DBDataPermission permission)
-			: base (permission)
-		{
-		}
-
-		// easier (and common) permission creation from attribute class
-		internal OdbcPermission (DBDataPermissionAttribute attribute)
-			: base (attribute)
-		{
-		}
-
-		#endregion
-
-		#region Methods
-
-		public override IPermission Copy ()
-		{
-			return new OdbcPermission (this);
-		}
-
-		public override void Add (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
-		{
-			base.Add (connectionString, restrictions, behavior);
-		}
-
-		#endregion
-	}
-}

+ 0 - 64
mcs/class/System.Data/System.Data.Odbc/OdbcPermissionAttribute.cs

@@ -1,64 +0,0 @@
-//
-// System.Data.Odbc.OdbcPermissionAttribute
-//
-// Authors:
-//	Umadevi S ([email protected])
-//	Sebastien Pouliot  <[email protected]>
-//
-// Copyright (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.
-//
-
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.Odbc {
-
-	[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | 
-			AttributeTargets.Struct | AttributeTargets.Constructor |
-			AttributeTargets.Method, AllowMultiple=true,
-			Inherited=false)]
-	[Serializable]
-	public sealed class OdbcPermissionAttribute : DBDataPermissionAttribute {
-
-		#region Constructors 
-
-		public OdbcPermissionAttribute (SecurityAction action) 
-			: base (action)
-		{
-		}
-
-		#endregion
-
-		#region Properties
-		#endregion
-
-		#region Methods
-
-		public override IPermission CreatePermission () 
-		{
-			return new OdbcPermission (this);
-		}
-
-		#endregion
-	}
-}

+ 2 - 2
mcs/class/System.Data/System.Data.SqlClient/SqlConnectionStringBuilder.cs

@@ -393,7 +393,7 @@ namespace System.Data.SqlClient
                                 keys.Add("User Instance");
                                 keys.Add("Context Connection");
                                 keys.Add("Transaction Binding");
-				ReadOnlyCollection<string> coll = new ReadOnlyCollection<string>(keys);
+				var coll = new System.Collections.ObjectModel.ReadOnlyCollection<string>(keys);
 				return coll;
 			}
 		}
@@ -544,7 +544,7 @@ namespace System.Data.SqlClient
                                 values.Add(_userInstance);
                                 values.Add(_contextConnection);
                                 values.Add(_transactionBinding);
-				ReadOnlyCollection<object> coll = new ReadOnlyCollection<object>(values);
+				var coll = new System.Collections.ObjectModel.ReadOnlyCollection<object>(values);
 				return coll;		 
 			}
 		}

+ 20 - 17
mcs/class/System.Data/System.Data.dll.sources

@@ -81,7 +81,6 @@ System.Data/ISafeDataRecord.cs
 System.Data/IsolationLevel.cs
 System.Data/ITableMapping.cs
 System.Data/ITableMappingCollection.cs
-System.Data/KeyRestrictionBehavior.cs
 System.Data/LoadOption.cs
 System.Data/MappingType.cs
 System.Data/MergeFailedEventArgs.cs
@@ -129,23 +128,12 @@ System.Data/XmlDiffLoader.cs
 System.Data.Common/CatalogLocation.cs
 System.Data.Common/ComparerFactory.cs
 System.Data.Common/DataAdapter.cs
-System.Data.Common/DataColumnMappingCollection.cs
-System.Data.Common/DataColumnMapping.cs
-System.Data.Common/DataColumnMappingConverter.cs
 System.Data.Common/DataContainer.cs
-System.Data.Common/DataTableMappingCollection.cs
-System.Data.Common/DataTableMapping.cs
-System.Data.Common/DataTableMappingConverter.cs
 System.Data.Common/DbCommandBuilder.cs
-System.Data.Common/DbConnectionStringBuilder.cs
 System.Data.Common/DbConnectionStringBuilderHelper.cs
 System.Data.Common/DbCommand.cs
 System.Data.Common/DbConnection.cs
-System.Data.Common/DbConnectionOptions.cs
-System.Data.Common/DbConnectionString.cs
 System.Data.Common/DbDataAdapter.cs
-System.Data.Common/DbDataPermissionAttribute.cs
-System.Data.Common/DbDataPermission.cs
 System.Data.Common/DbDataReader.cs
 System.Data.Common/DbDataSourceEnumerator.cs
 System.Data.Common/DbException.cs
@@ -209,9 +197,7 @@ System.Data.Odbc/OdbcDescriptionAttribute.cs
 System.Data.Odbc/OdbcColumn.cs
 System.Data.Odbc/OdbcCommand.cs
 System.Data.Odbc/OdbcConnection.cs
-System.Data.Odbc/OdbcConnectionStringBuilder.cs
 System.Data.Odbc/OdbcDataReader.cs
-System.Data.Odbc/OdbcError.cs
 System.Data.Odbc/OdbcErrorCollection.cs
 System.Data.Odbc/OdbcException.cs
 System.Data.Odbc/OdbcMetaDataColumnNames.cs
@@ -228,8 +214,6 @@ System.Data.Odbc/OdbcRowUpdatedEventArgs.cs
 System.Data.Odbc/OdbcRowUpdatedEventHandler.cs
 System.Data.Odbc/OdbcRowUpdatingEventArgs.cs
 System.Data.Odbc/OdbcRowUpdatingEventHandler.cs
-System.Data.Odbc/OdbcPermissionAttribute.cs
-System.Data.Odbc/OdbcPermission.cs
 System.Data.Odbc/OdbcInfoMessageEventArgs.cs 
 System.Data.Odbc/OdbcInfoMessageEventHandler.cs
 System.Data.Odbc/OdbcCommandBuilder.cs
@@ -318,19 +302,38 @@ ReferenceSources/Bid.cs
 ReferenceSources/BidArgumentTypeAttribute.cs
 ReferenceSources/BidMethodAttribute.cs
 ReferenceSources/DataStorage.cs
-ReferenceSources/DbConnectionStringDefaults.cs
 ReferenceSources/InOutOfProcHelper.cs
 ReferenceSources/ODB.cs
 ReferenceSources/Res.cs
+ReferenceSources/ResCategoryAttribute.cs
 ReferenceSources/SafeNativeMethods.cs
 ReferenceSources/ThisAssembly.cs
 
+ReferenceSources/OdbcHandle.cs
+
 ../../../external/referencesource/System.Data/Misc/HResults.cs
 ../../../external/referencesource/System.Data/System/Data/Common/AdapterUtil.cs
+../../../external/referencesource/System.Data/System/Data/Common/DataColumnMapping.cs
+../../../external/referencesource/System.Data/System/Data/Common/DataColumnMappingCollection.cs
+../../../external/referencesource/System.Data/System/Data/Common/DataTableMapping.cs
+../../../external/referencesource/System.Data/System/Data/Common/DataTableMappingCollection.cs
 ../../../external/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs
+../../../external/referencesource/System.Data/System/Data/Common/DbConnectionOptions.cs
+../../../external/referencesource/System.Data/System/Data/Common/DBConnectionString.cs
+../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringBuilder.cs
+../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringCommon.cs
+../../../external/referencesource/System.Data/System/Data/Common/DBDataPermission.cs
+../../../external/referencesource/System.Data/System/Data/Common/DBDataPermissionAttribute.cs
 ../../../external/referencesource/System.Data/System/Data/Common/dbdatarecord.cs
 ../../../external/referencesource/System.Data/System/Data/Common/dbenumerator.cs
 ../../../external/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs
+../../../external/referencesource/System.Data/System/Data/Common/NameValuePair.cs
+../../../external/referencesource/System.Data/System/Data/Common/NameValuePermission.cs
+../../../external/referencesource/System.Data/System/Data/Odbc/Odbc32.cs
+../../../external/referencesource/System.Data/System/Data/Odbc/OdbcConnectionString.cs
+../../../external/referencesource/System.Data/System/Data/Odbc/OdbcConnectionStringbuilder.cs
+../../../external/referencesource/System.Data/System/Data/Odbc/OdbcError.cs
+../../../external/referencesource/System.Data/System/Data/Odbc/OdbcPermission.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs

+ 0 - 41
mcs/class/System.Data/System.Data/KeyRestrictionBehavior.cs

@@ -1,41 +0,0 @@
-//
-// System.Data.KeyRestrictionBehavior
-//
-// Author:
-//     Tim Coleman <[email protected]>
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (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.
-//
-
-namespace System.Data {
-	[Serializable]
-	public enum KeyRestrictionBehavior
-	{
-		AllowOnly,
-		PreventUsage
-	}
-}
-

+ 1 - 1
mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionTest.cs

@@ -517,7 +517,7 @@ namespace MonoTests.System.Data.Common {
 		{
 			NonAbstractDBDataPermission empty = new NonAbstractDBDataPermission (PermissionState.None);
 			NonAbstractDBDataPermission union = (NonAbstractDBDataPermission) empty.Union (empty);
-			Assert.IsNotNull (union, "Empty U Empty");
+			Assert.IsNull (union, "Empty U Empty");
 
 			NonAbstractDBDataPermission dbdp1 = new NonAbstractDBDataPermission (PermissionState.None);
 			dbdp1.Add (defaultConnectString, String.Empty, KeyRestrictionBehavior.AllowOnly);

+ 1 - 1
mcs/class/System.Data/Test/System.Data.Common/DbConnectionStringBuilderTest.cs

@@ -1799,7 +1799,7 @@ namespace MonoTests.System.Data.Common
                         Assert.AreEqual (builder.GetType ().ToString (), className, "#1");
 
                         AttributeCollection collection = ictd.GetAttributes ();
-                        Assert.AreEqual (2, collection.Count, "#2");
+                        Assert.AreEqual (1, collection.Count, "#2");
                         object [] attr = builder.GetType ().GetCustomAttributes (typeof (DefaultMemberAttribute), false);
                         if (attr.Length > 0) {
                                 DefaultMemberAttribute defAtt = (DefaultMemberAttribute) attr [0];