Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Util / WebConfigManager.cs / 1305376 / WebConfigManager.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.MobileControls.Util { using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.IO; using System.Windows.Forms; using System.Web.UI.MobileControls; using System.Web.UI.Design; using System.Web.UI.Design.MobileControls; using System.Xml; using SR = System.Web.UI.Design.MobileControls.SR; [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class WebConfigManager { private readonly String _path = null; private ISite _site = null; private XmlDocument _document = null; private WebConfigManager() { } internal WebConfigManager(ISite site) { Debug.Assert(site != null); _site = site; IWebApplication webApplicationService = (IWebApplication)_site.GetService(typeof(IWebApplication)); if (webApplicationService != null) { IProjectItem dataFileProjectItem = webApplicationService.GetProjectItemFromUrl("~/web.config"); if (dataFileProjectItem != null) { _path = dataFileProjectItem.PhysicalPath; } } /* VSWhidbey 271075, 257678 // the following inspired by: // \VSDesigner\Designer\Microsoft\VisualStudio\Designer\Serialization\BaseDesignerLoader.cs Type projectItemType = Type.GetType("EnvDTE.ProjectItem, " + AssemblyRef.EnvDTE); if (projectItemType != null) { Object currentProjItem = _site.GetService(projectItemType); PropertyInfo containingProjectProp = projectItemType.GetProperty("ContainingProject"); Object dteProject = containingProjectProp.GetValue(currentProjItem, new Object[0]); Type projectType = Type.GetType("EnvDTE.Project, " + AssemblyRef.EnvDTE); PropertyInfo fullNameProperty = projectType.GetProperty("FullName"); String projectPath = (String)fullNameProperty.GetValue(dteProject, new Object[0]); _path = Path.GetDirectoryName(projectPath) + "\\web.config"; } */ } internal XmlDocument Document { get { if (_document == null) { _document = new XmlDocument(); } return _document; } } private void LoadDocument() { try { Document.Load(_path); } catch (Exception ex) { Debug.Fail(ex.ToString()); throw new Exception(SR.GetString(SR.WebConfig_FileLoadException)); } } internal void EnsureWebConfigCheckedOut() { DesignerUtility.EnsureFileCheckedOut(_site, _path); } internal void EnsureWebConfigIsPresent() { if(!File.Exists(_path)) { // We throw our own exception type so we can easily tell // between a corrupt web.config and a missing one. throw new FileNotFoundException( SR.GetString(SR.WebConfig_FileNotFoundException) ); } } internal ArrayList ReadDeviceFilters() { EnsureWebConfigIsPresent(); // Reload the document everytime we read filters LoadDocument(); XmlNode filters = FindFilterSection(Document, false); ArrayList DeviceFilterList = new ArrayList(); if (filters != null) { Hashtable filterTable = new Hashtable(); foreach(XmlNode childNode in filters.ChildNodes) { if (childNode.Name != null && childNode.Name.Equals("filter")) { // Ignore the empty filter. if (childNode.Attributes["name"] == null || childNode.Attributes["name"].Value == null || childNode.Attributes["name"].Value.Length == 0) { continue; } String filterName = childNode.Attributes["name"].Value; if (filterTable[filterName] != null) { throw new Exception(SR.GetString(SR.DeviceFilterEditorDialog_DuplicateNames)); } DeviceFilterNode node = new DeviceFilterNode(this, childNode); DeviceFilterList.Add(node); filterTable[filterName] = true; } } } return DeviceFilterList; } private bool IsSystemWebSectionPresent() { EnsureWebConfigIsPresent(); XmlNode filters = FindFilterSection(Document, false); return filters != null; } private XmlElement FindXmlNode(XmlNode node, string name) { Debug.Assert(node != null); if (node.HasChildNodes) { foreach (XmlNode child in node.ChildNodes) { if (String.Equals(child.Name, name, StringComparison.Ordinal) && child is XmlElement) { return (XmlElement)child; } } } return null; } internal XmlElement FindFilterSection(XmlDocument document, bool createIfNotExists) { XmlNode configSection = FindXmlNode(document, "configuration"); if (configSection == null) { if (createIfNotExists) { throw new Exception(SR.GetString(SR.WebConfig_FileLoadException)); } return null; } XmlElement webSection = FindXmlNode(configSection, "system.web"); if (webSection == null) { if (createIfNotExists) { webSection = Document.CreateElement("system.web"); configSection.AppendChild(webSection); } return null; } XmlElement filters = FindXmlNode(webSection, "deviceFilters"); if (filters == null) { if (createIfNotExists) { filters = Document.CreateElement("deviceFilters"); webSection.AppendChild(filters); } return null; } return filters; } internal void EnsureSystemWebSectionIsPresent() { if (!IsSystemWebSectionPresent()) { Debug.Assert(Document != null); FindFilterSection(Document, true); } } internal void Save() { Document.Save(_path); } } [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class DeviceFilterNode : ICloneable { internal enum DeviceFilterMode { Compare, Delegate }; private WebConfigManager _webConfig = null; private XmlNode _xmlNode = null; internal DeviceFilterMode Mode; private String _name; private String _type; private String _method; private String _compare; private String _argument; internal DeviceFilterNode(WebConfigManager webConfig) : base() { _webConfig = webConfig; _xmlNode = webConfig.Document.CreateElement("filter"); Name = SR.GetString(SR.DeviceFilterNode_DefaultFilterName); Mode = DeviceFilterMode.Compare; } internal DeviceFilterNode( WebConfigManager webConfig, XmlNode xmlNode ) { _webConfig = webConfig; _xmlNode = xmlNode; Debug.Assert(_xmlNode.Attributes != null); if (_xmlNode.Attributes["type"] != null) { Mode = DeviceFilterMode.Delegate; Debug.Assert( _xmlNode.Attributes["argument"] == null && _xmlNode.Attributes["compare"] == null, "Managementobject contains both Compare and Delegate mode properties." ); } else { Mode = DeviceFilterMode.Compare; // we already know type is null, but it nevers hurts... Debug.Assert( _xmlNode.Attributes["type"] == null && _xmlNode.Attributes["method"] == null, "Managementobject contains both Compare and Delegate mode properties." ); } _name = _xmlNode.Attributes["name"] == null? null : _xmlNode.Attributes["name"].Value; _compare = _xmlNode.Attributes["compare"] == null? null : _xmlNode.Attributes["compare"].Value; _argument = _xmlNode.Attributes["argument"] == null? null : _xmlNode.Attributes["argument"].Value; _type = _xmlNode.Attributes["type"] == null? null : _xmlNode.Attributes["type"].Value; _method = _xmlNode.Attributes["method"] == null? null : _xmlNode.Attributes["method"].Value; } internal void Delete() { Debug.Assert(_xmlNode != null); if (_xmlNode.ParentNode != null) { _xmlNode.ParentNode.RemoveChild(_xmlNode); } } internal void Save() { Debug.Assert(_xmlNode != null); if (_xmlNode.Attributes["name"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("name")); } _xmlNode.Attributes["name"].Value = Name; if(Mode == DeviceFilterMode.Compare) { Type = null; Method = null; _xmlNode.Attributes.RemoveNamedItem("type"); _xmlNode.Attributes.RemoveNamedItem("method"); if (_xmlNode.Attributes["compare"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("compare")); } _xmlNode.Attributes["compare"].Value = Compare; if (_xmlNode.Attributes["argument"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("argument")); } _xmlNode.Attributes["argument"].Value = Argument; } else { Compare = null; Argument = null; _xmlNode.Attributes.RemoveNamedItem("compare"); _xmlNode.Attributes.RemoveNamedItem("argument"); if (_xmlNode.Attributes["type"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("type")); } _xmlNode.Attributes["type"].Value = Type; if (_xmlNode.Attributes["method"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("method")); } _xmlNode.Attributes["method"].Value = Method; } _webConfig.EnsureSystemWebSectionIsPresent(); XmlNode filters = _webConfig.FindFilterSection(_webConfig.Document, false); filters.AppendChild(_xmlNode); } // Cause the DeviceFilterNode to display correctly when inserted // in a combo box. public override String ToString() { if(Name == null || Name.Length == 0) { return SR.GetString(SR.DeviceFilter_DefaultChoice); } return Name; } internal String Name { get { return _name; } set { _name = value; } } internal String Type { get { return _type; } set { _type = value; } } internal String Method { get { return _method; } set { _method = value; } } internal String Compare { get { return _compare; } set { _compare = value; } } internal String Argument { get { return _argument; } set { _argument = value; } } //// Returns a copy of this node's encapsulated data. Does not // copy TreeNode fields. // public Object Clone() { DeviceFilterNode newNode = new DeviceFilterNode( _webConfig ); newNode.Name = this.Name; newNode.Mode = this.Mode; if(this.Mode == DeviceFilterMode.Compare) { newNode.Compare = this.Compare; newNode.Argument = this.Argument; } else { newNode.Type = this.Type; newNode.Method = this.Method; } return (Object) newNode; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.MobileControls.Util { using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.IO; using System.Windows.Forms; using System.Web.UI.MobileControls; using System.Web.UI.Design; using System.Web.UI.Design.MobileControls; using System.Xml; using SR = System.Web.UI.Design.MobileControls.SR; [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class WebConfigManager { private readonly String _path = null; private ISite _site = null; private XmlDocument _document = null; private WebConfigManager() { } internal WebConfigManager(ISite site) { Debug.Assert(site != null); _site = site; IWebApplication webApplicationService = (IWebApplication)_site.GetService(typeof(IWebApplication)); if (webApplicationService != null) { IProjectItem dataFileProjectItem = webApplicationService.GetProjectItemFromUrl("~/web.config"); if (dataFileProjectItem != null) { _path = dataFileProjectItem.PhysicalPath; } } /* VSWhidbey 271075, 257678 // the following inspired by: // \VSDesigner\Designer\Microsoft\VisualStudio\Designer\Serialization\BaseDesignerLoader.cs Type projectItemType = Type.GetType("EnvDTE.ProjectItem, " + AssemblyRef.EnvDTE); if (projectItemType != null) { Object currentProjItem = _site.GetService(projectItemType); PropertyInfo containingProjectProp = projectItemType.GetProperty("ContainingProject"); Object dteProject = containingProjectProp.GetValue(currentProjItem, new Object[0]); Type projectType = Type.GetType("EnvDTE.Project, " + AssemblyRef.EnvDTE); PropertyInfo fullNameProperty = projectType.GetProperty("FullName"); String projectPath = (String)fullNameProperty.GetValue(dteProject, new Object[0]); _path = Path.GetDirectoryName(projectPath) + "\\web.config"; } */ } internal XmlDocument Document { get { if (_document == null) { _document = new XmlDocument(); } return _document; } } private void LoadDocument() { try { Document.Load(_path); } catch (Exception ex) { Debug.Fail(ex.ToString()); throw new Exception(SR.GetString(SR.WebConfig_FileLoadException)); } } internal void EnsureWebConfigCheckedOut() { DesignerUtility.EnsureFileCheckedOut(_site, _path); } internal void EnsureWebConfigIsPresent() { if(!File.Exists(_path)) { // We throw our own exception type so we can easily tell // between a corrupt web.config and a missing one. throw new FileNotFoundException( SR.GetString(SR.WebConfig_FileNotFoundException) ); } } internal ArrayList ReadDeviceFilters() { EnsureWebConfigIsPresent(); // Reload the document everytime we read filters LoadDocument(); XmlNode filters = FindFilterSection(Document, false); ArrayList DeviceFilterList = new ArrayList(); if (filters != null) { Hashtable filterTable = new Hashtable(); foreach(XmlNode childNode in filters.ChildNodes) { if (childNode.Name != null && childNode.Name.Equals("filter")) { // Ignore the empty filter. if (childNode.Attributes["name"] == null || childNode.Attributes["name"].Value == null || childNode.Attributes["name"].Value.Length == 0) { continue; } String filterName = childNode.Attributes["name"].Value; if (filterTable[filterName] != null) { throw new Exception(SR.GetString(SR.DeviceFilterEditorDialog_DuplicateNames)); } DeviceFilterNode node = new DeviceFilterNode(this, childNode); DeviceFilterList.Add(node); filterTable[filterName] = true; } } } return DeviceFilterList; } private bool IsSystemWebSectionPresent() { EnsureWebConfigIsPresent(); XmlNode filters = FindFilterSection(Document, false); return filters != null; } private XmlElement FindXmlNode(XmlNode node, string name) { Debug.Assert(node != null); if (node.HasChildNodes) { foreach (XmlNode child in node.ChildNodes) { if (String.Equals(child.Name, name, StringComparison.Ordinal) && child is XmlElement) { return (XmlElement)child; } } } return null; } internal XmlElement FindFilterSection(XmlDocument document, bool createIfNotExists) { XmlNode configSection = FindXmlNode(document, "configuration"); if (configSection == null) { if (createIfNotExists) { throw new Exception(SR.GetString(SR.WebConfig_FileLoadException)); } return null; } XmlElement webSection = FindXmlNode(configSection, "system.web"); if (webSection == null) { if (createIfNotExists) { webSection = Document.CreateElement("system.web"); configSection.AppendChild(webSection); } return null; } XmlElement filters = FindXmlNode(webSection, "deviceFilters"); if (filters == null) { if (createIfNotExists) { filters = Document.CreateElement("deviceFilters"); webSection.AppendChild(filters); } return null; } return filters; } internal void EnsureSystemWebSectionIsPresent() { if (!IsSystemWebSectionPresent()) { Debug.Assert(Document != null); FindFilterSection(Document, true); } } internal void Save() { Document.Save(_path); } } [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class DeviceFilterNode : ICloneable { internal enum DeviceFilterMode { Compare, Delegate }; private WebConfigManager _webConfig = null; private XmlNode _xmlNode = null; internal DeviceFilterMode Mode; private String _name; private String _type; private String _method; private String _compare; private String _argument; internal DeviceFilterNode(WebConfigManager webConfig) : base() { _webConfig = webConfig; _xmlNode = webConfig.Document.CreateElement("filter"); Name = SR.GetString(SR.DeviceFilterNode_DefaultFilterName); Mode = DeviceFilterMode.Compare; } internal DeviceFilterNode( WebConfigManager webConfig, XmlNode xmlNode ) { _webConfig = webConfig; _xmlNode = xmlNode; Debug.Assert(_xmlNode.Attributes != null); if (_xmlNode.Attributes["type"] != null) { Mode = DeviceFilterMode.Delegate; Debug.Assert( _xmlNode.Attributes["argument"] == null && _xmlNode.Attributes["compare"] == null, "Managementobject contains both Compare and Delegate mode properties." ); } else { Mode = DeviceFilterMode.Compare; // we already know type is null, but it nevers hurts... Debug.Assert( _xmlNode.Attributes["type"] == null && _xmlNode.Attributes["method"] == null, "Managementobject contains both Compare and Delegate mode properties." ); } _name = _xmlNode.Attributes["name"] == null? null : _xmlNode.Attributes["name"].Value; _compare = _xmlNode.Attributes["compare"] == null? null : _xmlNode.Attributes["compare"].Value; _argument = _xmlNode.Attributes["argument"] == null? null : _xmlNode.Attributes["argument"].Value; _type = _xmlNode.Attributes["type"] == null? null : _xmlNode.Attributes["type"].Value; _method = _xmlNode.Attributes["method"] == null? null : _xmlNode.Attributes["method"].Value; } internal void Delete() { Debug.Assert(_xmlNode != null); if (_xmlNode.ParentNode != null) { _xmlNode.ParentNode.RemoveChild(_xmlNode); } } internal void Save() { Debug.Assert(_xmlNode != null); if (_xmlNode.Attributes["name"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("name")); } _xmlNode.Attributes["name"].Value = Name; if(Mode == DeviceFilterMode.Compare) { Type = null; Method = null; _xmlNode.Attributes.RemoveNamedItem("type"); _xmlNode.Attributes.RemoveNamedItem("method"); if (_xmlNode.Attributes["compare"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("compare")); } _xmlNode.Attributes["compare"].Value = Compare; if (_xmlNode.Attributes["argument"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("argument")); } _xmlNode.Attributes["argument"].Value = Argument; } else { Compare = null; Argument = null; _xmlNode.Attributes.RemoveNamedItem("compare"); _xmlNode.Attributes.RemoveNamedItem("argument"); if (_xmlNode.Attributes["type"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("type")); } _xmlNode.Attributes["type"].Value = Type; if (_xmlNode.Attributes["method"] == null) { _xmlNode.Attributes.Append(_webConfig.Document.CreateAttribute("method")); } _xmlNode.Attributes["method"].Value = Method; } _webConfig.EnsureSystemWebSectionIsPresent(); XmlNode filters = _webConfig.FindFilterSection(_webConfig.Document, false); filters.AppendChild(_xmlNode); } // Cause the DeviceFilterNode to display correctly when inserted // in a combo box. public override String ToString() { if(Name == null || Name.Length == 0) { return SR.GetString(SR.DeviceFilter_DefaultChoice); } return Name; } internal String Name { get { return _name; } set { _name = value; } } internal String Type { get { return _type; } set { _type = value; } } internal String Method { get { return _method; } set { _method = value; } } internal String Compare { get { return _compare; } set { _compare = value; } } internal String Argument { get { return _argument; } set { _argument = value; } } //// Returns a copy of this node's encapsulated data. Does not // copy TreeNode fields. // public Object Clone() { DeviceFilterNode newNode = new DeviceFilterNode( _webConfig ); newNode.Name = this.Name; newNode.Mode = this.Mode; if(this.Mode == DeviceFilterMode.Compare) { newNode.Compare = this.Compare; newNode.Argument = this.Argument; } else { newNode.Type = this.Type; newNode.Method = this.Method; } return (Object) newNode; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DateTimeConverter.cs
- TextEditorContextMenu.cs
- CompileLiteralTextParser.cs
- ClientUrlResolverWrapper.cs
- GenerateScriptTypeAttribute.cs
- PackagePartCollection.cs
- ModelTypeConverter.cs
- VarRefManager.cs
- Run.cs
- IPeerNeighbor.cs
- XmlDataCollection.cs
- SystemUdpStatistics.cs
- WebPartTransformerCollection.cs
- sqlcontext.cs
- Win32PrintDialog.cs
- ResourceCategoryAttribute.cs
- ViewgenGatekeeper.cs
- ActivityValidator.cs
- DataGridViewRowPostPaintEventArgs.cs
- WebServiceData.cs
- BasicBrowserDialog.cs
- HttpContextServiceHost.cs
- WebPartConnectionsEventArgs.cs
- WindowInteropHelper.cs
- PageSettings.cs
- FileChangesMonitor.cs
- ProtocolsSection.cs
- AsyncStreamReader.cs
- SamlAuthorizationDecisionClaimResource.cs
- ProfileServiceManager.cs
- XmlUTF8TextReader.cs
- DrawingDrawingContext.cs
- OneOfElement.cs
- OpenTypeCommon.cs
- GridSplitterAutomationPeer.cs
- ResourceSetExpression.cs
- PageSettings.cs
- ImageInfo.cs
- XmlUtf8RawTextWriter.cs
- SafeNativeMethods.cs
- ControlBindingsCollection.cs
- WebPartRestoreVerb.cs
- mda.cs
- AddDataControlFieldDialog.cs
- BitmapEffectrendercontext.cs
- DateTimeConverter2.cs
- IriParsingElement.cs
- RootDesignerSerializerAttribute.cs
- BitmapEffectRenderDataResource.cs
- SqlClientFactory.cs
- UIPermission.cs
- XmlIgnoreAttribute.cs
- OracleInternalConnection.cs
- ToolStripGripRenderEventArgs.cs
- XmlEntity.cs
- ToolStripHighContrastRenderer.cs
- FilteredAttributeCollection.cs
- ActiveXContainer.cs
- EntityTransaction.cs
- HistoryEventArgs.cs
- DataRelationPropertyDescriptor.cs
- XsltInput.cs
- DataGridViewComboBoxCell.cs
- Terminate.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- ProviderConnectionPointCollection.cs
- Typeface.cs
- PaintEvent.cs
- ReadOnlyState.cs
- Effect.cs
- CompModSwitches.cs
- InheritanceAttribute.cs
- cache.cs
- ComboBoxItem.cs
- MsmqIntegrationSecurityElement.cs
- Stacktrace.cs
- Constraint.cs
- TextTreeFixupNode.cs
- AutoGeneratedFieldProperties.cs
- WebServiceHandler.cs
- EditorBrowsableAttribute.cs
- SequenceFullException.cs
- StringValueSerializer.cs
- GroupByQueryOperator.cs
- RequestQueue.cs
- EUCJPEncoding.cs
- CodeDomConfigurationHandler.cs
- NetMsmqBinding.cs
- ComboBoxRenderer.cs
- CDSCollectionETWBCLProvider.cs
- TextTreeRootTextBlock.cs
- MappedMetaModel.cs
- ThreadStartException.cs
- InkCollectionBehavior.cs
- ControlCodeDomSerializer.cs
- GenericIdentity.cs
- PolicyLevel.cs
- FreeIndexList.cs
- WorkingDirectoryEditor.cs
- DockProviderWrapper.cs