// NAnt - A .NET build tool // Copyright (C) 2003 Scott Hernandez // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Scott Hernandez (Scott Hernandez) using System; using System.Globalization; using System.Runtime.Serialization; namespace Tests.NAnt.Core { /// /// Thrown whenever an error occurs during the build. /// [Serializable] public class TestBuildException : ApplicationException { #region Private Instance Fields private string _buildResults; #endregion Private Instance Fields #region Public Instance Constructors /// /// Initializes a new instance of the /// class. /// public TestBuildException() : base() { } /// /// Initializes a new instance of the /// class with a descriptive message. /// /// A descriptive message to include with the exception. public TestBuildException(string message) : base(message) { } /// /// Initializes a new instance of the /// class with the specified descriptive message and inner exception. /// /// A descriptive message to include with the exception. /// A nested exception that is the cause of the current exception. public TestBuildException(string message, Exception innerException) : base(message, innerException) { } /// /// Initializes a new instance of the /// class with a descriptive message and the location in the build file /// that caused the exception. /// /// A descriptive message to include with the exception. public TestBuildException(string message, string buildResult) : base(message) { _buildResults = buildResult; } /// /// Constructs an exception with the given descriptive message, the /// location in the build file and an instance of the Exception that /// is the cause of the current Exception. /// /// The error message that explains the reason for the exception. /// A nested exception that is the cause of the current exception. public TestBuildException(string message, string buildResult, Exception innerException) : base(message, innerException) { _buildResults = buildResult; } #endregion Public Instance Constructors #region Protected Instance Constructors /// /// Initializes a new instance of the /// class with serialized data. /// /// The that holds the serialized object data about the exception being thrown. /// The that contains contextual information about the source or destination. protected TestBuildException(SerializationInfo info, StreamingContext context) : base(info, context) { _buildResults = (string) info.GetValue("BuildResults", typeof(string)); } #endregion Protected Instance Constructors #region Override implementation of ApplicationException public override string Message { get { if (_buildResults == null || _buildResults.Length == 0) { return base.Message; } else { return base.Message + Environment.NewLine + "Build Log:" + Environment.NewLine + _buildResults; } } } /// /// Serializes this object into the provided. /// /// The to populate with data. /// The destination for this serialization. public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("BuildResults", _buildResults); } #endregion Override implementation of ApplicationException } }