[Sys.Data] Fix Novell Bug #519648
[mono.git] / mcs / class / System.Data / System.Data.Odbc / OdbcFactory.cs
index 961fce63da4e88fdcc2340015f93e8cf5f0da438..90be98756546eac365c3529ea98a24da0285b958 100644 (file)
@@ -33,7 +33,8 @@
 using System;
 using System.Data;
 using System.Data.Common;
-using System.Data.ProviderBase;
+using System.Security;
+using System.Security.Permissions;
 #endregion // Using Directives
 
 namespace System.Data.Odbc 
@@ -43,7 +44,7 @@ namespace System.Data.Odbc
         {
                 #region Fields
                 public static readonly OdbcFactory Instance;
-               static readonly object lockobj = new object ();
+               static readonly object lockStatic = new object ();
                 #endregion //Fields
 
                 #region Constructors
@@ -61,8 +62,11 @@ namespace System.Data.Odbc
                /// </remarks>
                static OdbcFactory() 
                {
-                       if (Instance == null)
-                               Instance = new OdbcFactory ();                       
+                        lock (lockStatic) 
+                        {
+                               if (Instance == null)
+                                       Instance = new OdbcFactory ();
+                       }
                }
                 
                 private OdbcFactory()
@@ -72,39 +76,15 @@ namespace System.Data.Odbc
                 
                 #endregion //Constructors
 
-                #region Properties
-                public DbProviderSupportedClasses SupportedClasses { 
-                        get {                                
-                                return (DbProviderSupportedClasses) (
-                                                                     DbProviderSupportedClasses.DbConnection | 
-                                                                     DbProviderSupportedClasses.DbCommand | 
-                                                                     DbProviderSupportedClasses.DbParameter | 
-                                                                     //DbProviderSupportedClasses.DbConnectionStringBuilder | 
-                                                                     DbProviderSupportedClasses.DbCommandBuilder | 
-                                                                     DbProviderSupportedClasses.DbDataAdapter //| 
-                                                                     //DbProviderSupportedClasses.DbDataSourceEnumerator | 
-                                                                     //DbProviderSupportedClasses.CodeAccessPermission
-                                                                     );
-                        }
-                }
-
-               [MonoTODO]
-               public override bool CanCreateDataSourceEnumerator {
-                       get { throw new NotImplementedException ();}
-               }               
-                #endregion //Properties
-
                 #region Methods
                 public override DbConnection CreateConnection()
                 {
-                        OdbcConnectionFactory connFactory = OdbcConnectionFactory.GetSingleton (this);
-                        return  new OdbcConnection (connFactory);
+                        return  new OdbcConnection () as DbConnection;
                 }
                 
                 public override DbCommand CreateCommand()
                 {
-                        return new OdbcCommand ()  as DbCommand;
+                        return new OdbcCommand () as DbCommand;
                 }
                 
                 public override DbCommandBuilder CreateCommandBuilder()
@@ -113,10 +93,10 @@ namespace System.Data.Odbc
                 }
                 
                 
-//                 public override DbConnectionStringBuilder CreateConnectionStringBuilder()
-//                 {
-//                         throw new NotImplementedException ();
-//                 }
+               public override DbConnectionStringBuilder CreateConnectionStringBuilder ()
+               {
+                       return new OdbcConnectionStringBuilder () as DbConnectionStringBuilder;
+               }
                 
                 public override DbDataAdapter CreateDataAdapter()
                 {
@@ -128,15 +108,12 @@ namespace System.Data.Odbc
                         return new OdbcParameter () as DbParameter;
                 }
 
-//                 public override CodeAccessPermission CreatePermission(PermissionState state)
-//                 {
-//                         throw new NotImplementedException ();
-//                 }
-                
-                #endregion //Methods
+               public override CodeAccessPermission CreatePermission (PermissionState state)
+               {
+                       return new OdbcPermission (state);
+               }
 
+                #endregion //Methods
         }
-
 }
 #endif // NET_2_0