@joebigelow / wix / commits / a96d1a91

Small cleanup

Rob Mensching committed Mar 1, 2021 at 23:13 UTC a96d1a916bfcf35f77d48f70215d62b298bfb933
5 files changed +7 -293
src/WixToolset.Data/IntermediateFieldExtensions.cs
+3 -45
@@ -45,21 +45,7 @@ namespace WixToolset.Data
45 return null;
46 }
47
48 - switch (field.Definition.Type)
49 - {
50 - case IntermediateFieldType.Bool:
51 - return field.Value.AsBool();
52 -
53 - case IntermediateFieldType.LargeNumber:
54 - case IntermediateFieldType.Number:
55 - return field.Value.AsLargeNumber() != 0;
56 -
57 - case IntermediateFieldType.String:
58 - return !String.IsNullOrEmpty(field.Value.AsString());
59 -
60 - default:
61 - throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to boolean");
62 - }
48 + return field.AsBool();
49 }
50
51 public static long AsLargeNumber(this IntermediateField field)
@@ -93,21 +79,7 @@ namespace WixToolset.Data
79 return null;
80 }
81
96 - switch (field.Definition.Type)
97 - {
98 - case IntermediateFieldType.Bool:
99 - return field.Value.AsBool() ? 1 : 0;
100 -
101 - case IntermediateFieldType.LargeNumber:
102 - case IntermediateFieldType.Number:
103 - return field.Value.AsLargeNumber();
104 -
105 - case IntermediateFieldType.String:
106 - return Convert.ToInt64(field.Value.AsString());
107 -
108 - default:
109 - throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to large number");
110 - }
82 + return field.AsLargeNumber();
83 }
84
85 public static int AsNumber(this IntermediateField field)
@@ -141,21 +113,7 @@ namespace WixToolset.Data
113 return null;
114 }
115
144 - switch (field.Definition.Type)
145 - {
146 - case IntermediateFieldType.Bool:
147 - return field.Value.AsBool() ? 1 : 0;
148 -
149 - case IntermediateFieldType.LargeNumber:
150 - case IntermediateFieldType.Number:
151 - return field.Value.AsNumber();
152 -
153 - case IntermediateFieldType.String:
154 - return Convert.ToInt32(field.Value.AsString());
155 -
156 - default:
157 - throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to number");
158 - }
116 + return field.AsNumber();
117 }
118
119 public static IntermediateFieldPathValue AsPath(this IntermediateField field)
src/WixToolset.Data/IntermediateSymbol.cs
-1
@@ -165,7 +165,6 @@ namespace WixToolset.Data
165 var id = (idJson == null) ? null : Identifier.Deserialize(idJson);
166 var sourceLineNumbers = (sourceLineNumbersJson == null) ? null : SourceLineNumber.Deserialize(sourceLineNumbersJson);
167
168 - // TODO: this isn't sufficient.
168 if (!creator.TryGetSymbolDefinitionByName(definitionName, out var definition))
169 {
170 throw new WixException(ErrorMessages.UnknownSymbolType(definitionName));
src/WixToolset.Data/Json/JsonObjectExtensions.cs
+3 -3
@@ -1,4 +1,4 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3 namespace WixToolset.Data
4 {
@@ -64,13 +64,13 @@ namespace WixToolset.Data
64
65 public static T GetValueOrDefault<T>(this JsonObject jsonObject, string key, T defaultValue = default(T)) where T : class
66 {
67 - return jsonObject.TryGetValue(key, out var value) ? value as T: defaultValue;
67 + return jsonObject.TryGetValue(key, out var value) ? value as T : defaultValue;
68 }
69
70 public static T GetEnumOrDefault<T>(this JsonObject jsonObject, string key, T defaultValue) where T : struct
71 {
72 #if DEBUG
73 - if (!typeof(T).IsEnum) throw new ArgumentException("This method is designed to only only support enums.", nameof(T));
73 + if (!typeof(T).IsEnum) { throw new ArgumentException("This method only supports enums.", nameof(T)); }
74 #endif
75 var value = jsonObject.GetValueOrDefault<string>(key);
76 return Enum.TryParse(value, true, out T e) ? e : defaultValue;
src/WixToolset.Data/Library.cs deleted
-243
@@ -1,243 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset.Data
4 -{
5 - using System;
6 - using System.Collections.Generic;
7 - using System.IO;
8 - using System.Xml;
9 -
10 - /// <summary>
11 - /// Object that represents a library file.
12 - /// </summary>
13 - public sealed class Library
14 - {
15 - public const string XmlNamespaceUri = "http://wixtoolset.org/schemas/v4/wixlib";
16 - private static readonly Version CurrentVersion = new Version("4.0.0.0");
17 -
18 -#if false
19 - private string id;
20 - private List<string> embedFilePaths;
21 - private Dictionary<string, Localization> localizations;
22 - private List<Section> sections;
23 -
24 - /// <summary>
25 - /// Instantiates a new empty library which is only useful from static creating methods.
26 - /// </summary>
27 - private Library()
28 - {
29 - this.embedFilePaths = new List<string>();
30 - this.localizations = new Dictionary<string, Localization>();
31 - this.sections = new List<Section>();
32 - }
33 -
34 - /// <summary>
35 - /// Instantiate a new library populated with sections.
36 - /// </summary>
37 - /// <param name="sections">Sections to add to the library.</param>
38 - /// <param name="localizationsByCulture"></param>
39 - public Library(IEnumerable<Section> sections, IDictionary<string, Localization> localizationsByCulture, IEnumerable<string> embedFilePaths)
40 - {
41 - this.id = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).TrimEnd('=').Replace('+', '.').Replace('/', '_');
42 - this.embedFilePaths = new List<string>(embedFilePaths);
43 - this.localizations = new Dictionary<string, Localization>(localizationsByCulture);
44 - this.sections = new List<Section>(sections);
45 -
46 - foreach (Section section in this.sections)
47 - {
48 - section.LibraryId = this.id;
49 - }
50 - }
51 -
52 - /// <summary>
53 - /// Get the sections contained in this library.
54 - /// </summary>
55 - /// <value>Sections contained in this library.</value>
56 - public IEnumerable<Section> Sections => this.sections;
57 -
58 - /// <summary>
59 - /// Gets localization files from this library that match the cultures passed in, in the order of the array of cultures.
60 - /// </summary>
61 - /// <param name="cultures">The list of cultures to get localizations for.</param>
62 - /// <returns>All localizations contained in this library that match the set of cultures provided, in the same order.</returns>
63 - public IEnumerable<Localization> GetLocalizations(string[] cultures)
64 - {
65 - foreach (string culture in cultures ?? new string[0])
66 - {
67 - if (this.localizations.TryGetValue(culture, out var localization))
68 - {
69 - yield return localization;
70 - }
71 - }
72 - }
73 -
74 - /// <summary>
75 - /// Loads a library from a path on disk.
76 - /// </summary>
77 - /// <param name="path">Path to library file saved on disk.</param>
78 - /// <param name="tableDefinitions">Collection containing TableDefinitions to use when reconstituting the intermediates.</param>
79 - /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param>
80 - /// <returns>Returns the loaded library.</returns>
81 - public static Library Load(string path, TableDefinitionCollection tableDefinitions, bool suppressVersionCheck)
82 - {
83 - using (FileStream stream = File.OpenRead(path))
84 - {
85 - return Load(stream, new Uri(Path.GetFullPath(path)), tableDefinitions, suppressVersionCheck);
86 - }
87 - }
88 -
89 - /// <summary>
90 - /// Loads a library from a stream.
91 - /// </summary>
92 - /// <param name="stream">Stream containing the library file.</param>
93 - /// <param name="uri">Uri for finding this stream.</param>
94 - /// <param name="tableDefinitions">Collection containing TableDefinitions to use when reconstituting the intermediates.</param>
95 - /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param>
96 - /// <returns>Returns the loaded library.</returns>
97 - public static Library Load(Stream stream, Uri uri, TableDefinitionCollection tableDefinitions, bool suppressVersionCheck)
98 - {
99 - using (FileStructure fs = FileStructure.Read(stream))
100 - {
101 - if (FileFormat.Wixlib != fs.FileFormat)
102 - {
103 - throw new WixUnexpectedFileFormatException(uri.LocalPath, FileFormat.Wixlib, fs.FileFormat);
104 - }
105 -
106 - using (XmlReader reader = XmlReader.Create(fs.GetDataStream(), null, uri.AbsoluteUri))
107 - {
108 - try
109 - {
110 - reader.MoveToContent();
111 - return Library.Read(reader, tableDefinitions, suppressVersionCheck);
112 - }
113 - catch (XmlException xe)
114 - {
115 - throw new WixCorruptFileException(uri.LocalPath, fs.FileFormat, xe);
116 - }
117 - }
118 - }
119 - }
120 -
121 - /// <summary>
122 - /// Saves a library to a path on disk.
123 - /// </summary>
124 - /// <param name="path">Path to save library file to on disk.</param>
125 - /// <param name="resolver">The WiX path resolver.</param>
126 - public void Save(string path)
127 - {
128 - Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(path)));
129 -
130 - using (FileStream stream = File.Create(path))
131 - using (FileStructure fs = FileStructure.Create(stream, FileFormat.Wixlib, embedFilePaths))
132 - using (XmlWriter writer = XmlWriter.Create(fs.GetDataStream()))
133 - {
134 - writer.WriteStartDocument();
135 -
136 - this.Write(writer);
137 -
138 - writer.WriteEndDocument();
139 - }
140 - }
141 -
142 - /// <summary>
143 - /// Parse the root library element.
144 - /// </summary>
145 - /// <param name="reader">XmlReader with library persisted as Xml.</param>
146 - /// <param name="tableDefinitions">Collection containing TableDefinitions to use when reconstituting the intermediates.</param>
147 - /// <param name="suppressVersionCheck">Suppresses check for wix.dll version mismatch.</param>
148 - /// <returns>The parsed Library.</returns>
149 - private static Library Read(XmlReader reader, TableDefinitionCollection tableDefinitions, bool suppressVersionCheck)
150 - {
151 - if (!reader.LocalName.Equals("wixLibrary"))
152 - {
153 - throw new XmlException();
154 - }
155 -
156 - bool empty = reader.IsEmptyElement;
157 - Library library = new Library();
158 - Version version = null;
159 -
160 - while (reader.MoveToNextAttribute())
161 - {
162 - switch (reader.LocalName)
163 - {
164 - case "version":
165 - version = new Version(reader.Value);
166 - break;
167 - case "id":
168 - library.id = reader.Value;
169 - break;
170 - }
171 - }
172 -
173 - if (!suppressVersionCheck && null != version && !Library.CurrentVersion.Equals(version))
174 - {
175 - throw new WixException(WixDataErrors.VersionMismatch(SourceLineNumber.CreateFromUri(reader.BaseURI), "library", version.ToString(), Library.CurrentVersion.ToString()));
176 - }
177 -
178 - if (!empty)
179 - {
180 - bool done = false;
181 -
182 - while (!done && (XmlNodeType.Element == reader.NodeType || reader.Read()))
183 - {
184 - switch (reader.NodeType)
185 - {
186 - case XmlNodeType.Element:
187 - switch (reader.LocalName)
188 - {
189 - case "localization":
190 - Localization localization = Localization.Read(reader);
191 - library.localizations.Add(localization.Culture, localization);
192 - break;
193 - case "section":
194 - Section section = Section.Read(reader, tableDefinitions);
195 - section.LibraryId = library.id;
196 - library.sections.Add(section);
197 - break;
198 - default:
199 - throw new XmlException();
200 - }
201 - break;
202 - case XmlNodeType.EndElement:
203 - done = true;
204 - break;
205 - }
206 - }
207 -
208 - if (!done)
209 - {
210 - throw new XmlException();
211 - }
212 - }
213 -
214 - return library;
215 - }
216 -
217 - /// <summary>
218 - /// Persists a library in an XML format.
219 - /// </summary>
220 - /// <param name="writer">XmlWriter where the library should persist itself as XML.</param>
221 - private void Write(XmlWriter writer)
222 - {
223 - writer.WriteStartElement("wixLibrary", XmlNamespaceUri);
224 -
225 - writer.WriteAttributeString("version", CurrentVersion.ToString());
226 -
227 - writer.WriteAttributeString("id", this.id);
228 -
229 - foreach (Localization localization in this.localizations.Values)
230 - {
231 - localization.Write(writer);
232 - }
233 -
234 - foreach (Section section in this.sections)
235 - {
236 - section.Write(writer);
237 - }
238 -
239 - writer.WriteEndElement();
240 - }
241 -#endif
242 - }
243 -}
src/WixToolset.Data/WarningMessages.cs
+1 -1
@@ -589,7 +589,7 @@ namespace WixToolset.Data
589
590 public static Message DefiningWellKnownDirectoryDeprecated(SourceLineNumber sourceLineNumbers, string directoryId)
591 {
592 - return Message(null, Ids.DefiningWellKnownDirectoryDeprecated, "It is no longer necessary to define Directory with Id '{0}'. One will be provided automatically. Remove the Directory element.", directoryId);
592 + return Message(sourceLineNumbers, Ids.DefiningWellKnownDirectoryDeprecated, "It is no longer necessary to define Directory with Id '{0}'. One will be provided automatically. Remove the Directory element.", directoryId);
593 }
594
595 public static Message TooManyProgIds(SourceLineNumber sourceLineNumbers, string clsId, string progId, string otherClsId)