2005-05-28 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Sat, 28 May 2005 14:37:01 +0000 (14:37 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Sat, 28 May 2005 14:37:01 +0000 (14:37 -0000)
* ActivationArguments.cs: New. Required to test HostSecurityManager.
* ApplicationActivator.cs: Moved from System namespace and updated to
beta2 API.

svn path=/trunk/mcs/; revision=45135

mcs/class/corlib/System.Runtime.Hosting/ActivationArguments.cs [new file with mode: 0644]
mcs/class/corlib/System.Runtime.Hosting/ApplicationActivator.cs [new file with mode: 0644]
mcs/class/corlib/System.Runtime.Hosting/ChangeLog [new file with mode: 0644]

diff --git a/mcs/class/corlib/System.Runtime.Hosting/ActivationArguments.cs b/mcs/class/corlib/System.Runtime.Hosting/ActivationArguments.cs
new file mode 100644 (file)
index 0000000..0cff5a9
--- /dev/null
@@ -0,0 +1,95 @@
+//
+// System.Runtime.Hosting.ActivationArguments class
+//
+// Author:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (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.Runtime.InteropServices;
+
+namespace System.Runtime.Hosting {
+
+       [Serializable]
+       [ComVisible (true)]
+       public sealed class ActivationArguments {
+
+               private ActivationContext _context;
+               private ApplicationIdentity _identity;
+               private string[] _data;
+
+               public ActivationArguments (ActivationContext activationData)
+               {
+                       if (activationData == null)
+                               throw new ArgumentNullException ("activationData");
+
+                       _context = activationData;
+                       _identity = activationData.Identity;
+               }
+
+               public ActivationArguments (ApplicationIdentity applicationIdentity)
+               {
+                       if (applicationIdentity == null)
+                               throw new ArgumentNullException ("applicationIdentity");
+
+                       _identity = applicationIdentity;
+               }
+
+               public ActivationArguments (ActivationContext activationContext, string[] activationData)
+               {
+                       if (activationContext == null)
+                               throw new ArgumentNullException ("activationContext");
+
+                       _context = activationContext;
+                       _identity = activationContext.Identity;
+                       _data = activationData;
+               }
+
+               public ActivationArguments (ApplicationIdentity applicationIdentity, string[] activationData)
+               {
+                       if (applicationIdentity == null)
+                               throw new ArgumentNullException ("applicationIdentity");
+
+                       _identity = applicationIdentity;
+                       _data = activationData;
+               }
+
+               // properties
+
+               public ActivationContext ActivationContext {
+                       get { return _context; }
+               }
+
+               public string[] ActivationData {
+                       get { return _data; }
+               }
+
+               public ApplicationIdentity ApplicationIdentity {
+                       get { return _identity; }
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/corlib/System.Runtime.Hosting/ApplicationActivator.cs b/mcs/class/corlib/System.Runtime.Hosting/ApplicationActivator.cs
new file mode 100644 (file)
index 0000000..158a5c1
--- /dev/null
@@ -0,0 +1,98 @@
+//
+// System.Runtime.Hosting.ApplicationActivator class
+//
+// Author:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004-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.Runtime.InteropServices;
+using System.Runtime.Remoting;
+using System.Security;
+using System.Security.Policy;
+
+namespace System.Runtime.Hosting {
+
+       [ComVisible (true)]
+       [MonoTODO ("missing manifest support")]
+       public class ApplicationActivator {
+
+               public ApplicationActivator ()
+               {
+               }
+
+               public virtual ObjectHandle CreateInstance (ActivationContext activationContext)
+               {
+                       return CreateInstance (activationContext, null);
+               }
+
+               public virtual ObjectHandle CreateInstance (ActivationContext activationContext, string[] activationCustomData)
+               {
+                       if (activationContext == null)
+                               throw new ArgumentNullException ("activationContext");
+
+                       // TODO : compare activationContext with the one from this domain
+                       // and use it if it match
+
+                       // TODO : we must pass the activationCustomData in the AppDomainSetup
+                       // even if the activationCustomData don't match ???
+
+                       AppDomainSetup setup = new AppDomainSetup (activationContext);
+                       return CreateInstanceHelper (setup);
+               }
+
+               protected static ObjectHandle CreateInstanceHelper (AppDomainSetup adSetup)
+               {
+                       if (adSetup == null)
+                               throw new ArgumentNullException ("adSetup");
+
+                       if (adSetup.ActivationArguments == null) {
+                               string msg = Locale.GetText ("{0} is missing it's {1} property");
+                               throw new ArgumentException (String.Format (msg, "AppDomainSetup", "ActivationArguments"), "adSetup");
+                       }
+
+                       HostSecurityManager hsm = null;
+                       if (AppDomain.CurrentDomain.DomainManager != null)
+                               hsm = AppDomain.CurrentDomain.DomainManager.HostSecurityManager;
+                       else
+                               hsm = new HostSecurityManager (); // default
+
+                       Evidence applicationEvidence = new Evidence ();
+                       applicationEvidence.AddHost (adSetup.ActivationArguments);
+                       TrustManagerContext context = new TrustManagerContext ();
+                       ApplicationTrust trust = hsm.DetermineApplicationTrust (applicationEvidence, null, context);
+                       if (!trust.IsApplicationTrustedToRun) {
+                               string msg = Locale.GetText ("Current policy doesn't allow execution of addin.");
+                               throw new PolicyException (msg);
+                       }
+
+                       // FIXME: we're missing the information from the manifest
+                       AppDomain ad = AppDomain.CreateDomain ("friendlyName", null, adSetup);
+                       return ad.CreateInstance ("assemblyName", "typeName", null);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/corlib/System.Runtime.Hosting/ChangeLog b/mcs/class/corlib/System.Runtime.Hosting/ChangeLog
new file mode 100644 (file)
index 0000000..128c0ee
--- /dev/null
@@ -0,0 +1,5 @@
+2005-05-28  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ActivationArguments.cs: New. Required to test HostSecurityManager.
+       * ApplicationActivator.cs: Moved from System namespace and updated to
+       beta2 API.