PHP.Core.ConfigurationSectionHandler.Create C# (CSharp) Method

Create() private method

private Create ( PhpConfigurationContext parent, System.Web.Configuration.HttpConfigurationContext context, XmlNode section ) : PhpConfigurationContext
parent PhpConfigurationContext
context System.Web.Configuration.HttpConfigurationContext
section System.Xml.XmlNode
return PhpConfigurationContext
		private PhpConfigurationContext Create(PhpConfigurationContext parent, HttpConfigurationContext context,
			XmlNode/*!*/ section)
		{
			PhpConfigurationContext result;

			// determines virtual path to the .config file (null means Machine.config or not applicable):
			string virtual_path = (context != null) ? context.VirtualPath : null;

			Debug.WriteLine("CONFIG", "Parsing configuration in '{0}'. Parent config is '{1}'",
				virtual_path ?? "Machine.config", (parent != null) ? parent.VirtualPath : "null");

			// initialization:
			if (parent != null)
			{
				result = new PhpConfigurationContext(applicationContext, virtual_path, parent);
			}
			else
			{
				result = new PhpConfigurationContext(applicationContext, virtual_path);
			}

			GlobalConfiguration global = result.Global;
			LocalConfiguration local = result.Local;

			// configuration loading is assumed to be synchronized:
			ApplicationConfiguration app = Configuration.application;

            // same with script libraries - these need to be parsed after <sourceRoot>
            XmlNode node_ScriptLibrary = null;

            // determine configuration modification time:
            result.Global.LastConfigurationModificationTime = ConfigUtils.GetConfigModificationTime(section, result.Global.LastConfigurationModificationTime);
            
			// parses XML tree:
			foreach (XmlNode node in section.ChildNodes)
			{
				if (node.NodeType == XmlNodeType.Element)
				{
					switch (node.Name)
					{
						case NodePaths:
							// options can be specified only in application root config and above:
							result.EnsureApplicationConfig(node);

							ConfigUtils.ParseNameValueList(node, result, app.Paths);
							break;

						case NodeClassLibrary:
							// libraries can be loaded only in application root config and above:
							result.EnsureApplicationConfig(node);

                            // parses and loads libraries contained in the list (lazy):
                            ConfigUtils.ParseLibraryAssemblyList(
                                node,
                                result.librariesList,
                                app.Paths.ExtWrappers,
                                app.Paths.Libraries);
                            break;

                        case NodeScriptLibrary:
                            // script libraries can be loaded only in application root config and above:
                            result.EnsureApplicationConfig(node);

                            node_ScriptLibrary = node;

                            break;
						case NodeCompiler:
							// options can be specified only in application root:
							result.EnsureApplicationConfig(node);

							ConfigUtils.ParseNameValueList(node, result, app.Compiler);
							break;

						case NodeGlobalization:
							// options can be specified only in application root:
							result.EnsureApplicationConfig(node);

							ConfigUtils.ParseNameValueList(node, result, app.Globalization);
							break;

						case NodeOutputControl:
							ConfigUtils.ParseNameValueList(node, result, local.OutputControl);
							break;

						case NodeRequestControl:
							ConfigUtils.ParseNameValueList(node, result, local.RequestControl);
							break;

						case NodeErrorControl:
							ConfigUtils.ParseNameValueList(node, result, local.ErrorControl);
							break;

						case NodeSessionControl:
							ConfigUtils.ParseNameValueList(node, result, local.Session);
							break;

						case NodeFileSystem:
							ConfigUtils.ParseNameValueList(node, result, local.FileSystem);
							break;

						case NodeAssertion:
							ConfigUtils.ParseNameValueList(node, result, local.Assertion);
							break;

						case NodeVariables:
							ConfigUtils.ParseNameValueList(node, result, local.Variables, global.GlobalVariables);
							break;

						case NodePostedFiles:
							ConfigUtils.ParseNameValueList(node, result, global.PostedFiles);
							break;

						case NodeSafeMode:
							ConfigUtils.ParseNameValueList(node, result, global.SafeMode);
							break;

						default:
							// processes library section:
                            result.librariesList.AddSection(node);
							break;
					}
				}
			}

            // and script library after that
            if (node_ScriptLibrary != null)
            {
                ConfigUtils.ParseScriptLibraryAssemblyList(node_ScriptLibrary, applicationContext.ScriptLibraryDatabase);
            }

			return result;
		}
	}

Same methods

ConfigurationSectionHandler::Create ( object parent, object configContext, XmlNode section ) : object
ConfigurationSectionHandler