Merge branch 'master' of github.com:mono/mono
[mono.git] / mcs / class / Microsoft.Build.Utilities / Microsoft.Build.Utilities / TaskLoggingHelper.cs
index 8f22b30945e75a1b6965eb7747d70c8c21e03a7c..11a9229539adb164159595e77069596f8d5aa672 100644 (file)
@@ -45,21 +45,29 @@ namespace Microsoft.Build.Utilities
        
                public TaskLoggingHelper (ITask taskInstance)
                {
-                       this.buildEngine = taskInstance.BuildEngine;
+                       if (taskInstance != null)
+                               this.buildEngine = taskInstance.BuildEngine;
+                       taskName = null;
                }
 
                [MonoTODO]
                public string ExtractMessageCode (string message,
                                                  out string messageWithoutCodePrefix)
                {
-                       messageWithoutCodePrefix = "";
-                       return "";
+                       if (message == null)
+                               throw new ArgumentNullException ("message");
+                               
+                       messageWithoutCodePrefix = String.Empty;
+                       return String.Empty;
                }
 
                [MonoTODO]
                public virtual string FormatResourceString (string resourceName,
                                                            params object[] args)
                {
+                       if (resourceName == null)
+                               throw new ArgumentNullException ("resourceName");
+               
                        return null;
                }
 
@@ -67,14 +75,34 @@ namespace Microsoft.Build.Utilities
                public virtual string FormatString (string unformatted,
                                                   params object[] args)
                {
-                       return "";
+                       if (unformatted == null)
+                               throw new ArgumentNullException ("unformatted");
+               
+                       if (args == null || args.Length == 0)
+                               return unformatted;
+                       else
+                               return String.Format (unformatted, args);
+               }
+               
+               [MonoTODO]
+               public void LogCommandLine (string commandLine)
+               {
+               }
+               
+               [MonoTODO]
+               public void LogCommandLine (MessageImportance importance,
+                                           string commandLine)
+               {
                }
 
                public void LogError (string message,
                                     params object[] messageArgs)
                {
+                       if (message == null)
+                               throw new ArgumentNullException ("message");
+                               
                        BuildErrorEventArgs beea = new BuildErrorEventArgs (
-                               null, null, null, 0, 0, 0, 0, message,
+                               null, null, buildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, FormatString (message, messageArgs),
                                helpKeywordPrefix, null);
                        buildEngine.LogErrorEvent (beea);
                        hasLoggedErrors = true;
@@ -87,30 +115,42 @@ namespace Microsoft.Build.Utilities
                                      string message,
                                      params object[] messageArgs)
                {
+                       if (message == null)
+                               throw new ArgumentNullException ("message");
+                       
                        BuildErrorEventArgs beea = new BuildErrorEventArgs (
                                subcategory, errorCode, file, lineNumber,
                                columnNumber, endLineNumber, endColumnNumber,
-                               message, helpKeywordPrefix /*it's helpKeyword*/,
+                               FormatString (message, messageArgs), helpKeyword /*it's helpKeyword*/,
                                null /*it's senderName*/);
-                       // FIXME: what with messageArgs?
                        buildEngine.LogErrorEvent (beea);
                        hasLoggedErrors = true;
                }
 
                public void LogErrorFromException (Exception e)
                {
-                       LogErrorFromException (e, false);
+                       LogErrorFromException (e, true);
                }
 
                public void LogErrorFromException (Exception e,
                                                   bool showStackTrace)
                {
+                       LogErrorFromException (e, showStackTrace, true, String.Empty);
+               }
+
+               [MonoTODO ("Arguments @showDetail and @file are not honored")]
+               public void LogErrorFromException (Exception e,
+                                                  bool showStackTrace, bool showDetail, string file)
+               {
+                       if (e == null)
+                               throw new ArgumentNullException ("e");
+               
                        StringBuilder sb = new StringBuilder ();
                        sb.Append (e.Message);
                        if (showStackTrace == true)
                                sb.Append (e.StackTrace);
                        BuildErrorEventArgs beea = new BuildErrorEventArgs (
-                               null, null, null, 0, 0, 0, 0, sb.ToString (),
+                               null, null, buildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, sb.ToString (),
                                e.HelpLink, e.Source);
                        buildEngine.LogErrorEvent (beea);
                        hasLoggedErrors = true;
@@ -171,20 +211,17 @@ namespace Microsoft.Build.Utilities
                public void LogMessage (string message,
                                       params object[] messageArgs)
                {
-                       LogMessage (MessageImportance.Normal, message,
-                               messageArgs); 
+                       LogMessage (MessageImportance.Normal, message, messageArgs); 
                }
 
                public void LogMessage (MessageImportance importance,
                                        string message,
                                        params object[] messageArgs)
                {
-                       BuildMessageEventArgs bmea = new BuildMessageEventArgs (
-                               message, helpKeywordPrefix, /*helpKeyword*/
-                               null /*sender*/, importance);
-                       // FIXME: probably messageArgs contain helpKeyword or
-                       // senderName
-                       buildEngine.LogMessageEvent (bmea);
+                       if (message == null)
+                               throw new ArgumentNullException ("message");
+               
+                       LogMessageFromText (FormatString (message, messageArgs), importance);
                }
 
                public void LogMessageFromResources (string messageResourceName,
@@ -217,21 +254,19 @@ namespace Microsoft.Build.Utilities
                                sr.Close ();
                                return true;
                        }
-                       catch (Exception ex) {
+                       catch (Exception) {
                                return false;
                        }
                }
 
                public bool LogMessagesFromStream (TextReader stream,
-                                                  MessageImportance messageImportance,
-                                                  bool synchronize)
-               // FIXME: what about synchronize
+                                                  MessageImportance messageImportance)
                {
                        try {
                                LogMessage (messageImportance, stream.ReadToEnd (), null);
                                return true;
                        }
-                       catch (Exception ex) {
+                       catch (Exception) {
                                return false;
                        }
                        finally {
@@ -240,12 +275,26 @@ namespace Microsoft.Build.Utilities
                        }
                }
 
+               public bool LogMessageFromText (string lineOfText,
+                                               MessageImportance importance)
+               {
+                       if (lineOfText == null)
+                               throw new ArgumentNullException ("lineOfText");
+
+                       BuildMessageEventArgs bmea = new BuildMessageEventArgs (
+                               lineOfText, helpKeywordPrefix,
+                               null, importance);
+                       buildEngine.LogMessageEvent (bmea);
+
+                       return true;
+               }
+
                public void LogWarning (string message,
                                       params object[] messageArgs)
                {
                        // FIXME: what about all the parameters?
                        BuildWarningEventArgs bwea = new BuildWarningEventArgs (
-                               null, null, null, 0, 0, 0, 0, message,
+                               null, null, buildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, FormatString (message, messageArgs),
                                helpKeywordPrefix, null);
                        buildEngine.LogWarningEvent (bwea);
                }
@@ -260,7 +309,7 @@ namespace Microsoft.Build.Utilities
                        BuildWarningEventArgs bwea = new BuildWarningEventArgs (
                                subcategory, warningCode, file, lineNumber,
                                columnNumber, endLineNumber, endColumnNumber,
-                               message, helpKeywordPrefix, null);
+                               FormatString (message, messageArgs), helpKeyword, null);
                        buildEngine.LogWarningEvent (bwea);
                }
 
@@ -326,6 +375,22 @@ namespace Microsoft.Build.Utilities
                                endColumnNumber, messageResourceName,
                                messageArgs);
                }
+               
+               [MonoTODO]
+               public void LogExternalProjectFinished (string message,
+                                                       string helpKeyword,
+                                                       string projectFile,
+                                                       bool succeeded)
+               {
+               }
+               
+               [MonoTODO]
+               public void LogExternalProjectStarted (string message,
+                                                      string helpKeyword,
+                                                      string projectFile,
+                                                      string targetNames)
+               {
+               }
 
                protected IBuildEngine BuildEngine {
                        get {
@@ -365,4 +430,4 @@ namespace Microsoft.Build.Utilities
        }
 }
 
-#endif
\ No newline at end of file
+#endif