/// <summary> /// Initializes a new instance of the <see cref="ConfigurationService" /> class. /// </summary> /// <param name="serializationManager">The serialization manager.</param> /// <param name="objectConverterService">The object converter service.</param> public ConfigurationService(ISerializationManager serializationManager, IObjectConverterService objectConverterService) { Argument.IsNotNull(() => serializationManager); Argument.IsNotNull(() => objectConverterService); _serializationManager = serializationManager; _objectConverterService = objectConverterService; #if NET _configFilePath = Path.Combine(Path.GetApplicationDataDirectory(), "configuration.xml"); try { if (File.Exists(_configFilePath)) { using (var fileStream = new FileStream(_configFilePath, FileMode.Open)) { _configuration = ModelBase.Load <DynamicConfiguration>(fileStream, SerializationMode.Xml); } } } catch (Exception ex) { Log.Error(ex, "Failed to load configuration, using default settings"); } if (_configuration == null) { _configuration = new DynamicConfiguration(); } #endif }
/// <summary> /// Sets the roaming config file path. /// </summary> /// <param name="filePath">The file path. </param> public void SetLocalConfigFilePath(string filePath) { Argument.IsNotNullOrEmpty(nameof(filePath), filePath); _localConfigFilePath = filePath; try { if (File.Exists(_localConfigFilePath)) { using (var fileStream = new FileStream(_localConfigFilePath, FileMode.Open)) { _localConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer); } } else { _localConfiguration?.SaveAsXml(_localConfigFilePath); } } catch (Exception ex) { Log.Error(ex, "Failed to load local configuration, using default settings"); _localConfigFilePath = DefaultLocalConfigFilePath; } if (_localConfiguration == null) { _localConfiguration = new DynamicConfiguration(); } }
/// <summary> /// Sets the roaming config file path. /// </summary> /// <param name="filePath">The file path. </param> public void SetRoamingConfigFilePath(string filePath) { Argument.IsNotNullOrEmpty(nameof(filePath), filePath); _roamingConfigFilePath = filePath; try { if (File.Exists(_roamingConfigFilePath)) { using (var fileStream = new FileStream(_roamingConfigFilePath, FileMode.Open)) { _roamingConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer); } } else { _roamingConfiguration?.SaveAsXml(_roamingConfigFilePath); } } catch (Exception ex) { Log.Error(ex, "Failed to load roaming configuration, using default settings"); _roamingConfigFilePath = GetConfigurationFileName(IO.ApplicationDataTarget.UserRoaming); } if (_roamingConfiguration is null) { _roamingConfiguration = new DynamicConfiguration(); } }
/// <summary> /// Initializes a new instance of the <see cref="ConfigurationService" /> class. /// </summary> /// <param name="serializationManager">The serialization manager.</param> /// <param name="objectConverterService">The object converter service.</param> /// <param name="serializer">The serializer.</param> public ConfigurationService(ISerializationManager serializationManager, IObjectConverterService objectConverterService, ISerializer serializer) { Argument.IsNotNull("serializationManager", serializationManager); Argument.IsNotNull("objectConverterService", objectConverterService); Argument.IsNotNull("serializer", serializer); _serializationManager = serializationManager; _objectConverterService = objectConverterService; _serializer = serializer; #if NET || NETSTANDARD _localConfigFilePath = Path.Combine(Path.GetApplicationDataDirectory(Catel.IO.ApplicationDataTarget.UserLocal), "configuration.xml"); try { if (File.Exists(_localConfigFilePath)) { using (var fileStream = new FileStream(_localConfigFilePath, FileMode.Open)) { _localConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer); } } } catch (Exception ex) { Log.Error(ex, "Failed to load local configuration, using default settings"); } if (_localConfiguration == null) { _localConfiguration = new DynamicConfiguration(); } _roamingConfigFilePath = Path.Combine(Path.GetApplicationDataDirectory(Catel.IO.ApplicationDataTarget.UserRoaming), "configuration.xml"); try { if (File.Exists(_roamingConfigFilePath)) { using (var fileStream = new FileStream(_roamingConfigFilePath, FileMode.Open)) { _roamingConfiguration = SavableModelBase <DynamicConfiguration> .Load(fileStream, _serializer); } } } catch (Exception ex) { Log.Error(ex, "Failed to load roaming configuration, using default settings"); } if (_roamingConfiguration == null) { _roamingConfiguration = new DynamicConfiguration(); } #endif }
/// <summary> /// Gets the settings container for this platform /// </summary> /// <param name="container">The settings container.</param> /// <returns>The settings container.</returns> protected DynamicConfiguration GetSettingsContainer(ConfigurationContainer container) { DynamicConfiguration settings = null; switch (container) { case ConfigurationContainer.Local: settings = _localConfiguration; break; case ConfigurationContainer.Roaming: settings = _roamingConfiguration; break; default: throw new ArgumentOutOfRangeException("container"); } return(settings); }
public void KnowsWhatPropertiesAreSetUsingSetConfigurationValue() { var configuration = new DynamicConfiguration(); configuration.SetConfigurationValue("A", "1"); configuration.SetConfigurationValue("B", "2"); Assert.IsTrue(configuration.IsConfigurationValueSet("A")); Assert.IsTrue(configuration.IsConfigurationValueSet("B")); Assert.IsFalse(configuration.IsConfigurationValueSet("C")); }
public void CorrectlySerializesComplexObjects() { var dynamicConfiguration = new DynamicConfiguration(); var complexSetting = new ComplexSetting { FirstName = "Geert", MiddleName = "van", LastName = "Horrik" }; dynamicConfiguration.SetConfigurationValue("ComplexSetting", complexSetting); using (var memoryStream = new MemoryStream()) { dynamicConfiguration.SaveAsXml(memoryStream); memoryStream.Position = 0L; var newDynamicConfiguration = ModelBase.Load<DynamicConfiguration>(memoryStream, SerializationMode.Xml); var newComplexSetting = newDynamicConfiguration.GetConfigurationValue<ComplexSetting>("ComplexSetting"); Assert.AreEqual(newComplexSetting.FirstName, complexSetting.FirstName); Assert.AreEqual(newComplexSetting.MiddleName, complexSetting.MiddleName); Assert.AreEqual(newComplexSetting.LastName, complexSetting.LastName); } }
public void CorrectlySerializesConfiguration() { var dynamicConfiguration = new DynamicConfiguration(); dynamicConfiguration.SetConfigurationValue("KeyX", "Value X"); dynamicConfiguration.SetConfigurationValue("KeyY", "Value Y"); dynamicConfiguration.SetConfigurationValue("KeyZ.SomeAddition", "Value Z"); using (var memoryStream = new MemoryStream()) { dynamicConfiguration.SaveAsXml(memoryStream); var outputXml = memoryStream.GetUtf8String(); Assert.AreEqual(ExpectedXml, outputXml); } }