2 // System.Configuration.InternalConfigurationHost.cs
5 // Lluis Sanchez Gual (lluis@novell.com)
7 // Permission is hereby granted, free of charge, to any person obtaining
8 // a copy of this software and associated documentation files (the
9 // "Software"), to deal in the Software without restriction, including
10 // without limitation the rights to use, copy, modify, merge, publish,
11 // distribute, sublicense, and/or sell copies of the Software, and to
12 // permit persons to whom the Software is furnished to do so, subject to
13 // the following conditions:
15 // The above copyright notice and this permission notice shall be
16 // included in all copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
33 using System.Security;
34 using System.Configuration.Internal;
36 namespace System.Configuration
38 class InternalConfigurationHost: IInternalConfigHost
40 public virtual object CreateConfigurationContext (string configPath, string locationSubPath)
45 public virtual object CreateDeprecatedConfigContext (string configPath)
47 throw new NotImplementedException ();
50 public virtual string DecryptSection (string encryptedXml, ProtectedConfigurationProvider protectionProvider, ProtectedConfigurationSection protectedSection)
52 throw new NotImplementedException ();
55 public virtual void DeleteStream (string streamName)
57 File.Delete (streamName);
60 public virtual string EncryptSection (string encryptedXml, ProtectedConfigurationProvider protectionProvider, ProtectedConfigurationSection protectedSection)
62 throw new NotImplementedException ();
65 public virtual string GetConfigPathFromLocationSubPath (string configPath, string locatinSubPath)
67 throw new NotImplementedException ();
70 public virtual Type GetConfigType (string typeName, bool throwOnError)
72 throw new NotImplementedException ();
75 public virtual string GetConfigTypeName (Type t)
77 throw new NotImplementedException ();
80 public virtual void GetRestrictedPermissions (IInternalConfigRecord configRecord, out PermissionSet permissionSet, out bool isHostReady)
82 throw new NotImplementedException ();
85 public virtual string GetStreamName (string configPath)
87 throw new NotImplementedException ();
90 public virtual string GetStreamNameForConfigSource (string streamName, string configSource)
92 throw new NotImplementedException ();
95 public virtual object GetStreamVersion (string streamName)
97 throw new NotImplementedException ();
100 public virtual IDisposable Impersonate ()
102 throw new NotImplementedException ();
105 public virtual void Init (IInternalConfigRoot root, params object[] hostInitParams)
109 public virtual void InitForConfiguration (ref string locationSubPath, out string configPath, out string locationConfigPath, IInternalConfigRoot root, params object[] hostInitConfigurationParams)
111 throw new NotImplementedException ();
114 public virtual bool IsAboveApplication (string configPath)
116 throw new NotImplementedException ();
119 public virtual bool IsConfigRecordRequired (string configPath)
121 throw new NotImplementedException ();
124 public virtual bool IsDefinitionAllowed (string configPath, ConfigurationAllowDefinition allowDefinition, ConfigurationAllowExeDefinition allowExeDefinition)
126 throw new NotImplementedException ();
129 public virtual bool IsFile (string streamName)
131 throw new NotImplementedException ();
134 public virtual bool IsLocationApplicable (string configPath)
136 throw new NotImplementedException ();
139 public virtual Stream OpenStreamForRead (string streamName)
141 if (!File.Exists (streamName))
142 throw new ConfigurationException ("File '" + streamName + "' not found");
144 return new FileStream (streamName, FileMode.Open, FileAccess.Read);
147 public virtual Stream OpenStreamForWrite (string streamName, string templateStreamName, ref object writeContext)
149 return new FileStream (streamName, FileMode.Create, FileAccess.Write);
152 public virtual bool PrefetchAll (string configPath, string streamName)
154 throw new NotImplementedException ();
157 public virtual bool PrefetchSection (string sectionGroupName, string sectionName)
159 throw new NotImplementedException ();
162 public virtual object StartMonitoringStreamForChanges (string streamName, StreamChangeCallback callback)
164 throw new NotImplementedException ();
167 public virtual void StopMonitoringStreamForChanges (string streamName, StreamChangeCallback callback)
169 throw new NotImplementedException ();
172 public virtual void VerifyDefinitionAllowed (string configPath, ConfigurationAllowDefinition allowDefinition, ConfigurationAllowExeDefinition allowExeDefinition, IConfigErrorInfo errorInfo)
174 throw new NotImplementedException ();
177 public virtual void WriteCompleted (string streamName, bool success, object writeContext)
181 public virtual bool SupportsChangeNotifications {
182 get { return false; }
185 public virtual bool SupportsLocation {
186 get { return false; }
189 public virtual bool SupportsPath {
190 get { return false; }
193 public virtual bool SupportsRefresh {
194 get { return false; }
198 class ExeConfigurationHost: InternalConfigurationHost
200 ExeConfigurationFileMap map;
202 public override void Init (IInternalConfigRoot root, params object[] hostInitParams)
204 map = (ExeConfigurationFileMap) hostInitParams [0];
207 public override string GetStreamName (string configPath)
209 switch (configPath) {
210 case "exe": return map.ExeConfigFilename;
211 case "local": return map.LocalUserConfigFilename;
212 case "roaming": return map.LocalUserConfigFilename;
213 case "machine": return map.MachineConfigFilename;
214 default: return map.ExeConfigFilename;
218 public override void InitForConfiguration (ref string locationSubPath, out string configPath, out string locationConfigPath, IInternalConfigRoot root, params object[] hostInitConfigurationParams)
220 map = (ExeConfigurationFileMap) hostInitConfigurationParams [0];
224 if ((locationSubPath == "exe" || locationSubPath == null) && map.ExeConfigFilename != null) {
229 if ((locationSubPath == "local" || configPath == null) && map.LocalUserConfigFilename != null) {
230 configPath = "local";
234 if ((locationSubPath == "roaming" || configPath == null) && map.RoamingUserConfigFilename != null) {
235 configPath = "roaming";
239 if ((locationSubPath == "machine" || configPath == null) && map.MachineConfigFilename != null) {
240 configPath = "machine";
244 locationSubPath = next;
245 locationConfigPath = null;
249 class MachineConfigurationHost: InternalConfigurationHost
251 ConfigurationFileMap map;
253 public override void Init (IInternalConfigRoot root, params object[] hostInitParams)
255 map = (ConfigurationFileMap) hostInitParams [0];
258 public override string GetStreamName (string configPath)
260 return map.MachineConfigFilename;
263 public override void InitForConfiguration (ref string locationSubPath, out string configPath, out string locationConfigPath, IInternalConfigRoot root, params object[] hostInitConfigurationParams)
265 map = (ConfigurationFileMap) hostInitConfigurationParams [0];
266 locationSubPath = null;
268 locationConfigPath = null;