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);
 }
Example #11
0
 /// <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);
        }
 /// <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);
 }