diff options
Diffstat (limited to 'src/WixToolset.Core/Link/WixGroupingOrdering.cs')
-rw-r--r-- | src/WixToolset.Core/Link/WixGroupingOrdering.cs | 56 |
1 files changed, 17 insertions, 39 deletions
diff --git a/src/WixToolset.Core/Link/WixGroupingOrdering.cs b/src/WixToolset.Core/Link/WixGroupingOrdering.cs index f15ebc75..50c4d8d2 100644 --- a/src/WixToolset.Core/Link/WixGroupingOrdering.cs +++ b/src/WixToolset.Core/Link/WixGroupingOrdering.cs | |||
@@ -11,13 +11,14 @@ namespace WixToolset.Core.Link | |||
11 | using System.Text; | 11 | using System.Text; |
12 | using WixToolset.Data; | 12 | using WixToolset.Data; |
13 | using WixToolset.Data.Tuples; | 13 | using WixToolset.Data.Tuples; |
14 | using WixToolset.Extensibility.Services; | ||
14 | 15 | ||
15 | /// <summary> | 16 | /// <summary> |
16 | /// Grouping and Ordering class of the WiX toolset. | 17 | /// Grouping and Ordering class of the WiX toolset. |
17 | /// </summary> | 18 | /// </summary> |
18 | internal sealed class WixGroupingOrdering : IMessageHandler | 19 | internal sealed class WixGroupingOrdering |
19 | { | 20 | { |
20 | private IMessageHandler messageHandler; | 21 | private IMessaging messageHandler; |
21 | private List<string> groupTypes; | 22 | private List<string> groupTypes; |
22 | private List<string> itemTypes; | 23 | private List<string> itemTypes; |
23 | private ItemCollection items; | 24 | private ItemCollection items; |
@@ -32,7 +33,7 @@ namespace WixToolset.Core.Link | |||
32 | /// <param name="messageHandler">Handler for any error messages.</param> | 33 | /// <param name="messageHandler">Handler for any error messages.</param> |
33 | /// <param name="groupTypes">Group types to include.</param> | 34 | /// <param name="groupTypes">Group types to include.</param> |
34 | /// <param name="itemTypes">Item types to include.</param> | 35 | /// <param name="itemTypes">Item types to include.</param> |
35 | public WixGroupingOrdering(IntermediateSection entrySections, IMessageHandler messageHandler) | 36 | public WixGroupingOrdering(IntermediateSection entrySections, IMessaging messageHandler) |
36 | { | 37 | { |
37 | this.EntrySection = entrySections; | 38 | this.EntrySection = entrySections; |
38 | this.messageHandler = messageHandler; | 39 | this.messageHandler = messageHandler; |
@@ -59,29 +60,6 @@ namespace WixToolset.Core.Link | |||
59 | } | 60 | } |
60 | 61 | ||
61 | /// <summary> | 62 | /// <summary> |
62 | /// Sends a message to the message handler if there is one. | ||
63 | /// </summary> | ||
64 | /// <param name="mea">Message event arguments.</param> | ||
65 | public void OnMessage(MessageEventArgs e) | ||
66 | { | ||
67 | WixErrorEventArgs errorEventArgs = e as WixErrorEventArgs; | ||
68 | |||
69 | if (null != errorEventArgs || MessageLevel.Error == e.Level) | ||
70 | { | ||
71 | this.encounteredError = true; | ||
72 | } | ||
73 | |||
74 | if (null != this.messageHandler) | ||
75 | { | ||
76 | this.messageHandler.OnMessage(e); | ||
77 | } | ||
78 | else if (null != errorEventArgs) | ||
79 | { | ||
80 | throw new WixException(errorEventArgs); | ||
81 | } | ||
82 | } | ||
83 | |||
84 | /// <summary> | ||
85 | /// Finds all nested items under a parent group and creates new WixGroup data for them. | 63 | /// Finds all nested items under a parent group and creates new WixGroup data for them. |
86 | /// </summary> | 64 | /// </summary> |
87 | /// <param name="parentType">The group type for the parent group to flatten.</param> | 65 | /// <param name="parentType">The group type for the parent group to flatten.</param> |
@@ -156,7 +134,7 @@ namespace WixToolset.Core.Link | |||
156 | Item parentItem; | 134 | Item parentItem; |
157 | if (!this.items.TryGetValue(parentType, parentId, out parentItem)) | 135 | if (!this.items.TryGetValue(parentType, parentId, out parentItem)) |
158 | { | 136 | { |
159 | this.OnMessage(WixErrors.IdentifierNotFound(parentType, parentId)); | 137 | this.messageHandler.Write(ErrorMessages.IdentifierNotFound(parentType, parentId)); |
160 | return; | 138 | return; |
161 | } | 139 | } |
162 | 140 | ||
@@ -257,7 +235,7 @@ namespace WixToolset.Core.Link | |||
257 | //if (null == wixGroupTable || 0 == wixGroupTable.Rows.Count) | 235 | //if (null == wixGroupTable || 0 == wixGroupTable.Rows.Count) |
258 | //{ | 236 | //{ |
259 | // // TODO: Change message name to make it *not* Bundle specific? | 237 | // // TODO: Change message name to make it *not* Bundle specific? |
260 | // this.OnMessage(WixErrors.MissingBundleInformation("WixGroup")); | 238 | // this.Write(WixErrors.MissingBundleInformation("WixGroup")); |
261 | //} | 239 | //} |
262 | 240 | ||
263 | // Collect all of the groups | 241 | // Collect all of the groups |
@@ -326,7 +304,7 @@ namespace WixToolset.Core.Link | |||
326 | if (this.FindCircularGroupReference(item, item, itemsSeen, out circularReference)) | 304 | if (this.FindCircularGroupReference(item, item, itemsSeen, out circularReference)) |
327 | { | 305 | { |
328 | itemsInKnownLoops.Add(itemsSeen); | 306 | itemsInKnownLoops.Add(itemsSeen); |
329 | this.OnMessage(WixErrors.ReferenceLoopDetected(item.Row.SourceLineNumbers, circularReference)); | 307 | this.messageHandler.Write(ErrorMessages.ReferenceLoopDetected(item.Row.SourceLineNumbers, circularReference)); |
330 | } | 308 | } |
331 | } | 309 | } |
332 | } | 310 | } |
@@ -398,12 +376,12 @@ namespace WixToolset.Core.Link | |||
398 | 376 | ||
399 | if (!this.items.TryGetValue(rowItemType, rowItemName, out var item)) | 377 | if (!this.items.TryGetValue(rowItemType, rowItemName, out var item)) |
400 | { | 378 | { |
401 | this.OnMessage(WixErrors.IdentifierNotFound(rowItemType, rowItemName)); | 379 | this.messageHandler.Write(ErrorMessages.IdentifierNotFound(rowItemType, rowItemName)); |
402 | } | 380 | } |
403 | 381 | ||
404 | if (!this.items.TryGetValue(rowDependsOnType, rowDependsOnName, out var dependsOn)) | 382 | if (!this.items.TryGetValue(rowDependsOnType, rowDependsOnName, out var dependsOn)) |
405 | { | 383 | { |
406 | this.OnMessage(WixErrors.IdentifierNotFound(rowDependsOnType, rowDependsOnName)); | 384 | this.messageHandler.Write(ErrorMessages.IdentifierNotFound(rowDependsOnType, rowDependsOnName)); |
407 | } | 385 | } |
408 | 386 | ||
409 | if (null == item || null == dependsOn) | 387 | if (null == item || null == dependsOn) |
@@ -411,7 +389,7 @@ namespace WixToolset.Core.Link | |||
411 | continue; | 389 | continue; |
412 | } | 390 | } |
413 | 391 | ||
414 | item.AddAfter(dependsOn, this); | 392 | item.AddAfter(dependsOn, this.messageHandler); |
415 | } | 393 | } |
416 | } | 394 | } |
417 | 395 | ||
@@ -426,12 +404,12 @@ namespace WixToolset.Core.Link | |||
426 | // ordering. | 404 | // ordering. |
427 | foreach (Item item in this.items) | 405 | foreach (Item item in this.items) |
428 | { | 406 | { |
429 | item.PropagateAfterToChildItems(this); | 407 | item.PropagateAfterToChildItems(this.messageHandler); |
430 | } | 408 | } |
431 | 409 | ||
432 | foreach (Item item in this.items) | 410 | foreach (Item item in this.items) |
433 | { | 411 | { |
434 | item.FlattenAfters(this); | 412 | item.FlattenAfters(this.messageHandler); |
435 | } | 413 | } |
436 | } | 414 | } |
437 | 415 | ||
@@ -595,7 +573,7 @@ namespace WixToolset.Core.Link | |||
595 | /// </summary> | 573 | /// </summary> |
596 | /// <param name="items">List of items to add.</param> | 574 | /// <param name="items">List of items to add.</param> |
597 | /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> | 575 | /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> |
598 | public void AddAfter(ItemCollection items, IMessageHandler messageHandler) | 576 | public void AddAfter(ItemCollection items, IMessaging messageHandler) |
599 | { | 577 | { |
600 | foreach (Item item in items) | 578 | foreach (Item item in items) |
601 | { | 579 | { |
@@ -608,7 +586,7 @@ namespace WixToolset.Core.Link | |||
608 | /// </summary> | 586 | /// </summary> |
609 | /// <param name="item">Items to add.</param> | 587 | /// <param name="item">Items to add.</param> |
610 | /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> | 588 | /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> |
611 | public void AddAfter(Item after, IMessageHandler messageHandler) | 589 | public void AddAfter(Item after, IMessaging messageHandler) |
612 | { | 590 | { |
613 | if (this.beforeItems.Contains(after)) | 591 | if (this.beforeItems.Contains(after)) |
614 | { | 592 | { |
@@ -617,7 +595,7 @@ namespace WixToolset.Core.Link | |||
617 | // have lost some distinction between authored and propagated ordering. | 595 | // have lost some distinction between authored and propagated ordering. |
618 | string circularReference = String.Format(CultureInfo.InvariantCulture, "{0}:{1} -> {2}:{3} -> {0}:{1}", | 596 | string circularReference = String.Format(CultureInfo.InvariantCulture, "{0}:{1} -> {2}:{3} -> {0}:{1}", |
619 | this.Type, this.Id, after.Type, after.Id); | 597 | this.Type, this.Id, after.Type, after.Id); |
620 | messageHandler.OnMessage(WixErrors.OrderingReferenceLoopDetected(after.Row.SourceLineNumbers, circularReference)); | 598 | messageHandler.Write(ErrorMessages.OrderingReferenceLoopDetected(after.Row.SourceLineNumbers, circularReference)); |
621 | return; | 599 | return; |
622 | } | 600 | } |
623 | 601 | ||
@@ -632,7 +610,7 @@ namespace WixToolset.Core.Link | |||
632 | /// <remarks>Because items don't know about their parent groups (and can, in fact, be in more | 610 | /// <remarks>Because items don't know about their parent groups (and can, in fact, be in more |
633 | /// than one group at a time), we need to propagate the 'afters' from each parent item to its children | 611 | /// than one group at a time), we need to propagate the 'afters' from each parent item to its children |
634 | /// before we attempt to flatten the ordering.</remarks> | 612 | /// before we attempt to flatten the ordering.</remarks> |
635 | public void PropagateAfterToChildItems(IMessageHandler messageHandler) | 613 | public void PropagateAfterToChildItems(IMessaging messageHandler) |
636 | { | 614 | { |
637 | if (this.ShouldItemPropagateChildOrdering()) | 615 | if (this.ShouldItemPropagateChildOrdering()) |
638 | { | 616 | { |
@@ -647,7 +625,7 @@ namespace WixToolset.Core.Link | |||
647 | /// Flattens the ordering dependency for this item. | 625 | /// Flattens the ordering dependency for this item. |
648 | /// </summary> | 626 | /// </summary> |
649 | /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> | 627 | /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> |
650 | public void FlattenAfters(IMessageHandler messageHandler) | 628 | public void FlattenAfters(IMessaging messageHandler) |
651 | { | 629 | { |
652 | if (this.flattenedAfterItems) | 630 | if (this.flattenedAfterItems) |
653 | { | 631 | { |