Merge pull request #2006 from steffen-kiess/posix-sockets-2
[mono.git] / mcs / class / corlib / System / AppDomainManager.cs
index f09ea94d0b1f26404900bc5bc3f466059d07b929..301fd334c70ef1c2c3aaf5aeb8f4725eaae2e79e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //     Sebastien Pouliot  <sebastien@ximian.com>
 //
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2005,2009 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
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Reflection;
 using System.Runtime.Hosting;
 using System.Runtime.InteropServices;
@@ -38,15 +36,12 @@ using System.Threading;
 
 namespace System {
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
        [ComVisible (true)]
        [SecurityPermission (SecurityAction.LinkDemand, Infrastructure = true)]
        [SecurityPermission (SecurityAction.InheritanceDemand, Infrastructure = true)]
        public class AppDomainManager : MarshalByRefObject {
-
                private ApplicationActivator _activator;
-               private Assembly _entry;
-               private HostExecutionContextManager _host_context;
-               private HostSecurityManager _host_security;
                private AppDomainManagerInitializationOptions _flags;
 
                public AppDomainManager ()
@@ -55,19 +50,24 @@ namespace System {
                }
 
                public virtual ApplicationActivator ApplicationActivator {
-                       get { return _activator; }
+                       get {
+                               if (_activator == null)
+                                       _activator = new ApplicationActivator ();
+                                return _activator;
+                       }
                }
 
                public virtual Assembly EntryAssembly {
-                       get { return _entry; }
+                       get { return Assembly.GetEntryAssembly (); }
                }
 
+               [MonoTODO]
                public virtual HostExecutionContextManager HostExecutionContextManager {
-                       get { return _host_context; }
+                       get { throw new NotImplementedException (); }
                }
 
                public virtual HostSecurityManager HostSecurityManager {
-                       get { return _host_security; }
+                       get { return null; }
                }
 
                public AppDomainManagerInitializationOptions InitializationFlags {
@@ -98,14 +98,69 @@ namespace System {
                        // default does nothing (as documented)
                }
 
+               // available in FX2.0 with service pack 1, including the 2.0 shipped as part of FX3.5
+               public virtual bool CheckSecuritySettings (SecurityState state)
+               {
+                       return false;
+               }
+
                // static
 
-               [MonoTODO ("maybe AppDomain.CreateDomain should be calling this ?")]
+               // FIXME: maybe AppDomain.CreateDomain should be calling this?
                protected static AppDomain CreateDomainHelper (string friendlyName, Evidence securityInfo, AppDomainSetup appDomainInfo)
                {
                        return AppDomain.CreateDomain (friendlyName, securityInfo, appDomainInfo);
                }
        }
-}
+#else
+       [Obsolete ("AppDomainManager is not supported on the current platform.", true)]
+       public class AppDomainManager : MarshalByRefObject {
+               public AppDomainManager ()
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
 
-#endif
+               public virtual ApplicationActivator ApplicationActivator {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual Assembly EntryAssembly {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual HostExecutionContextManager HostExecutionContextManager {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual HostSecurityManager HostSecurityManager {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public AppDomainManagerInitializationOptions InitializationFlags {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+                       set { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual AppDomain CreateDomain (string friendlyName, Evidence securityInfo, AppDomainSetup appDomainInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               public virtual void InitializeNewDomain (AppDomainSetup appDomainInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               public virtual bool CheckSecuritySettings (SecurityState state)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               protected static AppDomain CreateDomainHelper (string friendlyName, Evidence securityInfo, AppDomainSetup appDomainInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+       }
+
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
+}