Merge pull request #439 from mono-soc-2012/garyb/iconfix
[mono.git] / mcs / class / System.Data / System.Data.Common / DbConnection.cs
index f37d7b9dbce2577d75a40eb5df083f4f4e54182b..ce68ec9cef748f23a0bb67af1eba0d11d38a11ca 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0 || TARGET_JVM
-
 using System.ComponentModel;
 using System.Data;
 #if NET_2_0 && !TARGET_JVM
 using System.Transactions;
 #endif
 
+#if NET_4_5
+using System.Threading;
+using System.Threading.Tasks;
+#endif
+
 namespace System.Data.Common {
        public abstract class DbConnection : Component, IDbConnection, IDisposable
        {
@@ -241,7 +244,7 @@ namespace System.Data.Common {
                        }
                }
 
-               static class MetaDataCollections
+               internal static class MetaDataCollections
                {
                        static readonly ColumnInfo [] columns = {
                                new ColumnInfo ("CollectionName", typeof (string)),
@@ -709,12 +712,19 @@ namespace System.Data.Common {
                        for (int i = 0; i < length; i++) {
                                command.Parameters [i].Value = restrictionValues [i];
                        }
-                       DbProviderFactory dbProvider = DbProviderFactories.GetFactory (this.GetType (). ToString ());
-                       DbDataAdapter dataAdapter = dbProvider.CreateDataAdapter ();
+                       DbDataAdapter dataAdapter = DbProviderFactory.CreateDataAdapter ();
                        dataAdapter.SelectCommand = command;
                        dataAdapter.Fill (dataTable);
                        return dataTable;
                }
+
+               protected virtual DbProviderFactory DbProviderFactory {
+#if MOBILE
+                       get {throw new NotImplementedException();}
+#else
+                       get { return DbProviderFactories.GetFactory (this.GetType (). ToString ()); }
+#endif
+               }
 #endif
 
                IDbTransaction IDbConnection.BeginTransaction ()
@@ -734,11 +744,24 @@ namespace System.Data.Common {
                
                public abstract void Open ();
 
-               protected virtual void OnStateChange (StateChangeEventArgs stateChanged)
+               protected virtual void OnStateChange (StateChangeEventArgs stateChange)
                {
                        if (StateChange != null)
-                               StateChange (this, stateChanged);
+                               StateChange (this, stateChange);
                }
+               
+#if NET_4_5
+               public Task OpenAsync ()
+               {
+                       return OpenAsync (CancellationToken.None);
+               }
+               
+               [MonoTODO]
+               public virtual Task OpenAsync (CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+#endif
 
                #endregion // Methods
 
@@ -746,5 +769,3 @@ namespace System.Data.Common {
 
        }
 }
-
-#endif