[Sys.Data] Fix Novell Bug #519648
[mono.git] / mcs / class / System.Data / System.Data.Odbc / OdbcFactory.cs
index f752c88cba0f4969c6d94617d6e9a2673b0f0bac..90be98756546eac365c3529ea98a24da0285b958 100644 (file)
@@ -33,6 +33,8 @@
 using System;
 using System.Data;
 using System.Data.Common;
+using System.Security;
+using System.Security.Permissions;
 #endregion // Using Directives
 
 namespace System.Data.Odbc 
@@ -42,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
@@ -60,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()
@@ -74,13 +79,12 @@ namespace System.Data.Odbc
                 #region Methods
                 public override DbConnection CreateConnection()
                 {
-                        //OdbcConnectionFactory connFactory = OdbcConnectionFactory.GetSingleton (this);
-                        return  new OdbcConnection ();
+                        return  new OdbcConnection () as DbConnection;
                 }
                 
                 public override DbCommand CreateCommand()
                 {
-                        return new OdbcCommand ()  as DbCommand;
+                        return new OdbcCommand () as DbCommand;
                 }
                 
                 public override DbCommandBuilder CreateCommandBuilder()
@@ -89,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()
                 {
@@ -104,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