Author: roeie
Date: 2006-08-28 11:25:51 -0400 (Mon, 28 Aug 2006)
New Revision: 64476

Modified:
   trunk/mcs/class/System.Web/ChangeLog
   
trunk/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs
Log:
corrections for static fields at WebConfigurationManager which are relevant 
only when running on mainsoft platform (TARGET_j2EE)

Modified: trunk/mcs/class/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/ChangeLog        2006-08-28 15:09:03 UTC (rev 
64475)
+++ trunk/mcs/class/System.Web/ChangeLog        2006-08-28 15:25:51 UTC (rev 
64476)
@@ -1,3 +1,8 @@
+2006-08-27 Roei Erez <[EMAIL PROTECTED]>
+
+       * WebConfigurationManager.cs: corrections for static variables on 
mainsoft platform
+
+=======
 2006-08-28 Yoni Klain <[EMAIL PROTECTED]>
 
     * System.Web_test.dll.sources: add new 
\System.Web.UI\ClientScriptManagerTest.cs

Modified: 
trunk/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs
===================================================================
--- 
trunk/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs
  2006-08-28 15:09:03 UTC (rev 64475)
+++ 
trunk/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs
  2006-08-28 15:25:51 UTC (rev 64476)
@@ -43,8 +43,56 @@
 
        public static class WebConfigurationManager
        {
+#if !TARGET_J2EE
                static IInternalConfigConfigurationFactory configFactory;
                static Hashtable configurations = new Hashtable ();
+#else
+        static internal IInternalConfigConfigurationFactory configFactory
+        {
+            get{
+                IInternalConfigConfigurationFactory factory = 
(IInternalConfigConfigurationFactory)AppDomain.CurrentDomain.GetData("WebConfigurationManager.configFactory");
+                if (factory == null){
+                    lock (AppDomain.CurrentDomain){
+                        object initialized = 
AppDomain.CurrentDomain.GetData("WebConfigurationManager.configFactory.initialized");
+                        if (initialized == null){
+                            PropertyInfo prop = 
typeof(ConfigurationManager).GetProperty("ConfigurationFactory", 
BindingFlags.Static | BindingFlags.NonPublic);
+                            if (prop != null){
+                                factory = prop.GetValue(null, null) as 
IInternalConfigConfigurationFactory;
+                                configFactory = factory;
+                            }
+                        }
+                    }
+                }
+                return factory != null ? factory : configFactory;
+            }
+            set{
+                
AppDomain.CurrentDomain.SetData("WebConfigurationManager.configFactory", value);
+                
AppDomain.CurrentDomain.SetData("WebConfigurationManager.configFactory.initialized",
 true);
+            }
+        }
+
+        static internal Hashtable configurations
+        {
+            get{
+                Hashtable table = 
(Hashtable)AppDomain.CurrentDomain.GetData("WebConfigurationManager.configurations");
+                if (table == null){
+                    lock (AppDomain.CurrentDomain){
+                        object initialized = 
AppDomain.CurrentDomain.GetData("WebConfigurationManager.configurations.initialized");
+                        if (initialized == null){
+                            table = new Hashtable();
+                            configurations = table;
+                        }
+                    }
+                }
+                return table != null ? table : configurations;
+
+            }
+            set{
+                
AppDomain.CurrentDomain.SetData("WebConfigurationManager.configurations", 
value);
+                
AppDomain.CurrentDomain.SetData("WebConfigurationManager.configurations.initialized",
 true);
+            }
+        }
+#endif
                
                static WebConfigurationManager ()
                {

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

Reply via email to