Author: igorz
Date: 2006-12-07 12:25:54 -0500 (Thu, 07 Dec 2006)
New Revision: 69193

Modified:
   trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog
   trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ProvidersHelper.cs
Log:
2006-12-07  Igor Zelmanovich  <[EMAIL PROTECTED]>

        * ProvidersHelper.cs: fixed: load assembles from /bin



Modified: trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog   
2006-12-07 17:07:29 UTC (rev 69192)
+++ trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog   
2006-12-07 17:25:54 UTC (rev 69193)
@@ -1,3 +1,7 @@
+2006-12-07  Igor Zelmanovich  <[EMAIL PROTECTED]>
+
+       * ProvidersHelper.cs: fixed: load assembles from /bin
+
 2006-11-22  Miguel de Icaza  <[EMAIL PROTECTED]>
 
        * SessionStateSection.cs: Do not call Enum.Parse with a null

Modified: 
trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ProvidersHelper.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ProvidersHelper.cs  
2006-12-07 17:07:29 UTC (rev 69192)
+++ trunk/mcs/class/System.Web/System.Web.Configuration_2.0/ProvidersHelper.cs  
2006-12-07 17:25:54 UTC (rev 69193)
@@ -1,87 +1,112 @@
-//
-// System.Web.Configuration.ProvidersHelper
-//
-// Authors:
-//     Chris Toshok ([EMAIL PROTECTED])
-//
-// (C) 2005 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.Configuration;
-using System.Configuration.Provider;
-using System.Data.Common;
-using System.Data.SqlClient;
-
-namespace System.Web.Configuration {
-
-       public static class ProvidersHelper
-       {
-               public static ProviderBase InstantiateProvider 
(ProviderSettings providerSettings, Type providerType)
-               {
-                       Type settingsType = Type.GetType 
(providerSettings.Type);
-
-                       if (settingsType == null)
-                               throw new ConfigurationErrorsException 
(String.Format ("Could not find type: {0}", providerSettings.Type));
-                       if (!providerType.IsAssignableFrom (settingsType))
-                               throw new ConfigurationErrorsException 
(String.Format ("Provider '{0}' must subclass from '{1}'", 
providerSettings.Name, providerType));
-
-                       ProviderBase provider = Activator.CreateInstance 
(settingsType) as ProviderBase;
-
-                       provider.Initialize (providerSettings.Name, 
providerSettings.Parameters);
-
-                       return provider;
-               }
-
-               public static void InstantiateProviders 
(ProviderSettingsCollection configProviders, ProviderCollection providers, Type 
providerType)
-               {
-                       if (!typeof (ProviderBase).IsAssignableFrom 
(providerType))
-                               throw new ConfigurationErrorsException 
(String.Format ("type '{0}' must subclass from ProviderBase", providerType));
-
-                       foreach (ProviderSettings settings in configProviders)
-                               providers.Add (InstantiateProvider (settings, 
providerType));
-               }
-
-               internal static DbProviderFactory GetDbProviderFactory (string 
providerName)
-               {
-                       DbProviderFactory f = null;
-
-                       if (providerName != null && providerName != "") {
-                               try {
-                                       f = 
DbProviderFactories.GetFactory(providerName);
-                               }
-                               catch (Exception e) { Console.WriteLine (e); /* 
nada */ }
-                               if (f != null)
-                                       return f;
-                       }
-
-                       return SqlClientFactory.Instance;
-               }
-       }
-
-}
-
-#endif
-
+//
+// System.Web.Configuration.ProvidersHelper
+//
+// Authors:
+//     Chris Toshok ([EMAIL PROTECTED])
+//
+// (C) 2005 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.Configuration;
+using System.Configuration.Provider;
+using System.Data.Common;
+using System.Data.SqlClient;
+using System.IO;
+using System.Reflection;
+
+namespace System.Web.Configuration {
+
+       public static class ProvidersHelper
+       {
+               private static string privateBinPath = null;
+               
+               public static ProviderBase InstantiateProvider 
(ProviderSettings providerSettings, Type providerType)
+               {
+                       Type settingsType = Type.GetType 
(providerSettings.Type);
+                       if (settingsType == null && Directory.Exists 
(PrivateBinPath)) {
+                               string [] binDlls = Directory.GetFiles 
(PrivateBinPath, "*.dll");
+                               foreach (string s in binDlls) {
+                                       Assembly binA = Assembly.LoadFrom (s);
+                                       settingsType = binA.GetType 
(providerSettings.Type);
+                                       if (settingsType != null)
+                                               break;
+                               }
+                       }
+
+                       if (settingsType == null)
+                               throw new ConfigurationErrorsException 
(String.Format ("Could not find type: {0}", providerSettings.Type));
+                       if (!providerType.IsAssignableFrom (settingsType))
+                               throw new ConfigurationErrorsException 
(String.Format ("Provider '{0}' must subclass from '{1}'", 
providerSettings.Name, providerType));
+
+                       ProviderBase provider = Activator.CreateInstance 
(settingsType) as ProviderBase;
+
+                       provider.Initialize (providerSettings.Name, 
providerSettings.Parameters);
+
+                       return provider;
+               }
+
+               private static string PrivateBinPath {
+                       get {
+                               if (privateBinPath != null)
+                                       return privateBinPath;
+
+                               AppDomainSetup setup = 
AppDomain.CurrentDomain.SetupInformation;
+                               privateBinPath = Path.Combine 
(setup.ApplicationBase, setup.PrivateBinPath);
+
+                               return privateBinPath;
+                       }
+               }
+
+               public static void InstantiateProviders 
(ProviderSettingsCollection configProviders, ProviderCollection providers, Type 
providerType)
+               {
+                       if (!typeof (ProviderBase).IsAssignableFrom 
(providerType))
+                               throw new ConfigurationErrorsException 
(String.Format ("type '{0}' must subclass from ProviderBase", providerType));
+
+                       foreach (ProviderSettings settings in configProviders)
+                               providers.Add (InstantiateProvider (settings, 
providerType));
+               }
+
+               internal static DbProviderFactory GetDbProviderFactory (string 
providerName)
+               {
+                       DbProviderFactory f = null;
+
+                       if (providerName != null && providerName != "") {
+                               try {
+                                       f = 
DbProviderFactories.GetFactory(providerName);
+                               }
+                               catch (Exception e) { Console.WriteLine (e); /* 
nada */ }
+                               if (f != null)
+                                       return f;
+                       }
+
+                       return SqlClientFactory.Instance;
+               }
+       }
+
+}
+
+#endif
+

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to