Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="configurationFile"></param>
        public void Load(string configurationFile)
        {
            loading = true;
            try
            {
                FileConfigurationSource.ResetImplementation(configurationFile, false);

                IConfigurationUIHierarchyService hierarchyService = (IConfigurationUIHierarchyService)serviceProvider.GetService(typeof(IConfigurationUIHierarchyService));

                foreach (ConfigurationUIHierarchy hierarchy in hierarchyService.GetAllHierarchies())
                {
                    hierarchyService.RemoveHierarchy(hierarchy);
                }

                ConfigurationApplicationFile data         = new ConfigurationApplicationFile(Path.GetDirectoryName(configurationFile), configurationFile);
                ConfigurationUIHierarchy     newhierarchy = new ConfigurationUIHierarchy(new ConfigurationApplicationNode(data), serviceProvider);
                hierarchyService.AddHierarchy(newhierarchy);
                hierarchyService.SelectedHierarchy = newhierarchy;

                configurationEditor.SetMainHierarchy(newhierarchy);
                newhierarchy.Open();
                configurationEditor.ClearDirtyState();
            }
            finally
            {
                loading = false;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the current selected <see cref="IConfigurationUIHierarchy"/>.
        /// </summary>
        /// <param name="serviceProvider">
        /// The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.
        /// </param>
        /// <returns>The current selected <see cref="IConfigurationUIHierarchy"/>.</returns>
        public static IConfigurationUIHierarchy GetCurrentHierarchy(IServiceProvider serviceProvider)
        {
            if (null == serviceProvider)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            IConfigurationUIHierarchyService uiHierarchyService = GetUIHierarchyService(serviceProvider);

            return(uiHierarchyService.SelectedHierarchy);
        }
Esempio n. 3
0
        /// <summary>
        /// Gets the registered <see cref="IConfigurationUIHierarchyService"/>.
        /// </summary>
        /// <param name="serviceProvider">
        /// The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.
        /// </param>
        /// <returns>The registered <see cref="IConfigurationUIHierarchyService"/>.</returns>
        public static IConfigurationUIHierarchyService GetUIHierarchyService(IServiceProvider serviceProvider)
        {
            if (null == serviceProvider)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            IConfigurationUIHierarchyService hierarchyService = serviceProvider.GetService(typeof(IConfigurationUIHierarchyService)) as IConfigurationUIHierarchyService;

            return(hierarchyService);
        }
Esempio n. 4
0
        private ConfigurationUIHierarchy LoadMainConfiguration(string configurationFile, IServiceProvider serviceProvider)
        {
            IConfigurationUIHierarchyService hierarchyService = (IConfigurationUIHierarchyService)serviceProvider.GetService(typeof(IConfigurationUIHierarchyService));

            ConfigurationApplicationFile data      = new ConfigurationApplicationFile(Path.GetDirectoryName(configurationFile), configurationFile);
            ConfigurationUIHierarchy     hierarchy = new ConfigurationUIHierarchy(new ConfigurationApplicationNode(data), serviceProvider);

            hierarchyService.AddHierarchy(hierarchy);
            hierarchyService.SelectedHierarchy = hierarchy;

            hierarchy.Open();
            return(hierarchy);
        }
Esempio n. 5
0
        public void SaveCommandSavesTheHierarchy()
        {
            ConfigurationApplicationNode     node      = new ConfigurationApplicationNode(ConfigurationApplicationFile.FromCurrentAppDomain());
            IConfigurationUIHierarchy        hierarchy = new ConfigurationUIHierarchy(node, serviceProvider);
            IConfigurationUIHierarchyService service   = (IConfigurationUIHierarchyService)serviceProvider.GetService(typeof(IConfigurationUIHierarchyService));

            service.AddHierarchy(hierarchy);
            hierarchy.Saved += new EventHandler <HierarchySavedEventArgs>(OnHierarchySaved);
            SaveConfigurationApplicationNodeCommand cmd = new SaveConfigurationApplicationNodeCommand(serviceProvider);

            cmd.Execute(node);

            Assert.IsTrue(cmd.SaveSucceeded);
            Assert.IsTrue(saveCalled);
        }
Esempio n. 6
0
            public TemporaryConfigurationHierarchy(IServiceProvider serviceProvider, string filePath)
            {
                hierarchyService = ServiceHelper.GetUIHierarchyService(serviceProvider);

                previouslySelectedHierarchy = hierarchyService.SelectedHierarchy;

                ConfigurationApplicationFile configurationFile     = new ConfigurationApplicationFile(Path.GetDirectoryName(filePath), filePath);
                ConfigurationApplicationNode configurationRootNode = new ConfigurationApplicationNode(configurationFile);

                hierarchy = new ConfigurationUIHierarchy(configurationRootNode, serviceProvider);

                hierarchyService.SelectedHierarchy = hierarchy;


                SaveMergedEnvironmentCommand.UpdateConfigurationSource(hierarchy, filePath);
                hierarchy.Open();
            }
Esempio n. 7
0
        /// <summary>
        /// Performs the merging of configuration, given a specific <see cref="EnvironmentNode"/>.
        /// </summary>
        /// <param name="node">The <see cref="EnvironmentNode"/> this command should be executed on.</param>
        protected override void ExecuteCore(ConfigurationNode node)
        {
            EnvironmentNode environmentNode = node as EnvironmentNode;

            if (environmentNode != null)
            {
                if (EnsureMainHierarchyIsSaved(node.Hierarchy, node.Site))
                {
                    EnvironmentMergeAware environmentMergeService = node.Site.GetService(typeof(EnvironmentMergeAware)) as EnvironmentMergeAware;

                    string originalFilePath      = Path.GetFullPath(node.Hierarchy.RootNode.ConfigurationFile);
                    string originalDirectoryPath = Path.GetDirectoryName(originalFilePath);
                    environmentMergeService.SetEnvironmentalMergeInProgress(true);

                    try
                    {
                        UIService.BeginUpdate();

                        Dictionary <string, ConfigurationNodeMergeData> mergeDataByPath = environmentNode.EnvironmentMergeData.UnfoldMergeData(environmentNode.Hierarchy, false);

                        string temporaryFilepath       = Path.GetTempFileName();
                        bool   temporarySaveSuccessful = false;
                        try
                        {
                            UpdateConfigurationSource(node.Hierarchy, temporaryFilepath);

                            SaveConfigurationApplicationNodeCommand saveConfigurationNodeCommand = new SaveConfigurationApplicationNodeCommand(ServiceProvider);
                            saveConfigurationNodeCommand.Execute(ServiceHelper.GetCurrentRootNode(ServiceProvider));
                            temporarySaveSuccessful = saveConfigurationNodeCommand.SaveSucceeded;
                        }
                        finally
                        {
                            UpdateConfigurationSource(node.Hierarchy, originalFilePath);
                            node.Hierarchy.ConfigurationSource    = null;
                            node.Hierarchy.ConfigurationParameter = null;
                        }

                        if (temporarySaveSuccessful)
                        {
                            using (TemporaryConfigurationHierarchy tempHierarchy = new TemporaryConfigurationHierarchy(ServiceProvider, temporaryFilepath))
                            {
                                MergeHierarchy(tempHierarchy.Hierarchy, mergeDataByPath);

                                SaveConfigurationApplicationNodeCommand saveConfigurationApplication = new SaveConfigurationApplicationNodeCommand(ServiceProvider);

                                string environmentConfigurationFile = CreateMergedConfigurationFile(environmentNode, originalFilePath, originalDirectoryPath);

                                UpdateConfigurationSource(tempHierarchy.Hierarchy, environmentConfigurationFile);
                                RemoveConfigurationSourceElements(tempHierarchy.Hierarchy);

                                saveConfigurationApplication.Execute(tempHierarchy.Hierarchy.RootNode);

                                mergeSucceeded          = saveConfigurationApplication.SaveSucceeded;
                                mergedConfigurationFile = environmentConfigurationFile;
                            }

                            try
                            {
                                File.Delete(temporaryFilepath);
                            }
                            catch (IOException)
                            {
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        IUIService uiService = ServiceHelper.GetUIService(ServiceProvider);
                        uiService.ShowError(e, Resources.ErrorSavingMergedConfigurationCaption);
                    }
                    finally
                    {
                        IConfigurationUIHierarchyService hierarchyService = ServiceHelper.GetUIHierarchyService(ServiceProvider);
                        hierarchyService.SelectedHierarchy = node.Hierarchy;

                        UIService.EndUpdate();

                        environmentMergeService.SetEnvironmentalMergeInProgress(false);
                    }
                }
            }
        }
 /// <summary>
 /// Initialize a new instance of the <see cref="UICommandService"/> class with an <see cref="IConfigurationUIHierarchyService"/>.
 /// </summary>
 /// <param name="hierarchyService">A <see cref="IConfigurationUIHierarchyService"/> instance.</param>
 public UICommandService(IConfigurationUIHierarchyService hierarchyService)
 {
     this.hierarchyService = hierarchyService;
     list = new Dictionary <HierarchyAndType, List <ConfigurationUICommand> >();
 }
Esempio n. 9
0
		/// <summary>
		/// Initialize a new instance of the <see cref="UICommandService"/> class with an <see cref="IConfigurationUIHierarchyService"/>.
		/// </summary>
		/// <param name="hierarchyService">A <see cref="IConfigurationUIHierarchyService"/> instance.</param>
        public UICommandService(IConfigurationUIHierarchyService hierarchyService)
        {
            this.hierarchyService = hierarchyService;
            list = new Dictionary<HierarchyAndType, List<ConfigurationUICommand>>();
        }
            public TemporaryConfigurationHierarchy(IServiceProvider serviceProvider, string filePath)
            {
                hierarchyService = ServiceHelper.GetUIHierarchyService(serviceProvider);

                previouslySelectedHierarchy = hierarchyService.SelectedHierarchy;

                ConfigurationApplicationFile configurationFile = new ConfigurationApplicationFile(Path.GetDirectoryName(filePath), filePath);
                ConfigurationApplicationNode configurationRootNode = new ConfigurationApplicationNode(configurationFile);
                hierarchy = new ConfigurationUIHierarchy(configurationRootNode, serviceProvider);

                hierarchyService.SelectedHierarchy = hierarchy;


                SaveMergedEnvironmentCommand.UpdateConfigurationSource(hierarchy, filePath);
                hierarchy.Open();
            }
Esempio n. 11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="message"></param>
        protected void LogError(string message)
        {
            IConfigurationUIHierarchyService uiHierarchyService = ServiceHelper.GetUIHierarchyService(ServiceProvider);

            ServiceHelper.LogError(ServiceProvider, new ConfigurationError(uiHierarchyService.SelectedHierarchy.RootNode, message));
        }