Winify – Diff between revs 44 and 61

Subversion Repositories:
Rev:
Only display areas with differencesIgnore 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 = -  
70 (T)xmlSerializer -  
71 .Deserialize(stringReader); 67 servers =
72 } 68 (T)xmlSerializer
73 } 69 .Deserialize(stringReader);
74 } 70 }
75 } 71 }
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 { -  
102 Async = true, -  
103 Indent = true, -  
104 IndentChars = " ", -  
105 OmitXmlDeclaration = false -  
106 })) -  
107 { -  
108 await xmlWriter.WriteDocTypeAsync(name, -  
109 null, -  
110 null, -  
111 subset); -  
112   -  
113 xmlSerializer.Serialize(xmlWriter, servers); -  
114   -  
115 using (var fileStream = -  
116 await Miscellaneous.GetFileStream(file, FileMode.Create, FileAccess.Write, -  
117 FileShare.Write, -  
118 cancellationToken)) -  
119 { 96 {
-   97 Async = true,
-   98 Indent = true,
-   99 IndentChars = " ",
-   100 OmitXmlDeclaration = false
-   101 });
-   102 await xmlWriter.WriteDocTypeAsync(name,
-   103 null,
-   104 null,
-   105 subset);
-   106  
-   107 xmlSerializer.Serialize(xmlWriter, servers);
-   108  
-   109 using var fileStream =
-   110 await Miscellaneous.GetFileStream(file, FileMode.Create, FileAccess.Write,
-   111 FileShare.Write,
-   112 cancellationToken);
120 memoryStream.Position = 0L; 113 memoryStream.Position = 0L;
121   114  
122 await memoryStream.CopyToAsync(fileStream); -  
123 } -  
124 } -  
125 } 115 await memoryStream.CopyToAsync(fileStream);
126 } 116 }
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