aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-03-23 01:24:54 -0700
committerRob Mensching <rob@firegiant.com>2021-03-23 01:30:11 -0700
commit734be59ad7edaa1444f713338fcdbc0c4b9c273b (patch)
tree1b9c6aa693f861abddee82e944758b16a5552901 /src
parent977b748b499e02f7e5226416b1cf5cfcf3842129 (diff)
downloadwix-734be59ad7edaa1444f713338fcdbc0c4b9c273b.tar.gz
wix-734be59ad7edaa1444f713338fcdbc0c4b9c273b.tar.bz2
wix-734be59ad7edaa1444f713338fcdbc0c4b9c273b.zip
Minor code clean up
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs4
-rw-r--r--src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs56
-rw-r--r--src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs6
-rw-r--r--src/WixToolset.Core/Link/ConnectToFeature.cs10
-rw-r--r--src/WixToolset.Core/Linker.cs45
5 files changed, 33 insertions, 88 deletions
diff --git a/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs b/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
index d4a69513..a76f84ec 100644
--- a/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
+++ b/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
@@ -16,7 +16,7 @@ namespace WixToolset.Core.Burn.Bind
16 16
17 internal class GenerateManifestDataFromIRCommand 17 internal class GenerateManifestDataFromIRCommand
18 { 18 {
19 public GenerateManifestDataFromIRCommand(IMessaging messaging, IntermediateSection section, IEnumerable<IBurnBackendBinderExtension> backendExtensions, IBurnBackendHelper backendHelper, IDictionary<string, IList<IntermediateSymbol>> extensionSearchSymbolsById) 19 public GenerateManifestDataFromIRCommand(IMessaging messaging, IntermediateSection section, IEnumerable<IBurnBackendBinderExtension> backendExtensions, IBurnBackendHelper backendHelper, IDictionary<string, IEnumerable<IntermediateSymbol>> extensionSearchSymbolsById)
20 { 20 {
21 this.Messaging = messaging; 21 this.Messaging = messaging;
22 this.Section = section; 22 this.Section = section;
@@ -29,7 +29,7 @@ namespace WixToolset.Core.Burn.Bind
29 29
30 private IBurnBackendHelper BackendHelper { get; } 30 private IBurnBackendHelper BackendHelper { get; }
31 31
32 private IDictionary<string, IList<IntermediateSymbol>> ExtensionSearchSymbolsById { get; } 32 private IDictionary<string, IEnumerable<IntermediateSymbol>> ExtensionSearchSymbolsById { get; }
33 33
34 private IMessaging Messaging { get; } 34 private IMessaging Messaging { get; }
35 35
diff --git a/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs b/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs
index dcb4733e..f3afd64e 100644
--- a/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs
@@ -23,33 +23,28 @@ namespace WixToolset.Core.Burn.Bundles
23 23
24 private IntermediateSection Section { get; } 24 private IntermediateSection Section { get; }
25 25
26 public IDictionary<string, IList<IntermediateSymbol>> ExtensionSearchSymbolsByExtensionId { get; private set; } 26 public IDictionary<string, IEnumerable<IntermediateSymbol>> ExtensionSearchSymbolsByExtensionId { get; private set; }
27 27
28 public IList<ISearchFacade> OrderedSearchFacades { get; private set; } 28 public IEnumerable<ISearchFacade> OrderedSearchFacades { get; private set; }
29 29
30 public void Execute() 30 public void Execute()
31 { 31 {
32 this.ExtensionSearchSymbolsByExtensionId = new Dictionary<string, IList<IntermediateSymbol>>(); 32 this.ExtensionSearchSymbolsByExtensionId = new Dictionary<string, IEnumerable<IntermediateSymbol>>();
33 this.OrderedSearchFacades = new List<ISearchFacade>(); 33 this.OrderedSearchFacades = Array.Empty<ISearchFacade>();
34 34
35 var searchRelationSymbols = this.Section.Symbols.OfType<WixSearchRelationSymbol>().ToList(); 35 var searchSymbols = this.Section.Symbols.OfType<WixSearchSymbol>().ToDictionary(t => t.Id.Id);
36 var searchSymbols = this.Section.Symbols.OfType<WixSearchSymbol>().ToList();
37 if (searchSymbols.Count == 0) 36 if (searchSymbols.Count == 0)
38 { 37 {
39 // nothing to do! 38 // Nothing to do!
40 return; 39 return;
41 } 40 }
42 41
43 var symbolDictionary = searchSymbols.ToDictionary(t => t.Id.Id);
44
45 var constraints = new Constraints(); 42 var constraints = new Constraints();
46 if (searchRelationSymbols.Count > 0) 43
44 // Add relational info to our data...
45 foreach (var searchRelationSymbol in this.Section.Symbols.OfType<WixSearchRelationSymbol>())
47 { 46 {
48 // add relational info to our data... 47 constraints.AddConstraint(searchRelationSymbol.Id.Id, searchRelationSymbol.ParentSearchRef);
49 foreach (var searchRelationSymbol in searchRelationSymbols)
50 {
51 constraints.AddConstraint(searchRelationSymbol.Id.Id, searchRelationSymbol.ParentSearchRef);
52 }
53 } 48 }
54 49
55 this.FindCircularReference(constraints); 50 this.FindCircularReference(constraints);
@@ -67,10 +62,13 @@ namespace WixToolset.Core.Burn.Bundles
67 // lexicographically at each step to ensure a deterministic ordering 62 // lexicographically at each step to ensure a deterministic ordering
68 // based on 'after' dependencies and ID. 63 // based on 'after' dependencies and ID.
69 var sorter = new TopologicalSort(); 64 var sorter = new TopologicalSort();
70 var sortedIds = sorter.Sort(symbolDictionary.Keys, constraints); 65 var sortedIds = sorter.Sort(searchSymbols.Keys, constraints);
71 66
72 // Now, create the search facades with the searches in order... 67 // Now, create the search facades with the searches in order...
73 this.OrderSearches(sortedIds, symbolDictionary); 68 (var orderedSearchFacades, var extensionSearchSymbolsByExtensionId) = this.OrderSearches(sortedIds, searchSymbols);
69
70 this.OrderedSearchFacades = orderedSearchFacades;
71 this.ExtensionSearchSymbolsByExtensionId = extensionSearchSymbolsByExtensionId;
74 } 72 }
75 73
76 /// <summary> 74 /// <summary>
@@ -102,11 +100,11 @@ namespace WixToolset.Core.Burn.Bundles
102 /// <remarks>This is not particularly performant, but it works.</remarks> 100 /// <remarks>This is not particularly performant, but it works.</remarks>
103 private void FindCircularReference(Constraints constraints) 101 private void FindCircularReference(Constraints constraints)
104 { 102 {
105 foreach (string id in constraints.Keys) 103 foreach (var id in constraints.Keys)
106 { 104 {
107 var seenIds = new List<string>(); 105 var seenIds = new List<string>();
108 string chain = null; 106
109 if (this.FindCircularReference(constraints, id, id, seenIds, out chain)) 107 if (this.FindCircularReference(constraints, id, id, seenIds, out var chain))
110 { 108 {
111 // We will show a separate message for every ID that's in 109 // We will show a separate message for every ID that's in
112 // the loop. We could bail after the first one, but then 110 // the loop. We could bail after the first one, but then
@@ -313,8 +311,11 @@ namespace WixToolset.Core.Burn.Bundles
313 } 311 }
314 } 312 }
315 313
316 private void OrderSearches(List<string> sortedIds, Dictionary<string, WixSearchSymbol> searchSymbolDictionary) 314 private (IEnumerable<ISearchFacade>, Dictionary<string, IEnumerable<IntermediateSymbol>>) OrderSearches(IEnumerable<string> sortedIds, Dictionary<string, WixSearchSymbol> searchSymbolDictionary)
317 { 315 {
316 var orderedSearchFacades = new List<ISearchFacade>();
317 var extensionSearchSymbolsByExtensionId = new Dictionary<string, List<IntermediateSymbol>>();
318
318 // TODO: Although the WixSearch tables are defined in the Util extension, 319 // TODO: Although the WixSearch tables are defined in the Util extension,
319 // the Bundle Binder has to know all about them. We hope to revisit all 320 // the Bundle Binder has to know all about them. We hope to revisit all
320 // of this in the 4.0 timeframe. 321 // of this in the 4.0 timeframe.
@@ -334,22 +335,23 @@ namespace WixToolset.Core.Burn.Bundles
334 foreach (var searchId in sortedIds) 335 foreach (var searchId in sortedIds)
335 { 336 {
336 var searchSymbol = searchSymbolDictionary[searchId]; 337 var searchSymbol = searchSymbolDictionary[searchId];
338
337 if (legacySearchesById.TryGetValue(searchId, out var specificSearchSymbol)) 339 if (legacySearchesById.TryGetValue(searchId, out var specificSearchSymbol))
338 { 340 {
339 this.OrderedSearchFacades.Add(new LegacySearchFacade(searchSymbol, specificSearchSymbol)); 341 orderedSearchFacades.Add(new LegacySearchFacade(searchSymbol, specificSearchSymbol));
340 } 342 }
341 else if (setVariablesById.TryGetValue(searchId, out var setVariableSymbol)) 343 else if (setVariablesById.TryGetValue(searchId, out var setVariableSymbol))
342 { 344 {
343 this.OrderedSearchFacades.Add(new SetVariableSearchFacade(searchSymbol, setVariableSymbol)); 345 orderedSearchFacades.Add(new SetVariableSearchFacade(searchSymbol, setVariableSymbol));
344 } 346 }
345 else if (extensionSearchesById.TryGetValue(searchId, out var extensionSearchSymbol)) 347 else if (extensionSearchesById.TryGetValue(searchId, out var extensionSearchSymbol))
346 { 348 {
347 this.OrderedSearchFacades.Add(new ExtensionSearchFacade(searchSymbol)); 349 orderedSearchFacades.Add(new ExtensionSearchFacade(searchSymbol));
348 350
349 if (!this.ExtensionSearchSymbolsByExtensionId.TryGetValue(searchSymbol.BundleExtensionRef, out var extensionSearchSymbols)) 351 if (!extensionSearchSymbolsByExtensionId.TryGetValue(searchSymbol.BundleExtensionRef, out var extensionSearchSymbols))
350 { 352 {
351 extensionSearchSymbols = new List<IntermediateSymbol>(); 353 extensionSearchSymbols = new List<IntermediateSymbol>();
352 this.ExtensionSearchSymbolsByExtensionId[searchSymbol.BundleExtensionRef] = extensionSearchSymbols; 354 extensionSearchSymbolsByExtensionId[searchSymbol.BundleExtensionRef] = extensionSearchSymbols;
353 } 355 }
354 extensionSearchSymbols.Add(extensionSearchSymbol); 356 extensionSearchSymbols.Add(extensionSearchSymbol);
355 } 357 }
@@ -358,6 +360,8 @@ namespace WixToolset.Core.Burn.Bundles
358 this.Messaging.Write(ErrorMessages.MissingBundleSearch(searchSymbol.SourceLineNumbers, searchId)); 360 this.Messaging.Write(ErrorMessages.MissingBundleSearch(searchSymbol.SourceLineNumbers, searchId));
359 } 361 }
360 } 362 }
363
364 return (orderedSearchFacades, extensionSearchSymbolsByExtensionId.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable<IntermediateSymbol>)kvp.Value));
361 } 365 }
362 } 366 }
363} 367}
diff --git a/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs b/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
index adbb41b1..fa70251a 100644
--- a/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
@@ -15,10 +15,8 @@ namespace WixToolset.Core.Burn.Bundles
15 15
16 internal class ProcessPayloadsCommand 16 internal class ProcessPayloadsCommand
17 { 17 {
18 public ProcessPayloadsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper, IPayloadHarvester payloadHarvester, IEnumerable<WixBundlePayloadSymbol> payloads, PackagingType defaultPackaging, string layoutDirectory) 18 public ProcessPayloadsCommand(IBackendHelper backendHelper, IPayloadHarvester payloadHarvester, IEnumerable<WixBundlePayloadSymbol> payloads, PackagingType defaultPackaging, string layoutDirectory)
19 { 19 {
20 this.Messaging = serviceProvider.GetService<IMessaging>();
21
22 this.BackendHelper = backendHelper; 20 this.BackendHelper = backendHelper;
23 this.PayloadHarvester = payloadHarvester; 21 this.PayloadHarvester = payloadHarvester;
24 this.Payloads = payloads; 22 this.Payloads = payloads;
@@ -30,8 +28,6 @@ namespace WixToolset.Core.Burn.Bundles
30 28
31 public IEnumerable<ITrackedFile> TrackedFiles { get; private set; } 29 public IEnumerable<ITrackedFile> TrackedFiles { get; private set; }
32 30
33 private IMessaging Messaging { get; }
34
35 private IBackendHelper BackendHelper { get; } 31 private IBackendHelper BackendHelper { get; }
36 32
37 private IPayloadHarvester PayloadHarvester { get; } 33 private IPayloadHarvester PayloadHarvester { get; }
diff --git a/src/WixToolset.Core/Link/ConnectToFeature.cs b/src/WixToolset.Core/Link/ConnectToFeature.cs
index dd95f2db..e9a739a1 100644
--- a/src/WixToolset.Core/Link/ConnectToFeature.cs
+++ b/src/WixToolset.Core/Link/ConnectToFeature.cs
@@ -15,16 +15,6 @@ namespace WixToolset.Core.Link
15 /// </summary> 15 /// </summary>
16 /// <param name="section">Section this connect belongs to.</param> 16 /// <param name="section">Section this connect belongs to.</param>
17 /// <param name="childId">Id of the child.</param> 17 /// <param name="childId">Id of the child.</param>
18 public ConnectToFeature(IntermediateSection section, string childId) :
19 this(section, childId, null, false)
20 {
21 }
22
23 /// <summary>
24 /// Creates a new connect to feature.
25 /// </summary>
26 /// <param name="section">Section this connect belongs to.</param>
27 /// <param name="childId">Id of the child.</param>
28 /// <param name="primaryFeature">Sets the primary feature for the connection.</param> 18 /// <param name="primaryFeature">Sets the primary feature for the connection.</param>
29 /// <param name="explicitPrimaryFeature">Sets if this is explicit primary.</param> 19 /// <param name="explicitPrimaryFeature">Sets if this is explicit primary.</param>
30 public ConnectToFeature(IntermediateSection section, string childId, string primaryFeature, bool explicitPrimaryFeature) 20 public ConnectToFeature(IntermediateSection section, string childId, string primaryFeature, bool explicitPrimaryFeature)
diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs
index d5c51f96..a6d43715 100644
--- a/src/WixToolset.Core/Linker.cs
+++ b/src/WixToolset.Core/Linker.cs
@@ -901,51 +901,6 @@ namespace WixToolset.Core
901 } 901 }
902 } 902 }
903 903
904#if DEAD_CODE
905 /// <summary>
906 /// Copies a table's rows to an output table.
907 /// </summary>
908 /// <param name="table">Source table to copy rows from.</param>
909 /// <param name="outputTable">Destination table in output to copy rows into.</param>
910 /// <param name="sectionId">Id of the section that the table lives in.</param>
911 private void CopyTableRowsToOutputTable(Table table, Table outputTable, string sectionId)
912 {
913 int[] localizedColumns = new int[table.Definition.Columns.Count];
914 int localizedColumnCount = 0;
915
916 // if there are localization strings, figure out which columns can be localized in this table
917 if (null != this.Localizer)
918 {
919 for (int i = 0; i < table.Definition.Columns.Count; i++)
920 {
921 if (table.Definition.Columns[i].IsLocalizable)
922 {
923 localizedColumns[localizedColumnCount++] = i;
924 }
925 }
926 }
927
928 // process each row in the table doing the string resource substitutions
929 // then add the row to the output
930 foreach (Row row in table.Rows)
931 {
932 for (int j = 0; j < localizedColumnCount; j++)
933 {
934 Field field = row.Fields[localizedColumns[j]];
935
936 if (null != field.Data)
937 {
938 field.Data = this.WixVariableResolver.ResolveVariables(row.SourceLineNumbers, (string)field.Data, true);
939 }
940 }
941
942 row.SectionId = (this.sectionIdOnRows ? sectionId : null);
943 outputTable.Rows.Add(row);
944 }
945 }
946#endif
947
948
949 /// <summary> 904 /// <summary>
950 /// Resolve features for columns that have null guid placeholders. 905 /// Resolve features for columns that have null guid placeholders.
951 /// </summary> 906 /// </summary>