public ModuleConfigurationElementCollection(ModuleConfigurationElement[] modules) { Guard.ArgumentNotNull(modules, "modules"); foreach (ModuleConfigurationElement module in modules) { BaseAdd(module); } }
public void EnumeratesOneModuleWithServicesForRegistration() { Type registerAs = typeof (string); Type concreteType = typeof (Int32); string scope = "Global"; MockModuleInfoStore store = new MockModuleInfoStore(); ModuleConfigurationElement module1 = new ModuleConfigurationElement("Module1.Name", "Module1.Assembly", "Module1.VirtualPath"); module1.Services = new ServiceConfigurationElementCollection( new ServiceConfigurationElement[] {new ServiceConfigurationElement(registerAs, concreteType, scope)}); store.Modules = new ModuleConfigurationElement[] {module1}; WebModuleEnumerator enumerator = new WebModuleEnumerator(store); IModuleInfo[] modules = enumerator.EnumerateModules(); Assert.AreEqual(1, modules.Length); Assert.IsNotNull(modules[0] as DependantModuleInfo); DependantModuleInfo moduleInfo = (DependantModuleInfo) modules[0]; Assert.IsNotNull(moduleInfo.Services); Assert.AreEqual(1, moduleInfo.Services.Length); Assert.AreEqual(registerAs, moduleInfo.Services[0].RegisterAs); Assert.AreEqual(concreteType, moduleInfo.Services[0].Type); Assert.AreEqual(ServiceScope.Global, moduleInfo.Services[0].Scope); }
public void EnumerateThrowsIfDuplicateNames() { MockModuleInfoStore store = new MockModuleInfoStore(); ModuleConfigurationElement module1 = new ModuleConfigurationElement("Module1.Name", "Module1.Assembly", "Module1.VirtualPath"); ModuleConfigurationElement module2 = new ModuleConfigurationElement("Module1.Name", "Module2.Assembly", "Module2.VirtualPath"); store.Modules = new ModuleConfigurationElement[] {module2, module1}; WebModuleEnumerator enumerator = new WebModuleEnumerator(store); IModuleInfo[] modules = enumerator.EnumerateModules(); }
public void EnumeratesTwoModulesWithoutVirtualPath() { MockModuleInfoStore store = new MockModuleInfoStore(); ModuleConfigurationElement module1 = new ModuleConfigurationElement("Module1.Name", "Module1.Assembly", null); ModuleConfigurationElement module2 = new ModuleConfigurationElement("Module2.Name", "Module2.Assembly", string.Empty); store.Modules = new ModuleConfigurationElement[] {module2, module1}; WebModuleEnumerator enumerator = new WebModuleEnumerator(store); IModuleInfo[] modules = enumerator.EnumerateModules(); Assert.AreEqual(2, modules.Length); Assert.AreEqual("Module1.Name", modules[0].Name); Assert.AreEqual("Module2.Name", modules[1].Name); }
public void EnumeratesThreeModulesWithoutDependenciesInCorrectOrder() { MockModuleInfoStore store = new MockModuleInfoStore(); ModuleConfigurationElement module1 = new ModuleConfigurationElement("Module1.Name", "Module1.Assembly", "Module1.VirtualPath"); ModuleConfigurationElement module2 = new ModuleConfigurationElement("Module2.Name", "Module2.Assembly", "Module2.VirtualPath"); ModuleConfigurationElement module3 = new ModuleConfigurationElement("Module3.Name", "Module3.Assembly", "Module3.VirtualPath"); store.Modules = new ModuleConfigurationElement[] {module3, module2, module1}; WebModuleEnumerator enumerator = new WebModuleEnumerator(store); IModuleInfo[] modules = enumerator.EnumerateModules(); Assert.AreEqual(3, modules.Length); Assert.AreEqual("Module1.Name", modules[0].Name); Assert.AreEqual("Module2.Name", modules[1].Name); Assert.AreEqual("Module3.Name", modules[2].Name); }
public void EnumeratesThreeModulesWithDependencies() { MockModuleInfoStore store = new MockModuleInfoStore(); ModuleConfigurationElement module1 = new ModuleConfigurationElement("Module1.Name", "Module1.Assembly", "Module1.VirtualPath"); module1.Dependencies = new ModuleDependencyCollection( new ModuleDependencyConfigurationElement[] {new ModuleDependencyConfigurationElement("Module2.Name")}); ModuleConfigurationElement module2 = new ModuleConfigurationElement("Module2.Name", "Module2.Assembly", "Module2.VirtualPath"); module2.Dependencies = new ModuleDependencyCollection( new ModuleDependencyConfigurationElement[] {new ModuleDependencyConfigurationElement("Module3.Name")}); ModuleConfigurationElement module3 = new ModuleConfigurationElement("Module3.Name", "Module3.Assembly", "Module3.VirtualPath"); store.Modules = new ModuleConfigurationElement[] {module3, module2, module1}; WebModuleEnumerator enumerator = new WebModuleEnumerator(store); List<IModuleInfo> modules = new List<IModuleInfo>(enumerator.EnumerateModules()); Assert.AreEqual(3, modules.Count); Assert.IsTrue(modules.Exists(delegate(IModuleInfo module) { return module.Name == "Module1.Name"; })); Assert.IsTrue(modules.Exists(delegate(IModuleInfo module) { return module.Name == "Module2.Name"; })); Assert.IsTrue(modules.Exists(delegate(IModuleInfo module) { return module.Name == "Module3.Name"; })); }
/// <summary> /// Extra method specific for this store to be used by the GP to modify the Module configuration /// </summary> /// <param name="moduleConfig"></param> public void AddModuleConfigurationElement(ModuleConfigurationElement moduleConfig) { string[] found = Directory.GetFiles(_baseDirectory, "Web.Config", SearchOption.TopDirectoryOnly); if (found.Length > 0) { SaveConfigurationElement(found[0], moduleConfig); } }
private void SaveConfigurationElement(string filePath, ModuleConfigurationElement moduleConfig) { XmlDocument config = new XmlDocument(); config.Load(filePath); XmlNode modulesNode = config.SelectSingleNode(XpathCompositeWebModulesNode); XmlElement moduleNode; if (modulesNode == null) { XmlNamespaceManager nsmgr = new XmlNamespaceManager(config.NameTable); nsmgr.AddNamespace(QualifierXpath, NetConfigurationNamespace); modulesNode = config.SelectSingleNode(QualifiedXpathCompositeWebModulesNode, nsmgr); moduleNode = config.CreateElement(ModuleElementName, NetConfigurationNamespace); } else { moduleNode = config.CreateElement(ModuleElementName); } AddAttribute(NameAttribute, config, moduleConfig, moduleNode); AddAttribute(AssemblyNameAttribute, config, moduleConfig, moduleNode); if (!string.IsNullOrEmpty(moduleConfig.VirtualPath)) { AddAttribute(VirtualPathAttribute, config, moduleConfig, moduleNode); } modulesNode.AppendChild(moduleNode); config.Save(filePath); }
private ModulesConfigurationSection ParseSection(string filePath) { ModulesConfigurationSection section = new ModulesConfigurationSection(); XmlDocument config = new XmlDocument(); config.Load(filePath); XmlNodeList moduleList = config.SelectNodes(XpathCompositeWebModuleNode); if (moduleList == null || moduleList.Count == 0) { XmlNamespaceManager nsmgr = new XmlNamespaceManager(config.NameTable); nsmgr.AddNamespace(QualifierXpath, NetConfigurationNamespace); moduleList = config.SelectNodes(QualifiedXpathCompositeWebModuleNode, nsmgr); } foreach (XmlNode module in moduleList) { string name = module.Attributes[NameAttribute].Value; string assemblyName = module.Attributes[AssemblyNameAttribute].Value; string virtualPath = null; if (module.Attributes[VirtualPathAttribute] != null) { virtualPath = module.Attributes[VirtualPathAttribute].Value; } ModuleConfigurationElement data = new ModuleConfigurationElement(name, assemblyName, virtualPath); section.Modules.Add(data); } return section; }
private static void AddAttribute(string attributeName, XmlDocument config, ModuleConfigurationElement moduleConfig, XmlElement moduleNode) { XmlAttribute attribute = config.CreateAttribute(attributeName); attribute.Value = moduleConfig.Name; moduleNode.Attributes.Append(attribute); }
/// <summary> /// Adds a <see cref="ModuleConfigurationElement"/> to the collection. /// </summary> /// <param name="module">A <see cref="ModuleConfigurationElement"/> instance.</param> public void Add(ModuleConfigurationElement module) { BaseAdd(module); }
public override void Execute() { string webProjectPath = _webProject.Properties.Item("FullPath").Value.ToString(); string assemlyName = _moduleProject.Properties.Item("AssemblyName").Value.ToString(); WebConfigXmlParseModuleInfoStore store = new WebConfigXmlParseModuleInfoStore(webProjectPath); ModuleConfigurationElement moduleConfig = new ModuleConfigurationElement(_moduleName, assemlyName, null); store.AddModuleConfigurationElement(moduleConfig); }