2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / corlib / System / ActivationContext.cs
1 //
2 // System.ActivationContext class
3 //
4 // Author:
5 //      Sebastien Pouliot  <sebastien@ximian.com>
6 //
7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 #if NET_2_0
30
31 namespace System {
32
33         public sealed class ActivationContext : IDisposable {
34
35                 [Serializable]
36                 public enum ContextForm {
37                         Loose = 1,
38                         StoreBounded
39                 }
40
41                 private ContextForm _form;
42                 private ApplicationIdentity _appid;
43                 private bool _disposed;
44
45                 private ActivationContext (ApplicationIdentity identity)
46                 {
47                         _appid = identity;
48                 }
49
50                 ~ActivationContext ()
51                 {
52                         Dispose (false);
53                 }
54
55                 [MonoTODO ("default ?")]
56                 public ContextForm Form {
57                         get { return _form; }
58                 }
59
60                 public ApplicationIdentity Identity {
61                         get { return _appid; }
62                 }
63
64                 [MonoTODO]
65                 static public ActivationContext CreatePartialActivationContext (ApplicationIdentity identity)
66                 {
67                         if (identity == null)
68                                 throw new ArgumentNullException ("identity");
69
70                         // TODO - throw new ArgumentException
71                         // - for invalid ApplicationIdentity
72
73                         return new ActivationContext (identity);
74                 }
75
76                 [MonoTODO]
77                 static public ActivationContext CreatePartialActivationContext (ApplicationIdentity identity, string[] manifestPaths)
78                 {
79                         if (identity == null)
80                                 throw new ArgumentNullException ("identity");
81                         if (manifestPaths == null)
82                                 throw new ArgumentNullException ("manifestPaths");
83
84                         // TODO - throw new ArgumentException
85                         // - for invalid ApplicationIdentity
86                         // - not matching manifests
87                         // - number components != # manifest paths
88
89                         return new ActivationContext (identity);
90                 }
91
92                 public void Dispose ()
93                 {
94                         Dispose (true);
95                         GC.SuppressFinalize (this);
96                 }
97
98                 void Dispose (bool disposing)
99                 {
100                         if (_disposed) {
101                                 if (disposing) {
102                                 }
103                                 _disposed = true;
104                         }
105                 }
106         }
107 }
108
109 #endif