Winify – Diff between revs 44 and 61

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