diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-03-14 07:38:48 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-03-14 07:47:48 -0700 |
| commit | 3ccd5e439da4296d6f2b66ce47075ab20d039676 (patch) | |
| tree | b5546552613b869367d09f444492a0bbcfadcfe0 /src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs | |
| parent | 574785ab1421c9b67336c13ade5c2263e665ca07 (diff) | |
| download | wix-3ccd5e439da4296d6f2b66ce47075ab20d039676.tar.gz wix-3ccd5e439da4296d6f2b66ce47075ab20d039676.tar.bz2 wix-3ccd5e439da4296d6f2b66ce47075ab20d039676.zip | |
Minimize public surface area of Core
Fixes wixtoolset/issues#6374
Diffstat (limited to 'src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs')
| -rw-r--r-- | src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs b/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs index 14b6d011..0afcc2b3 100644 --- a/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs +++ b/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs | |||
| @@ -10,19 +10,18 @@ namespace WixToolset.Core.Bind | |||
| 10 | using WixToolset.Extensibility.Data; | 10 | using WixToolset.Extensibility.Data; |
| 11 | using WixToolset.Extensibility.Services; | 11 | using WixToolset.Extensibility.Services; |
| 12 | 12 | ||
| 13 | #pragma warning disable 1591 // TODO: this shouldn't be public, need interface in Extensibility | ||
| 14 | /// <summary> | 13 | /// <summary> |
| 15 | /// Resolves the fields which had variables that needed to be resolved after the file information | 14 | /// Resolves the fields which had variables that needed to be resolved after the file information |
| 16 | /// was loaded. | 15 | /// was loaded. |
| 17 | /// </summary> | 16 | /// </summary> |
| 18 | public class ResolveDelayedFieldsCommand | 17 | internal class ResolveDelayedFieldsCommand |
| 19 | { | 18 | { |
| 20 | /// <summary> | 19 | /// <summary> |
| 21 | /// Resolve delayed fields. | 20 | /// Resolve delayed fields. |
| 22 | /// </summary> | 21 | /// </summary> |
| 23 | /// <param name="messaging"></param> | 22 | /// <param name="messaging"></param> |
| 24 | /// <param name="delayedFields">The fields which had resolution delayed.</param> | 23 | /// <param name="delayedFields">The fields which had resolution delayed.</param> |
| 25 | /// <param name="variableCache">The file information to use when resolving variables.</param> | 24 | /// <param name="variableCache">The cached variable values used when resolving delayed fields.</param> |
| 26 | public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache) | 25 | public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache) |
| 27 | { | 26 | { |
| 28 | this.Messaging = messaging; | 27 | this.Messaging = messaging; |
| @@ -49,7 +48,7 @@ namespace WixToolset.Core.Bind | |||
| 49 | // process properties first in case they refer to other binder variables | 48 | // process properties first in case they refer to other binder variables |
| 50 | if (delayedField.Symbol.Definition.Type == SymbolDefinitionType.Property) | 49 | if (delayedField.Symbol.Definition.Type == SymbolDefinitionType.Property) |
| 51 | { | 50 | { |
| 52 | var value = ResolveDelayedVariables(propertySymbol.SourceLineNumbers, delayedField.Field.AsString(), this.VariableCache); | 51 | var value = this.ResolveDelayedVariables(propertySymbol.SourceLineNumbers, delayedField.Field.AsString()); |
| 53 | 52 | ||
| 54 | // update the variable cache with the new value | 53 | // update the variable cache with the new value |
| 55 | var key = String.Concat("property.", propertySymbol.Id.Id); | 54 | var key = String.Concat("property.", propertySymbol.Id.Id); |
| @@ -72,7 +71,7 @@ namespace WixToolset.Core.Bind | |||
| 72 | 71 | ||
| 73 | // add specialization for ProductVersion fields | 72 | // add specialization for ProductVersion fields |
| 74 | var keyProductVersion = "property.ProductVersion"; | 73 | var keyProductVersion = "property.ProductVersion"; |
| 75 | if (this.VariableCache.TryGetValue(keyProductVersion, out var versionValue) && Version.TryParse(versionValue, out Version productVersion)) | 74 | if (this.VariableCache.TryGetValue(keyProductVersion, out var versionValue) && Version.TryParse(versionValue, out var productVersion)) |
| 76 | { | 75 | { |
| 77 | // Don't add the variable if it already exists (developer defined a property with the same name). | 76 | // Don't add the variable if it already exists (developer defined a property with the same name). |
| 78 | var fieldKey = String.Concat(keyProductVersion, ".Major"); | 77 | var fieldKey = String.Concat(keyProductVersion, ".Major"); |
| @@ -105,7 +104,7 @@ namespace WixToolset.Core.Bind | |||
| 105 | { | 104 | { |
| 106 | try | 105 | try |
| 107 | { | 106 | { |
| 108 | var value = ResolveDelayedVariables(delayedField.Symbol.SourceLineNumbers, delayedField.Field.AsString(), this.VariableCache); | 107 | var value = this.ResolveDelayedVariables(delayedField.Symbol.SourceLineNumbers, delayedField.Field.AsString()); |
| 109 | delayedField.Field.Set(value); | 108 | delayedField.Field.Set(value); |
| 110 | } | 109 | } |
| 111 | catch (WixException we) | 110 | catch (WixException we) |
| @@ -115,7 +114,7 @@ namespace WixToolset.Core.Bind | |||
| 115 | } | 114 | } |
| 116 | } | 115 | } |
| 117 | 116 | ||
| 118 | private static string ResolveDelayedVariables(SourceLineNumber sourceLineNumbers, string value, IDictionary<string, string> resolutionData) | 117 | private string ResolveDelayedVariables(SourceLineNumber sourceLineNumbers, string value) |
| 119 | { | 118 | { |
| 120 | var start = 0; | 119 | var start = 0; |
| 121 | 120 | ||
| @@ -125,7 +124,7 @@ namespace WixToolset.Core.Bind | |||
| 125 | { | 124 | { |
| 126 | var key = String.Concat(parsed.Name, ".", parsed.Scope); | 125 | var key = String.Concat(parsed.Name, ".", parsed.Scope); |
| 127 | 126 | ||
| 128 | if (!resolutionData.TryGetValue(key, out var resolvedValue)) | 127 | if (!this.VariableCache.TryGetValue(key, out var resolvedValue)) |
| 129 | { | 128 | { |
| 130 | resolvedValue = parsed.DefaultValue; | 129 | resolvedValue = parsed.DefaultValue; |
| 131 | } | 130 | } |
| @@ -149,7 +148,7 @@ namespace WixToolset.Core.Bind | |||
| 149 | } | 148 | } |
| 150 | else | 149 | else |
| 151 | { | 150 | { |
| 152 | throw new WixException(ErrorMessages.UnresolvedBindReference(sourceLineNumbers, value)); | 151 | this.Messaging.Write(ErrorMessages.UnresolvedBindReference(sourceLineNumbers, value)); |
| 153 | } | 152 | } |
| 154 | } | 153 | } |
| 155 | else | 154 | else |
