Exemple #1
0
        internal void LoadBuildContainer(PomElement element, IBuildContainer container)
        {
            var propertiesElement = element.SingleOrNull("properties");

            if (propertiesElement != null)
            {
                container.Properties = propertiesElement.Elements().Select(LoadProperty).ToList();
            }

            container.Modules = element
                                .ReadElements("modules", "module")
                                .Select(LoadModule)
                                .ToList();

            container.Dependencies = element
                                     .ReadElements("dependencies", "dependency")
                                     .Select(LoadDependency)
                                     .ToList();

            container.DependencyManagement = element
                                             .ReadElements("dependencyManagement", "dependencies", "dependency")
                                             .Select(LoadDependency)
                                             .ToList();

            container.Plugins = element.ReadElements("build", "plugins", "plugin")
                                .Select(LoadPlugin).ToList();

            container.PluginManagement = element.ReadElements("build", "pluginManagement", "plugins", "plugin")
                                         .Select(LoadPlugin).ToList();

            container.TestResources = new BlackBox(element.SingleOrNull("build", "testResources"));
        }
Exemple #2
0
        internal void SaveBuildContainer(IBuildContainer container, PomElement element)
        {
            if (!container.Properties.Any())
            {
                element.RemoveElement("properties");
            }
            else
            {
                var propertiesNode = element.SingleOrCreate("properties");
                propertiesNode.RemoveAllChildElements();
                foreach (IProperty property in container.Properties)
                {
                    SaveProperty(property, propertiesNode);
                }
            }

            if (!container.Modules.Any())
            {
                element.RemoveElement("modules");
            }
            else
            {
                var modulesNode = element.SingleOrCreate("modules");
                modulesNode.RemoveAllChildElements();
                foreach (IModule module in container.Modules.Where(m => !string.IsNullOrEmpty(m.Path)))
                {
                    var moduleNode = modulesNode.AddElement("module");
                    SaveModule(module, moduleNode);
                }
            }

            if (!container.Dependencies.Any())
            {
                element.RemoveElement("dependencies");
            }
            else
            {
                var dependenciesNode = element.SingleOrCreate("dependencies");
                dependenciesNode.RemoveAllChildElements();
                foreach (IDependency dependency in container.Dependencies)
                {
                    var dependencyNode = dependenciesNode.AddElement("dependency");
                    SaveDependency(dependency, dependencyNode);
                }
            }

            if (!container.DependencyManagement.Any())
            {
                element.RemoveElement("dependencyManagement");
            }
            else
            {
                var dependencyManagementNode = element.SingleOrCreate("dependencyManagement");
                var dependenciesNode         = dependencyManagementNode.SingleOrCreate("dependencies");
                dependenciesNode.RemoveAllChildElements();
                foreach (IDependency dependency in container.DependencyManagement)
                {
                    var dependencyNode = dependenciesNode.AddElement("dependency");
                    SaveDependency(dependency, dependencyNode);
                }
            }


            // empty build section
            // REVIEW: need refactoring
            if (!container.Plugins.Any() && !container.PluginManagement.Any() && container.TestResources.IsEmpty)
            {
                element.RemoveElement("build");
            }
            else
            {
                var buildNode = element.SingleOrCreate("build");
                if (!container.Plugins.Any())
                {
                    buildNode.RemoveElement("plugins");
                }
                else
                {
                    var pluginsNode = buildNode.SingleOrCreate("plugins");
                    pluginsNode.RemoveAllChildElements();
                    foreach (var plugin in container.Plugins)
                    {
                        var pluginNode = pluginsNode.AddElement("plugin");
                        SavePlugin(plugin, pluginNode);
                    }
                }

                if (!container.PluginManagement.Any())
                {
                    buildNode.RemoveElement("pluginManagement");
                }
                else
                {
                    var pluginManagementNode        = buildNode.SingleOrCreate("pluginManagement");
                    var pluginManagementPluginsNode = pluginManagementNode.SingleOrCreate("plugins");

                    pluginManagementPluginsNode.RemoveAllChildElements();
                    foreach (var plugin in container.PluginManagement)
                    {
                        var pluginNode = pluginManagementPluginsNode.AddElement("plugin");
                        SavePlugin(plugin, pluginNode);
                    }
                }

                if (container.TestResources.IsEmpty)
                {
                    buildNode.RemoveElement("testResources");
                }
                else
                {
                    var testResources = buildNode.SingleOrCreate("testResources");
                    testResources.ReplaceWith(container.TestResources.Value as PomElement);
                }
            }
        }