Handle null path fields during Resolve
Also rename more "row" to "tuple"
Rob Mensching committed
May 24, 2019 at 08:49 UTC
9170d12eed6fbb0af88963f71fdc661bdcecfd58
1 file changed
+15
-15
src/WixToolset.Core/Bind/ResolveFieldsCommand.cs
+15
-15
@@ -36,17 +36,17 @@ namespace WixToolset.Core.Bind
36
37
public void Execute()
38
{
39
- List<DelayedField> delayedFields = this.SupportDelayedResolution ? new List<DelayedField>() : null;
39
+ var delayedFields = this.SupportDelayedResolution ? new List<DelayedField>() : null;
40
41
var fileResolver = new FileResolver(this.BindPaths, this.Extensions);
42
43
foreach (var sections in this.Intermediate.Sections)
44
{
45
- foreach (var row in sections.Tuples)
45
+ foreach (var tuple in sections.Tuples)
46
{
47
- foreach (var field in row.Fields)
47
+ foreach (var field in tuple.Fields)
48
{
49
- if (field == null)
49
+ if (field.IsNull())
50
{
51
continue;
52
}
@@ -62,7 +62,7 @@ namespace WixToolset.Core.Bind
62
var original = field.AsString();
63
if (!String.IsNullOrEmpty(original))
64
{
65
- var resolution = this.VariableResolver.ResolveVariables(row.SourceLineNumbers, original, false);
65
+ var resolution = this.VariableResolver.ResolveVariables(tuple.SourceLineNumbers, original, false);
66
if (resolution.UpdatedValue)
67
{
68
field.Set(resolution.Value);
@@ -70,7 +70,7 @@ namespace WixToolset.Core.Bind
70
71
if (resolution.DelayedResolve)
72
{
73
- delayedFields.Add(new DelayedField(row, field));
73
+ delayedFields.Add(new DelayedField(tuple, field));
74
}
75
76
isDefault = resolution.IsDefault;
@@ -78,7 +78,7 @@ namespace WixToolset.Core.Bind
78
}
79
}
80
81
- // Move to next row if we've hit an error resolving variables.
81
+ // Move to next tuple if we've hit an error resolving variables.
82
if (this.Messaging.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
83
{
84
continue;
@@ -91,7 +91,7 @@ namespace WixToolset.Core.Bind
91
92
#if REVISIT_FOR_PATCHING
93
// Skip file resolution if the file is to be deleted.
94
- if (RowOperation.Delete == row.Operation)
94
+ if (RowOperation.Delete == tuple.Operation)
95
{
96
continue;
97
}
@@ -120,13 +120,13 @@ namespace WixToolset.Core.Bind
120
#endif
121
122
// resolve the path to the file
123
- var value = fileResolver.ResolveFile(objectField.Path, row.Definition, row.SourceLineNumbers, BindStage.Normal);
123
+ var value = fileResolver.ResolveFile(objectField.Path, tuple.Definition, tuple.SourceLineNumbers, BindStage.Normal);
124
field.Set(value);
125
}
126
else if (!fileResolver.RebaseTarget && !fileResolver.RebaseUpdated) // Normal binding for Patch Scenario (normal patch, no re-basing logic)
127
{
128
// resolve the path to the file
129
- var value = fileResolver.ResolveFile(objectField.Path, row.Definition, row.SourceLineNumbers, BindStage.Normal);
129
+ var value = fileResolver.ResolveFile(objectField.Path, tuple.Definition, tuple.SourceLineNumbers, BindStage.Normal);
130
field.Set(value);
131
}
132
#if REVISIT_FOR_PATCHING
@@ -148,7 +148,7 @@ namespace WixToolset.Core.Bind
148
}
149
}
150
151
- objectField.Data = fileResolver.ResolveFile(filePathToResolve, row.Definition.Name, row.SourceLineNumbers, BindStage.Updated);
151
+ objectField.Data = fileResolver.ResolveFile(filePathToResolve, tuple.Definition.Name, tuple.SourceLineNumbers, BindStage.Updated);
152
}
153
#endif
154
}
@@ -161,7 +161,7 @@ namespace WixToolset.Core.Bind
161
#if REVISIT_FOR_PATCHING
162
if (null != objectField.PreviousData)
163
{
164
- objectField.PreviousData = this.BindVariableResolver.ResolveVariables(row.SourceLineNumbers, objectField.PreviousData, false, out isDefault);
164
+ objectField.PreviousData = this.BindVariableResolver.ResolveVariables(tuple.SourceLineNumbers, objectField.PreviousData, false, out isDefault);
165
166
if (!Messaging.Instance.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
167
{
@@ -186,7 +186,7 @@ namespace WixToolset.Core.Bind
186
if (!fileResolver.RebaseTarget && !fileResolver.RebaseUpdated)
187
{
188
// resolve the path to the file
189
- objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, row.Definition.Name, row.SourceLineNumbers, BindStage.Normal);
189
+ objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, tuple.Definition.Name, tuple.SourceLineNumbers, BindStage.Normal);
190
}
191
else
192
{
@@ -204,14 +204,14 @@ namespace WixToolset.Core.Bind
204
}
205
206
// resolve the path to the file
207
- objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, row.Definition.Name, row.SourceLineNumbers, BindStage.Target);
207
+ objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, tuple.Definition.Name, tuple.SourceLineNumbers, BindStage.Target);
208
209
}
210
}
211
catch (WixFileNotFoundException)
212
{
213
// display the error with source line information
214
- Messaging.Instance.Write(WixErrors.FileNotFound(row.SourceLineNumbers, (string)objectField.PreviousData));
214
+ Messaging.Instance.Write(WixErrors.FileNotFound(tuple.SourceLineNumbers, (string)objectField.PreviousData));
215
}
216
}
217
}