aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2020-01-17 21:06:00 -0500
committerBob Arnson <bob@firegiant.com>2020-01-17 21:48:02 -0500
commit772ed422f3195c899246f16c9c2e5b5a839d06cd (patch)
treed35e1f3ae2b53b71a47cb1d2cae127af87effcc0 /src
parent94b941ee95a294228516097c269e27dfa41593ab (diff)
downloadwix-772ed422f3195c899246f16c9c2e5b5a839d06cd.tar.gz
wix-772ed422f3195c899246f16c9c2e5b5a839d06cd.tar.bz2
wix-772ed422f3195c899246f16c9c2e5b5a839d06cd.zip
Let listeners adjust message levels; general messaging cleanup.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.TestPackage/TestMessageListener.cs5
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/Messaging.cs89
2 files changed, 7 insertions, 87 deletions
diff --git a/src/WixToolset.Core.TestPackage/TestMessageListener.cs b/src/WixToolset.Core.TestPackage/TestMessageListener.cs
index 246cddd8..b5863869 100644
--- a/src/WixToolset.Core.TestPackage/TestMessageListener.cs
+++ b/src/WixToolset.Core.TestPackage/TestMessageListener.cs
@@ -1,6 +1,7 @@
1using System.Collections.Generic; 1using System.Collections.Generic;
2using WixToolset.Data; 2using WixToolset.Data;
3using WixToolset.Extensibility; 3using WixToolset.Extensibility;
4using WixToolset.Extensibility.Services;
4 5
5namespace WixToolset.Core.TestPackage 6namespace WixToolset.Core.TestPackage
6{ 7{
@@ -21,5 +22,7 @@ namespace WixToolset.Core.TestPackage
21 { 22 {
22 this.Messages.Add(new Message(null, MessageLevel.Information, 0, message)); 23 this.Messages.Add(new Message(null, MessageLevel.Information, 0, message));
23 } 24 }
25
26 public MessageLevel CalculateMessageLevel(IMessaging messaging, Message message, MessageLevel defaultMessageLevel) => defaultMessageLevel;
24 } 27 }
25} 28}
diff --git a/src/WixToolset.Core/ExtensibilityServices/Messaging.cs b/src/WixToolset.Core/ExtensibilityServices/Messaging.cs
index f4673952..266d842a 100644
--- a/src/WixToolset.Core/ExtensibilityServices/Messaging.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/Messaging.cs
@@ -41,94 +41,9 @@ namespace WixToolset.Core.ExtensibilityServices
41 this.suppressedWarnings.Add(warningNumber); 41 this.suppressedWarnings.Add(warningNumber);
42 } 42 }
43 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
129 public void Write(Message message) 44 public void Write(Message message)
130 { 45 {
131 var level = CalculateMessageLevel(message); 46 var level = this.CalculateMessageLevel(message);
132 47
133 if (level == MessageLevel.Nothing) 48 if (level == MessageLevel.Nothing)
134 { 49 {
@@ -188,6 +103,8 @@ namespace WixToolset.Core.ExtensibilityServices
188 } 103 }
189 } 104 }
190 105
106 level = this.listener?.CalculateMessageLevel(this, message, level) ?? level;
107
191 return level; 108 return level;
192 } 109 }
193 } 110 }