Merge pull request #485 from mtausig/master
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / InvalidProjectFileException.cs
index 96277a75f10768d8b4c1ad817c26ff6896f030af..57fc1b27d445d308d4622e6c92db976e313629d3 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;
@@ -43,19 +41,16 @@ namespace Microsoft.Build.BuildEngine {
                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,
@@ -74,7 +69,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;
@@ -86,6 +80,8 @@ namespace Microsoft.Build.BuildEngine {
                {
                }
 
+               // FIXME: set line/column numbers?
+               [MonoTODO]
                public InvalidProjectFileException (XmlNode xmlNode,
                                                    string message,
                                                    string errorSubcategory,
@@ -93,30 +89,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 ("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;
                        }
                }
 
@@ -164,7 +173,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;
+                               }
                        }
                }
 
@@ -175,5 +188,3 @@ namespace Microsoft.Build.BuildEngine {
                }
        }
 }
-
-#endif
\ No newline at end of file