This is a migrated thread and some comments may be shown as answers.

[Bug report] serializing \r\n using IValueProvider

3 Answers 42 Views
PersistenceFramework
This is a migrated thread and some comments may be shown as answers.
Anthony
Top achievements
Rank 1
Anthony asked on 31 Dec 2015, 04:46 AM
if i serialize \r\n using IValueProvider, RestoreValue will change it to \n instead (\r is missing)

3 Answers, 1 is accepted

Sort by
0
Kiril Vandov
Telerik team
answered on 04 Jan 2016, 11:55 AM
Hello Anthony,

I have tried to reproduce the reported issue on our side but with no success. As i am not sure what is your exact scenario for saving the data I would like to ask you to provide us with more information.
I have attached a sample project demonstrating how I am using the CustomPropertyProvider to save the content of a button containing the \r\n Text.

Looking forward to hearing from you.

Kind regards,
Kiril Vandov
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
0
Anthony
Top achievements
Rank 1
answered on 04 Jan 2016, 02:13 PM

(ar.. can't attach zip file here?)

Feel free to use either value1 or value2 in the CustomValueProvider and you will hit an assertion failure

 

Use the following code

01.using System.Diagnostics;
02. 
03.using Telerik.Windows.Persistence.Services;
04. 
05.namespace Persistance_CustomIValueProvider
06.{
07.    public class CustomPropertyProvider : IValueProvider
08.    {
09.        private string value1 = "a\r\nb";
10.        private string value2 = "\r\n";
11. 
12.        public string ProvideValue(object context)
13.        {
14.            return value1;
15.        }
16. 
17.        public void RestoreValue(object context, string savedValue)
18.        {
19.            Debug.Assert(savedValue == value1);
20.        }
21.    }
22.}

0
Kiril Vandov
Telerik team
answered on 06 Jan 2016, 02:18 PM
Hello Anthony,

Thank you for the provided codesnippet it helped us reproduce the issue on our side. You are not able to attach zip files as this is a forum thread. 
We have investigate the issue and we have isolated the problem to how the XmlSerializer saves its date if it is used a StringWriter (it ignores the NewLines) and that is why they are lost during serialization. We have logged that issue in or system and you could track its progress via our feedbackportal. I have also updated your Telerik points as a small appreciation for your cooperation.

The code that the persistance uses internaly is like follows and you can reproduce that issue only using XmlSeruializer and StringWrite:
...
this.SerializeAndDeserialize();
        }
 
        private void SerializeAndDeserialize()
        {
            Test testClass = new Test();
            testClass.Header = "a\r\nb";
            XmlSerializer serializer = new XmlSerializer(typeof(Test));
 
            Stream stream = new MemoryStream();
            stream.Position = 0L;
            StreamWriter streamwriter = new StreamWriter(stream);
             
            streamwriter.Write(testClass);
            serializer.Serialize(stream, testClass);
            stream.Position = 0L;
 
            XmlSerializer rawDataSerializer = new XmlSerializer(typeof(Test));
            var rawData2 = rawDataSerializer.Deserialize(stream) as Test;
            if (rawData2.Header != testClass.Header)
            {
                ;
            }
        }
    }
 
    public class Test
    {
        private object header;
        public object Header
        {
            get
            {
                return this.header;
            }
            set
            {
                this.header = value;
            }
        }
    }
}

Please excuse us for any inconvenience caused.

Kind regards,
Kiril Vandov
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Tags
PersistenceFramework
Asked by
Anthony
Top achievements
Rank 1
Answers by
Kiril Vandov
Telerik team
Anthony
Top achievements
Rank 1
Share this question
or