// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#if NET_2_0
using System;
using System.IO;
string helpKeywordPrefix;
string taskName;
ResourceManager taskResources;
+ ITask taskInstance;
public TaskLoggingHelper (ITask taskInstance)
{
- if (taskInstance != null)
- this.buildEngine = taskInstance.BuildEngine;
+ if (taskInstance == null)
+ throw new ArgumentNullException ("taskInstance");
+
+ this.taskInstance = taskInstance;
taskName = null;
}
{
if (resourceName == null)
throw new ArgumentNullException ("resourceName");
-
- return null;
+
+ if (taskResources == null)
+ throw new InvalidOperationException ("Task did not register any task resources");
+
+ string resourceString = taskResources.GetString (resourceName);
+ if (resourceString == null)
+ throw new ArgumentException ($"No resource string found for resource named {resourceName}");
+
+ return FormatString (resourceString, args);
}
[MonoTODO]
{
if (message == null)
throw new ArgumentNullException ("message");
+
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
BuildErrorEventArgs beea = new BuildErrorEventArgs (
- null, null, buildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, FormatString (message, messageArgs),
+ null, null, BuildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, FormatString (message, messageArgs),
helpKeywordPrefix, null);
- buildEngine.LogErrorEvent (beea);
+ BuildEngine.LogErrorEvent (beea);
hasLoggedErrors = true;
}
if (message == null)
throw new ArgumentNullException ("message");
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
+
BuildErrorEventArgs beea = new BuildErrorEventArgs (
subcategory, errorCode, file, lineNumber,
columnNumber, endLineNumber, endColumnNumber,
FormatString (message, messageArgs), helpKeyword /*it's helpKeyword*/,
null /*it's senderName*/);
- buildEngine.LogErrorEvent (beea);
+ BuildEngine.LogErrorEvent (beea);
hasLoggedErrors = true;
}
if (exception == null)
throw new ArgumentNullException ("exception");
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
+
StringBuilder sb = new StringBuilder ();
sb.Append (exception.Message);
if (showStackTrace == true)
sb.Append (exception.StackTrace);
BuildErrorEventArgs beea = new BuildErrorEventArgs (
- null, null, buildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, sb.ToString (),
+ null, null, BuildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, sb.ToString (),
exception.HelpLink, exception.Source);
- buildEngine.LogErrorEvent (beea);
+ BuildEngine.LogErrorEvent (beea);
hasLoggedErrors = true;
}
params object[] messageArgs)
{
LogErrorFromResources (null, null, null, null, 0, 0, 0,
- 0, messageResourceName, null);
+ 0, messageResourceName, messageArgs);
}
public void LogErrorFromResources (string subcategoryResourceName,
string messageResourceName,
params object[] messageArgs)
{
+ if (messageResourceName == null)
+ throw new ArgumentNullException ("messageResourceName");
+
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
+
+ string subcategory = null;
+ if (!String.IsNullOrEmpty (subcategoryResourceName))
+ subcategory = taskResources.GetString (subcategoryResourceName);
+
BuildErrorEventArgs beea = new BuildErrorEventArgs (
- taskResources.GetString (subcategoryResourceName),
+ subcategory,
errorCode, file, lineNumber, columnNumber,
endLineNumber, endColumnNumber,
- taskResources.GetString (messageResourceName),
+ FormatResourceString (messageResourceName, messageArgs),
helpKeyword, null );
- buildEngine.LogErrorEvent (beea);
+ BuildEngine.LogErrorEvent (beea);
hasLoggedErrors = true;
}
public void LogMessageFromResources (string messageResourceName,
params object[] messageArgs)
{
- LogMessage (taskResources.GetString (messageResourceName),
- messageArgs);
+ LogMessageFromResources (MessageImportance.Normal, messageResourceName, messageArgs);
}
public void LogMessageFromResources (MessageImportance importance,
string messageResourceName,
params object[] messageArgs)
{
- LogMessage (importance, taskResources.GetString (
- messageResourceName), messageArgs);
+ if (messageResourceName == null)
+ throw new ArgumentNullException ("messageResourceName");
+
+ LogMessage (importance, FormatResourceString (messageResourceName, messageArgs));
}
public bool LogMessagesFromFile (string fileName)
if (lineOfText == null)
throw new ArgumentNullException ("lineOfText");
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
+
BuildMessageEventArgs bmea = new BuildMessageEventArgs (
lineOfText, helpKeywordPrefix,
null, messageImportance);
- buildEngine.LogMessageEvent (bmea);
+ BuildEngine.LogMessageEvent (bmea);
return true;
}
public void LogWarning (string message,
params object[] messageArgs)
{
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
+
// FIXME: what about all the parameters?
BuildWarningEventArgs bwea = new BuildWarningEventArgs (
- null, null, buildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, FormatString (message, messageArgs),
+ null, null, BuildEngine.ProjectFileOfTaskNode, 0, 0, 0, 0, FormatString (message, messageArgs),
helpKeywordPrefix, null);
- buildEngine.LogWarningEvent (bwea);
+ BuildEngine.LogWarningEvent (bwea);
}
public void LogWarning (string subcategory, string warningCode,
string message,
params object[] messageArgs)
{
+ ThrowInvalidOperationIf (BuildEngine == null, "Task is attempting to log before it was initialized");
+
BuildWarningEventArgs bwea = new BuildWarningEventArgs (
subcategory, warningCode, file, lineNumber,
columnNumber, endLineNumber, endColumnNumber,
FormatString (message, messageArgs), helpKeyword, null);
- buildEngine.LogWarningEvent (bwea);
+ BuildEngine.LogWarningEvent (bwea);
}
public void LogWarningFromException (Exception exception)
public void LogWarningFromResources (string messageResourceName,
params object[] messageArgs)
{
- LogWarning (taskResources.GetString (messageResourceName),
- messageArgs);
+ if (messageResourceName == null)
+ throw new ArgumentNullException ("messageResourceName");
+
+ LogWarningFromResources (null, null, null, null, 0, 0, 0, 0, messageResourceName, messageArgs);
}
public void LogWarningFromResources (string subcategoryResourceName,
string messageResourceName,
params object[] messageArgs)
{
- LogWarning (taskResources.GetString (subcategoryResourceName),
+ if (messageResourceName == null)
+ throw new ArgumentNullException ("messageResourceName");
+
+ string subcategory = null;
+ if (!String.IsNullOrEmpty (subcategoryResourceName))
+ subcategory = taskResources.GetString (subcategoryResourceName);
+
+ LogWarning (subcategory,
warningCode, helpKeyword, file, lineNumber,
columnNumber, endLineNumber, endColumnNumber,
- taskResources.GetString (messageResourceName),
- messageArgs);
+ FormatResourceString (messageResourceName, messageArgs));
}
public void LogWarningWithCodeFromResources (string messageResourceName,
{
}
+ void ThrowInvalidOperationIf (bool condition, string message)
+ {
+ if (condition)
+ throw new InvalidOperationException (message);
+ }
+
protected IBuildEngine BuildEngine {
get {
- return buildEngine;
+ return taskInstance?.BuildEngine;
}
}
}
}
-#endif