2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / InvalidProjectFileException.cs
index 1450faef4f2cfb88a1f5b880904fe7c2d221f4dc..3d3f84afeb8cab63151fa796b4317d8e0fc17420 100644 (file)
 // 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.Runtime.Serialization;
+using System.Security.Permissions;
 using System.Xml;
 
 namespace Microsoft.Build.BuildEngine {
        [Serializable]
        public sealed class InvalidProjectFileException : Exception {
                
-               string  baseMessage;
                int     columnNumber;
                int     endColumnNumber;
                string  errorCode;
                string  errorSubcategory;
-               bool    hasBeenLogged;
                string  helpKeyword;
                int     lineNumber;
                int     endLineNumber;
-               string  message;
                string  projectFile;
                
                public InvalidProjectFileException ()
                        : base ("Invalid project file exception has occured")
                {
-                       this.message = "Invalid project file exception has occured";
                }
 
                public InvalidProjectFileException (string message)
                        : base (message)
                {
-                       this.message = message;
                }
 
                public InvalidProjectFileException (string projectFile,
@@ -73,7 +71,6 @@ namespace Microsoft.Build.BuildEngine {
                        this.columnNumber = columnNumber;
                        this.endLineNumber = endLineNumber;
                        this.endColumnNumber = endColumnNumber;
-                       this.message = message;
                        this.errorSubcategory = errorSubcategory;
                        this.errorCode = errorCode;
                        this.helpKeyword = helpKeyword;
@@ -85,6 +82,8 @@ namespace Microsoft.Build.BuildEngine {
                {
                }
 
+               // FIXME: set line/column numbers?
+               [MonoTODO]
                public InvalidProjectFileException (XmlNode xmlNode,
                                                    string message,
                                                    string errorSubcategory,
@@ -92,31 +91,43 @@ namespace Microsoft.Build.BuildEngine {
                                                    string helpKeyword)
                        : base (message)
                {
-                       this.message = message;
                        this.errorSubcategory = errorSubcategory;
                        this.errorCode = errorCode;
                        this.helpKeyword = helpKeyword;
                }
 
+               // FIXME: private temporarily
+               private InvalidProjectFileException (SerializationInfo info, StreamingContext context)
+                       : base (info, context)
+               {
+                       this.columnNumber = info.GetInt32 ("columnNumber");
+                       this.endColumnNumber = info.GetInt32 ("endColumnNumber");
+                       this.errorCode = info.GetString ("errorCode");
+                       this.errorSubcategory = info.GetString ("errorSubcategory");
+                       this.helpKeyword = info.GetString ("helpKeyword");
+                       this.lineNumber = info.GetInt32 ("lineNumber");
+                       this.endLineNumber = info.GetInt32 ("endLineNumber");
+                       this.projectFile = info.GetString ("projectFile");
+               }
+
+               [SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)]
                public override void GetObjectData (SerializationInfo info,
                                                    StreamingContext context)
                {
                        base.GetObjectData (info, context);
-                       info.AddValue ("BaseMessage", baseMessage);
-                       info.AddValue ("ColumnNumber", columnNumber);
-                       info.AddValue ("EndColumnNumber", endColumnNumber);
-                       info.AddValue ("ErrorCode", errorCode);
-                       info.AddValue ("ErrorSubcategory", errorSubcategory);
-                       info.AddValue ("HasBeenLogged", hasBeenLogged);
-                       info.AddValue ("HelpKeyword", helpKeyword);
-                       info.AddValue ("LineNumber", lineNumber);
-                       info.AddValue ("EndLineNumber", endLineNumber);
-                       info.AddValue ("ProjectFile", projectFile);
+                       info.AddValue ("columnNumber", columnNumber);
+                       info.AddValue ("endColumnNumber", endColumnNumber);
+                       info.AddValue ("errorCode", errorCode);
+                       info.AddValue ("errorSubcategory", errorSubcategory);
+                       info.AddValue ("helpKeyword", helpKeyword);
+                       info.AddValue ("lineNumber", lineNumber);
+                       info.AddValue ("endLineNumber", endLineNumber);
+                       info.AddValue ("projectFile", projectFile);
                }
 
                public string BaseMessage {
                        get {
-                               return baseMessage;
+                               return base.Message;
                        }
                }
 
@@ -150,15 +161,6 @@ namespace Microsoft.Build.BuildEngine {
                        }
                }
 
-               public bool HasBeenLogged {
-                       get {
-                               return hasBeenLogged;
-                       }
-                       set {
-                               hasBeenLogged = value;
-                       }
-               }
-
                public string HelpKeyword {
                        get {
                                return helpKeyword;
@@ -173,7 +175,11 @@ namespace Microsoft.Build.BuildEngine {
 
                public override string Message {
                        get {
-                               return base.Message;
+                               if (projectFile == null || projectFile == String.Empty) {
+                                       return BaseMessage;
+                               } else {
+                                       return BaseMessage + "  " + ProjectFile;
+                               }
                        }
                }
 
@@ -184,3 +190,5 @@ namespace Microsoft.Build.BuildEngine {
                }
        }
 }
+
+#endif