@joebigelow / wix / commits / 772ed422

Let listeners adjust message levels; general messaging cleanup.

Bob Arnson committed Jan 17, 2020 at 21:06 UTC 772ed422f3195c899246f16c9c2e5b5a839d06cd
2 files changed +7 -87
src/WixToolset.Core.TestPackage/TestMessageListener.cs
+4 -1
@@ -1,6 +1,7 @@
1 -using System.Collections.Generic;
1 +using System.Collections.Generic;
2 using WixToolset.Data;
3 using WixToolset.Extensibility;
4 +using WixToolset.Extensibility.Services;
5
6 namespace WixToolset.Core.TestPackage
7 {
@@ -21,5 +22,7 @@ namespace WixToolset.Core.TestPackage
22 {
23 this.Messages.Add(new Message(null, MessageLevel.Information, 0, message));
24 }
25 +
26 + public MessageLevel CalculateMessageLevel(IMessaging messaging, Message message, MessageLevel defaultMessageLevel) => defaultMessageLevel;
27 }
28 }
src/WixToolset.Core/ExtensibilityServices/Messaging.cs
+3 -86
@@ -41,94 +41,9 @@ namespace WixToolset.Core.ExtensibilityServices
41 this.suppressedWarnings.Add(warningNumber);
42 }
43
44 - public string FormatMessage(Message message)
45 - {
46 - var level = CalculateMessageLevel(message);
47 -
48 - if (level == MessageLevel.Nothing)
49 - {
50 - return String.Empty;
51 - }
52 -
53 - var shortAppName = String.IsNullOrEmpty(this.listener?.ShortAppName) ? "WIX" : this.listener.ShortAppName;
54 - var longAppName = String.IsNullOrEmpty(this.listener?.LongAppName) ? "WIX" : this.listener.LongAppName;
55 -
56 - var fileNames = new List<string>();
57 - var errorFileName = longAppName;
58 - for (var sln = message.SourceLineNumbers; null != sln; sln = sln.Parent)
59 - {
60 - if (String.IsNullOrEmpty(sln.FileName))
61 - {
62 - continue;
63 - }
64 - else if (sln.LineNumber.HasValue)
65 - {
66 - if (fileNames.Count == 0)
67 - {
68 - errorFileName = String.Format(CultureInfo.CurrentUICulture, "{0}({1})", sln.FileName, sln.LineNumber);
69 - }
70 -
71 - fileNames.Add(String.Format(CultureInfo.CurrentUICulture, "{0}: line {1}", sln.FileName, sln.LineNumber));
72 - }
73 - else
74 - {
75 - if (fileNames.Count == 0)
76 - {
77 - errorFileName = sln.FileName;
78 - }
79 -
80 - fileNames.Add(sln.FileName);
81 - }
82 - }
83 -
84 - var levelString = String.Empty;
85 - if (MessageLevel.Warning == level)
86 - {
87 - levelString = "warning";
88 - }
89 - else if (MessageLevel.Error == level)
90 - {
91 - levelString = "error";
92 - }
93 -
94 - string formatted;
95 - if (message.ResourceManager == null)
96 - {
97 - formatted = String.Format(CultureInfo.InvariantCulture, message.ResourceNameOrFormat, message.MessageArgs);
98 - }
99 - else
100 - {
101 - formatted = String.Format(CultureInfo.InvariantCulture, message.ResourceManager.GetString(message.ResourceNameOrFormat), message.MessageArgs);
102 - }
103 -
104 - var builder = new StringBuilder();
105 - if (level == MessageLevel.Information || level == MessageLevel.Verbose)
106 - {
107 - builder.Append(formatted);
108 - }
109 - else
110 - {
111 - builder.AppendFormat("{0} : {1} {2}{3:0000} : {4}", errorFileName, levelString, shortAppName, message.Id, formatted);
112 - }
113 -
114 - if (fileNames.Count > 1)
115 - {
116 - builder.AppendFormat("Source trace:{0}", Environment.NewLine);
117 -
118 - foreach (var fileName in fileNames)
119 - {
120 - builder.AppendFormat("Source trace:{0}", fileName, Environment.NewLine);
121 - }
122 -
123 - builder.AppendLine();
124 - }
125 -
126 - return builder.ToString();
127 - }
128 -
44 public void Write(Message message)
45 {
131 - var level = CalculateMessageLevel(message);
46 + var level = this.CalculateMessageLevel(message);
47
48 if (level == MessageLevel.Nothing)
49 {
@@ -188,6 +103,8 @@ namespace WixToolset.Core.ExtensibilityServices
103 }
104 }
105
106 + level = this.listener?.CalculateMessageLevel(this, message, level) ?? level;
107 +
108 return level;
109 }
110 }