Merge pull request #1949 from lewurm/fixtype
[mono.git] / mcs / class / System.Data / System.Data.SqlClient / SqlClientFactory.cs
index c64deb18faf274aa8287562a338f35f700b77cc8..bb529ccf96374c35f86c53ade8ebcdd32e0bd5c5 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
+using System.Data;
+using System.Data.Common;
+using System.Data.Sql;
+using System.Security;
+using System.Security.Permissions;
+
 namespace System.Data.SqlClient
 {
-        using System.Data;
-        using System.Data.Common;
-        using System.Data.ProviderBase;
-        
-        public class SqlClientFactory : DbProviderFactory
-        {
-                #region Fields
-                public static SqlClientFactory Instance = null;
-                public static object lockStatic = new object ();
-                #endregion //Fields
+       public sealed class SqlClientFactory : DbProviderFactory
+       {
+               #region Fields
+
+               public static readonly SqlClientFactory Instance = new SqlClientFactory ();
+               
+               #endregion //Fields
 
-                #region Constructors
-                
-                private SqlClientFactory ()
-                {
-                        
-                }
+               #region Constructors
 
-                static SqlClientFactory ()
-                {
-                        lock (lockStatic) 
-                        {
-                                if (Instance == null)
-                                        Instance = new SqlClientFactory ();
-                        }
-                }
-                #endregion //Constructors
+               private SqlClientFactory ()
+               {
+               }
 
-               [MonoTODO]
+               #endregion //Constructors
+
+               #region Properties
+               
                public override bool CanCreateDataSourceEnumerator {
-                       get { throw new NotImplementedException ();}
-               }               
-                #region public overrides
-                public override DbCommand CreateCommand ()
-                {
-                        return (DbCommand) new SqlCommand ();
-                }
+                       get { return true; }
+               }
+               
+               #endregion //Properties
+
+               #region public overrides
+
+               public override DbCommand CreateCommand ()
+               {
+                       return new SqlCommand ();
+               }
+
+               public override DbCommandBuilder CreateCommandBuilder ()
+               {
+                       return new SqlCommandBuilder ();
+               }
+
+               public override DbConnection CreateConnection ()
+               {
+                       return new SqlConnection ();
+               }
+
+               public override DbConnectionStringBuilder CreateConnectionStringBuilder ()
+               {
+                       return new SqlConnectionStringBuilder ();
+               }
 
-                public override DbCommandBuilder CreateCommandBuilder ()
-                {
-                        return (DbCommandBuilder) new SqlCommandBuilder ();
-                }
+               public override DbDataAdapter CreateDataAdapter ()
+               {
+                       return new SqlDataAdapter ();
+               }
 
-                public override DbConnection CreateConnection ()
-                {
-                        DbConnectionFactory connFactory = SqlConnectionFactory.GetSingleton (Instance /* provider factory */);
-                        SqlConnection connection = new SqlConnection (connFactory);
-                        return (DbConnection) connection;
-                }
-                
-                public override DbDataAdapter CreateDataAdapter ()
-                {
-                        return (DbDataAdapter) new SqlDataAdapter ();
-                }
-                
-                public override DbDataSourceEnumerator CreateDataSourceEnumerator ()
-                {
-                        return (DbDataSourceEnumerator) new SqlDataSourceEnumerator ();
-                }
-                
-                public override DbParameter CreateParameter ()
-                {
-                        return (DbParameter) new SqlParameter ();
-                }
-                
-                public new DbProviderSupportedClasses SupportedClasses
-                {
-                        get
-                        {
-                                return (DbProviderSupportedClasses) (
-                                                                     DbProviderSupportedClasses.DbConnection | 
-                                                                     DbProviderSupportedClasses.DbCommand | 
-                                                                     DbProviderSupportedClasses.DbParameter | 
-                                                                     DbProviderSupportedClasses.DbConnectionStringBuilder | 
-                                                                     DbProviderSupportedClasses.DbCommandBuilder | 
-                                                                     DbProviderSupportedClasses.DbDataAdapter | 
-                                                                     DbProviderSupportedClasses.DbDataSourceEnumerator | 
-                                                                     DbProviderSupportedClasses.CodeAccessPermission
-                                                                     );
-                        }
-                }
+               public override DbDataSourceEnumerator CreateDataSourceEnumerator ()
+               {
+                       return SqlDataSourceEnumerator.Instance;
+               }
 
-                #endregion // public overrides
-        }
+               public override DbParameter CreateParameter ()
+               {
+                       return new SqlParameter ();
+               }
+               
+               public override CodeAccessPermission CreatePermission (PermissionState state)
+               {
+                       return new SqlClientPermission(state);
+               }
+       
+               #endregion // public overrides
+       }
 }
-#endif // NET_2_0