/// <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; } }
/// <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); }
/// <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); }
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); }
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); }
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(); }
/// <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> >(); }
/// <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(); }
/// <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)); }