From 734be59ad7edaa1444f713338fcdbc0c4b9c273b Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 23 Mar 2021 01:24:54 -0700 Subject: Minor code clean up --- .../Bind/GenerateManifestDataFromIRCommand.cs | 4 +- .../Bundles/OrderSearchesCommand.cs | 56 ++++++++++++---------- .../Bundles/ProcessPayloadsCommand.cs | 6 +-- src/WixToolset.Core/Link/ConnectToFeature.cs | 10 ---- src/WixToolset.Core/Linker.cs | 45 ----------------- 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 internal class GenerateManifestDataFromIRCommand { - public GenerateManifestDataFromIRCommand(IMessaging messaging, IntermediateSection section, IEnumerable backendExtensions, IBurnBackendHelper backendHelper, IDictionary> extensionSearchSymbolsById) + public GenerateManifestDataFromIRCommand(IMessaging messaging, IntermediateSection section, IEnumerable backendExtensions, IBurnBackendHelper backendHelper, IDictionary> extensionSearchSymbolsById) { this.Messaging = messaging; this.Section = section; @@ -29,7 +29,7 @@ namespace WixToolset.Core.Burn.Bind private IBurnBackendHelper BackendHelper { get; } - private IDictionary> ExtensionSearchSymbolsById { get; } + private IDictionary> ExtensionSearchSymbolsById { get; } private IMessaging Messaging { get; } 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 private IntermediateSection Section { get; } - public IDictionary> ExtensionSearchSymbolsByExtensionId { get; private set; } + public IDictionary> ExtensionSearchSymbolsByExtensionId { get; private set; } - public IList OrderedSearchFacades { get; private set; } + public IEnumerable OrderedSearchFacades { get; private set; } public void Execute() { - this.ExtensionSearchSymbolsByExtensionId = new Dictionary>(); - this.OrderedSearchFacades = new List(); + this.ExtensionSearchSymbolsByExtensionId = new Dictionary>(); + this.OrderedSearchFacades = Array.Empty(); - var searchRelationSymbols = this.Section.Symbols.OfType().ToList(); - var searchSymbols = this.Section.Symbols.OfType().ToList(); + var searchSymbols = this.Section.Symbols.OfType().ToDictionary(t => t.Id.Id); if (searchSymbols.Count == 0) { - // nothing to do! + // Nothing to do! return; } - var symbolDictionary = searchSymbols.ToDictionary(t => t.Id.Id); - var constraints = new Constraints(); - if (searchRelationSymbols.Count > 0) + + // Add relational info to our data... + foreach (var searchRelationSymbol in this.Section.Symbols.OfType()) { - // add relational info to our data... - foreach (var searchRelationSymbol in searchRelationSymbols) - { - constraints.AddConstraint(searchRelationSymbol.Id.Id, searchRelationSymbol.ParentSearchRef); - } + constraints.AddConstraint(searchRelationSymbol.Id.Id, searchRelationSymbol.ParentSearchRef); } this.FindCircularReference(constraints); @@ -67,10 +62,13 @@ namespace WixToolset.Core.Burn.Bundles // lexicographically at each step to ensure a deterministic ordering // based on 'after' dependencies and ID. var sorter = new TopologicalSort(); - var sortedIds = sorter.Sort(symbolDictionary.Keys, constraints); + var sortedIds = sorter.Sort(searchSymbols.Keys, constraints); // Now, create the search facades with the searches in order... - this.OrderSearches(sortedIds, symbolDictionary); + (var orderedSearchFacades, var extensionSearchSymbolsByExtensionId) = this.OrderSearches(sortedIds, searchSymbols); + + this.OrderedSearchFacades = orderedSearchFacades; + this.ExtensionSearchSymbolsByExtensionId = extensionSearchSymbolsByExtensionId; } /// @@ -102,11 +100,11 @@ namespace WixToolset.Core.Burn.Bundles /// This is not particularly performant, but it works. private void FindCircularReference(Constraints constraints) { - foreach (string id in constraints.Keys) + foreach (var id in constraints.Keys) { var seenIds = new List(); - string chain = null; - if (this.FindCircularReference(constraints, id, id, seenIds, out chain)) + + if (this.FindCircularReference(constraints, id, id, seenIds, out var chain)) { // We will show a separate message for every ID that's in // the loop. We could bail after the first one, but then @@ -313,8 +311,11 @@ namespace WixToolset.Core.Burn.Bundles } } - private void OrderSearches(List sortedIds, Dictionary searchSymbolDictionary) + private (IEnumerable, Dictionary>) OrderSearches(IEnumerable sortedIds, Dictionary searchSymbolDictionary) { + var orderedSearchFacades = new List(); + var extensionSearchSymbolsByExtensionId = new Dictionary>(); + // TODO: Although the WixSearch tables are defined in the Util extension, // the Bundle Binder has to know all about them. We hope to revisit all // of this in the 4.0 timeframe. @@ -334,22 +335,23 @@ namespace WixToolset.Core.Burn.Bundles foreach (var searchId in sortedIds) { var searchSymbol = searchSymbolDictionary[searchId]; + if (legacySearchesById.TryGetValue(searchId, out var specificSearchSymbol)) { - this.OrderedSearchFacades.Add(new LegacySearchFacade(searchSymbol, specificSearchSymbol)); + orderedSearchFacades.Add(new LegacySearchFacade(searchSymbol, specificSearchSymbol)); } else if (setVariablesById.TryGetValue(searchId, out var setVariableSymbol)) { - this.OrderedSearchFacades.Add(new SetVariableSearchFacade(searchSymbol, setVariableSymbol)); + orderedSearchFacades.Add(new SetVariableSearchFacade(searchSymbol, setVariableSymbol)); } else if (extensionSearchesById.TryGetValue(searchId, out var extensionSearchSymbol)) { - this.OrderedSearchFacades.Add(new ExtensionSearchFacade(searchSymbol)); + orderedSearchFacades.Add(new ExtensionSearchFacade(searchSymbol)); - if (!this.ExtensionSearchSymbolsByExtensionId.TryGetValue(searchSymbol.BundleExtensionRef, out var extensionSearchSymbols)) + if (!extensionSearchSymbolsByExtensionId.TryGetValue(searchSymbol.BundleExtensionRef, out var extensionSearchSymbols)) { extensionSearchSymbols = new List(); - this.ExtensionSearchSymbolsByExtensionId[searchSymbol.BundleExtensionRef] = extensionSearchSymbols; + extensionSearchSymbolsByExtensionId[searchSymbol.BundleExtensionRef] = extensionSearchSymbols; } extensionSearchSymbols.Add(extensionSearchSymbol); } @@ -358,6 +360,8 @@ namespace WixToolset.Core.Burn.Bundles this.Messaging.Write(ErrorMessages.MissingBundleSearch(searchSymbol.SourceLineNumbers, searchId)); } } + + return (orderedSearchFacades, extensionSearchSymbolsByExtensionId.ToDictionary(kvp => kvp.Key, kvp => (IEnumerable)kvp.Value)); } } } 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 internal class ProcessPayloadsCommand { - public ProcessPayloadsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper, IPayloadHarvester payloadHarvester, IEnumerable payloads, PackagingType defaultPackaging, string layoutDirectory) + public ProcessPayloadsCommand(IBackendHelper backendHelper, IPayloadHarvester payloadHarvester, IEnumerable payloads, PackagingType defaultPackaging, string layoutDirectory) { - this.Messaging = serviceProvider.GetService(); - this.BackendHelper = backendHelper; this.PayloadHarvester = payloadHarvester; this.Payloads = payloads; @@ -30,8 +28,6 @@ namespace WixToolset.Core.Burn.Bundles public IEnumerable TrackedFiles { get; private set; } - private IMessaging Messaging { get; } - private IBackendHelper BackendHelper { get; } 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 @@ -10,16 +10,6 @@ namespace WixToolset.Core.Link /// internal class ConnectToFeature { - /// - /// Creates a new connect to feature. - /// - /// Section this connect belongs to. - /// Id of the child. - public ConnectToFeature(IntermediateSection section, string childId) : - this(section, childId, null, false) - { - } - /// /// Creates a new connect to feature. /// 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 } } -#if DEAD_CODE - /// - /// Copies a table's rows to an output table. - /// - /// Source table to copy rows from. - /// Destination table in output to copy rows into. - /// Id of the section that the table lives in. - private void CopyTableRowsToOutputTable(Table table, Table outputTable, string sectionId) - { - int[] localizedColumns = new int[table.Definition.Columns.Count]; - int localizedColumnCount = 0; - - // if there are localization strings, figure out which columns can be localized in this table - if (null != this.Localizer) - { - for (int i = 0; i < table.Definition.Columns.Count; i++) - { - if (table.Definition.Columns[i].IsLocalizable) - { - localizedColumns[localizedColumnCount++] = i; - } - } - } - - // process each row in the table doing the string resource substitutions - // then add the row to the output - foreach (Row row in table.Rows) - { - for (int j = 0; j < localizedColumnCount; j++) - { - Field field = row.Fields[localizedColumns[j]]; - - if (null != field.Data) - { - field.Data = this.WixVariableResolver.ResolveVariables(row.SourceLineNumbers, (string)field.Data, true); - } - } - - row.SectionId = (this.sectionIdOnRows ? sectionId : null); - outputTable.Rows.Add(row); - } - } -#endif - - /// /// Resolve features for columns that have null guid placeholders. /// -- cgit v1.2.3-55-g6feb