/// <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(); } }
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 = SavableModelBase <DynamicConfiguration> .Load(memoryStream, SerializationFactory.GetXmlSerializer()); var newComplexSetting = newDynamicConfiguration.GetConfigurationValue <ComplexSetting>("ComplexSetting", null); Assert.AreEqual(newComplexSetting.FirstName, complexSetting.FirstName); Assert.AreEqual(newComplexSetting.MiddleName, complexSetting.MiddleName); Assert.AreEqual(newComplexSetting.LastName, complexSetting.LastName); } }
/// <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> /// 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> /// Serializes and deserializes an object using the specified mode. Finally, it will check whether the original object is equal. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="testObject">The test object.</param> /// <param name="mode">The mode.</param> /// <param name="enableRedirects">if set to <c>true</c>, redirects are enabled for binary serialization</param> /// <returns>The deserialized object.</returns> public static T SerializeAndDeserializeObject <T>(T testObject, SerializationMode mode, bool enableRedirects = false) where T : SavableModelBase <T> { using (var memoryStream = new MemoryStream()) { testObject.Save(memoryStream, mode); memoryStream.Position = 0L; return(SavableModelBase <T> .Load(memoryStream, mode, enableRedirects)); } }
public void TestParentAndChildRelationsWhenBinaryDeserializing() { var parent = new Parent("Parent"); var child = parent.CreateChild("Child"); Assert.AreEqual(((IParent)child).Parent, parent); var file = _filesHelper.GetTempFile(); parent.Save(file); #if SILVERLIGHT file.Position = 0L; #endif var loadedParent = SavableModelBase <Parent> .Load(file); Assert.AreEqual(parent, ((IParent)loadedParent.Children[0]).Parent); }
public void KnowsWhatPropertiesAreSetUsingDeserialization() { using (var memoryStream = new MemoryStream()) { using (var streamWriter = new StreamWriter(memoryStream)) { streamWriter.Write(ExpectedXml); streamWriter.Flush(); memoryStream.Position = 0L; var configuration = SavableModelBase <DynamicConfiguration> .Load(memoryStream, SerializationFactory.GetXmlSerializer()); Assert.IsTrue(configuration.IsConfigurationValueSet("KeyX")); Assert.IsTrue(configuration.IsConfigurationValueSet("KeyY")); Assert.IsFalse(configuration.IsConfigurationValueSet("C")); } } }
// SNIP! public static new T Load(Stream stream, SerializationMode mode) { Argument.IsNotNull(() => stream); if (mode == SerializationMode.Xml) { using (XmlReader xr = XmlReader.Create(stream)) { xr.MoveToContent(); string rootName = xr.LocalName; if (string.Compare(rootName, typeof(T).Name, StringComparison.OrdinalIgnoreCase) != 0) { throw new InvalidDataException(string.Format(CultureInfo.CurrentCulture, "Expecting data from Model [{0}], but found Model [{1}] instead.", typeof(T).Name, rootName)); } // Reset to read from the top. stream.Seek(0, SeekOrigin.Begin); } } return(SavableModelBase <T> .Load <T>(stream, mode)); }
public void TestParentAndChildRelationsWhenXmlDeserializing() { var parent = new Parent("Parent"); var child = parent.CreateChild("Child"); Assert.AreEqual(((IParent)child).Parent, parent); Parent loadedParent; using (var memoryStream = new MemoryStream()) { parent.Save(memoryStream, SerializationMode.Xml); memoryStream.Position = 0L; loadedParent = SavableModelBase <Parent> .Load(memoryStream, SerializationMode.Xml); } Assert.AreEqual(parent, ((IParent)loadedParent.Children[0]).Parent); }
public static ProgressionTree LoadFromFile(Catel.Runtime.Serialization.Xml.XmlSerializer seri, FileStream stream) { ProgressionTree tree = new ProgressionTree(); try { stream.Position = 0; seri.Warmup(new List <Type>() { typeof(TreeEntry), typeof(ProgressionEntry), typeof(ProgressionTree) }); tree = SavableModelBase <ProgressionTree> .Load(stream, seri); } catch (SerializationException ex) { Console.WriteLine(ex.Message); } return(tree); // return seri.Deserialize<ProgressionTree>(stream); }
public void RegistersPropertiesFromSerialization() { using (var memoryStream = new MemoryStream()) { using (var streamWriter = new StreamWriter(memoryStream)) { streamWriter.Write(ExpectedXml); streamWriter.Flush(); memoryStream.Position = 0L; var configuration = SavableModelBase <DynamicConfiguration> .Load(memoryStream, SerializationFactory.GetXmlSerializer()); Assert.IsTrue(configuration.IsConfigurationValueSet("KeyX")); Assert.IsTrue(configuration.IsConfigurationValueSet("KeyY")); Assert.AreEqual("Value X", configuration.GetConfigurationValue("KeyX")); Assert.AreEqual("Value Y", configuration.GetConfigurationValue("KeyY")); } } }