Winify – Diff between revs 15 and 28

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 15 Rev 28
1 using System; 1 using System;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using System.IO; 3 using System.IO;
4 using System.Text; 4 using System.Text;
5 using System.Threading.Tasks; 5 using System.Threading.Tasks;
6 using System.Xml; 6 using System.Xml;
7 using System.Xml.Schema; 7 using System.Xml.Schema;
8 using System.Xml.Serialization; 8 using System.Xml.Serialization;
9   9  
10 namespace Winify.Servers.Serialization 10 namespace Winify.Servers.Serialization
11 { 11 {
12 public static class ServersSerialization 12 public static class ServersSerialization
13 { 13 {
14 #region Public Methods 14 #region Public Methods
15   15  
16 public static async Task<SerializationState> Deserialize<T>(string file, string targetNamespace, 16 public static async Task<SerializationState> Deserialize<T>(string file, string targetNamespace,
17 string schemeUri) 17 string schemeUri)
18 { 18 {
19 var xmlSerializer = new XmlSerializer(typeof(T)); 19 var xmlSerializer = new XmlSerializer(typeof(T));
20   20  
21 var validationEventArgs = new List<ValidationEventArgs>(); 21 var validationEventArgs = new List<ValidationEventArgs>();
22   22  
23 void XmlReaderSettingsValidationEventHandler(object sender, ValidationEventArgs e) 23 void XmlReaderSettingsValidationEventHandler(object sender, ValidationEventArgs e)
24 { 24 {
25 validationEventArgs.Add(e); 25 validationEventArgs.Add(e);
26 } 26 }
27   27  
28 T servers; 28 T servers;
29   29  
30 var settings = new XmlReaderSettings(); 30 var settings = new XmlReaderSettings();
31   31  
32 try 32 try
33 { 33 {
34 settings.Async = true; 34 settings.Async = true;
35 settings.DtdProcessing = DtdProcessing.Parse; 35 settings.DtdProcessing = DtdProcessing.Parse;
36 settings.ValidationType = ValidationType.Schema; 36 settings.ValidationType = ValidationType.Schema;
37   37  
38 settings.ValidationFlags = XmlSchemaValidationFlags.ProcessInlineSchema | 38 settings.ValidationFlags = XmlSchemaValidationFlags.ProcessInlineSchema |
39 XmlSchemaValidationFlags.ProcessSchemaLocation | 39 XmlSchemaValidationFlags.ProcessSchemaLocation |
40 XmlSchemaValidationFlags.ReportValidationWarnings | 40 XmlSchemaValidationFlags.ReportValidationWarnings |
41 XmlSchemaValidationFlags.ProcessIdentityConstraints; 41 XmlSchemaValidationFlags.ProcessIdentityConstraints;
42   42  
43 settings.Schemas = new XmlSchemaSet(); 43 settings.Schemas = new XmlSchemaSet();
44   44  
45 settings.ValidationEventHandler += XmlReaderSettingsValidationEventHandler; 45 settings.ValidationEventHandler += XmlReaderSettingsValidationEventHandler;
46   46  
47 settings.Schemas.Add(targetNamespace, schemeUri); 47 settings.Schemas.Add(targetNamespace, schemeUri);
48   48  
49 using (var fileStream = 49 using (var fileStream =
50 new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 50 new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
51 { 51 {
52 using (var xmlReader = XmlReader.Create(fileStream, 52 using (var xmlReader = XmlReader.Create(fileStream,
53 settings)) 53 settings))
54 { 54 {
55 var stringBuilder = new StringBuilder(); 55 var stringBuilder = new StringBuilder();
56   56  
57 using (var stringWriter = new StringWriter(stringBuilder)) 57 using (var stringWriter = new StringWriter(stringBuilder))
58 { 58 {
59 while (await xmlReader.ReadAsync()) 59 while (await xmlReader.ReadAsync())
60 { -  
61 await stringWriter.WriteAsync(await xmlReader.ReadOuterXmlAsync()); 60 await stringWriter.WriteAsync(await xmlReader.ReadOuterXmlAsync());
62 } -  
63 } 61 }
64   62  
65 using (var stringReader = new StringReader(stringBuilder.ToString())) 63 using (var stringReader = new StringReader(stringBuilder.ToString()))
66 { 64 {
67 servers = 65 servers =
68 (T) xmlSerializer 66 (T)xmlSerializer
69 .Deserialize(stringReader); 67 .Deserialize(stringReader);
70 } 68 }
71 } 69 }
72 } 70 }
73 } 71 }
74 catch (Exception ex) 72 catch (Exception ex)
75 { 73 {
76 return new SerializationFailure(ex, validationEventArgs); 74 return new SerializationFailure(ex, validationEventArgs);
77 } 75 }
78 finally 76 finally
79 { 77 {
80 settings.ValidationEventHandler -= 78 settings.ValidationEventHandler -=
81 XmlReaderSettingsValidationEventHandler; 79 XmlReaderSettingsValidationEventHandler;
82 } 80 }
83   81  
84 return new SerializationSuccess<T>(servers, validationEventArgs); 82 return new SerializationSuccess<T>(servers, validationEventArgs);
85 } 83 }
86   84  
87 public static async Task<SerializationState> Serialize<T>(T servers, string file, string name, string subset) 85 public static async Task<SerializationState> Serialize<T>(T servers, string file, string name, string subset)
88 { 86 {
89 var xmlSerializer = new XmlSerializer(typeof(T)); 87 var xmlSerializer = new XmlSerializer(typeof(T));
90   88  
91 try 89 try
92 { 90 {
93 using (var memoryStream = new MemoryStream()) 91 using (var memoryStream = new MemoryStream())
94 { 92 {
95 using (var xmlWriter = 93 using (var xmlWriter =
96 XmlWriter.Create(memoryStream, 94 XmlWriter.Create(memoryStream,
97 new XmlWriterSettings 95 new XmlWriterSettings
98 { 96 {
99 Async = true, 97 Async = true,
100 Indent = true, 98 Indent = true,
101 IndentChars = " ", 99 IndentChars = " ",
102 OmitXmlDeclaration = false 100 OmitXmlDeclaration = false
103 })) 101 }))
104 { 102 {
105 await xmlWriter.WriteDocTypeAsync(name, 103 await xmlWriter.WriteDocTypeAsync(name,
106 null, 104 null,
107 null, 105 null,
108 subset); 106 subset);
109   107  
110 xmlSerializer.Serialize(xmlWriter, servers); 108 xmlSerializer.Serialize(xmlWriter, servers);
111   109  
112 using (var fileStream = 110 using (var fileStream =
113 new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) 111 new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
114 { 112 {
115 memoryStream.Position = 0L; 113 memoryStream.Position = 0L;
116   114  
117 await memoryStream.CopyToAsync(fileStream); 115 await memoryStream.CopyToAsync(fileStream);
118 } 116 }
119 } 117 }
120 } 118 }
121 } 119 }
122 catch (Exception ex) 120 catch (Exception ex)
123 { 121 {
124 return new SerializationFailure(ex); 122 return new SerializationFailure(ex);
125 } 123 }
126   124  
127 return new SerializationSuccess<T>(); 125 return new SerializationSuccess<T>();
128 } 126 }
129   127  
130 #endregion 128 #endregion
131 } 129 }
132 } 130 }
133   131  
134
Generated by GNU Enscript 1.6.5.90.
132
Generated by GNU Enscript 1.6.5.90.
135   133  
136   134  
137   135