Raise error when project item has empty Include attribute or lacks it.
[mono.git] / mcs / class / Microsoft.Build / Microsoft.Build.Construction / ProjectOutputElement.cs
index 9cad3da1b66c0253e3fe38aa43afb9258d8adf3a..bb5693758d8c4264e113a4ba89e7160be1b3025a 100644 (file)
@@ -1,5 +1,5 @@
 //
-// AssemblyInfo.cs
+// ProjectOutputElement.cs
 //
 // Author:
 //   Leszek Ciesielski (skolima@gmail.com)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
 using System.Xml;
 namespace Microsoft.Build.Construction
 {
+        [System.Diagnostics.DebuggerDisplayAttribute ("Name={Name} TaskParameter={TaskParameter} ItemName={ItemName} "
+                                                      + "PropertyName={PropertyName} Condition={Condition}")]
         public class ProjectOutputElement : ProjectElement
         {
+                internal ProjectOutputElement (string taskParameter, string itemType, string propertyName,
+                                               ProjectRootElement containintProject)
+                {
+                        TaskParameter = taskParameter;
+                        ItemType = itemType;
+                        PropertyName = propertyName;
+                        ContainingProject = containintProject;
+                }
                 public bool IsOutputItem {
-                        get { return true; }
+                        get { return !String.IsNullOrWhiteSpace(itemType); }
                 }
                 public bool IsOutputProperty {
-                        get { return !IsOutputItem; }
+                        get { return !String.IsNullOrWhiteSpace(propertyName); }
+                }
+                string itemType;
+                public string ItemType { get { return itemType ?? String.Empty; } set { itemType = value; } }
+                string propertyName;
+                public string PropertyName { get { return propertyName ?? String.Empty; } set { propertyName = value; } }
+                string taskParameter;
+                public string TaskParameter {
+                        get { return taskParameter ?? String.Empty; }
+                        set { taskParameter = value; }
                 }
-                public string ItemType { get; set; }
-                public string PropertyName { get; set; }
-                public string TaskParameter { get; set; }
                 internal override string XmlName {
-                        get {
-                                throw new System.NotImplementedException ();
-                        }
+                        get { return "Output"; }
                 }
-                internal override void Save (XmlWriter writer)
+                internal override void SaveValue (XmlWriter writer)
                 {
-                        throw new System.NotImplementedException ();
+                        base.SaveValue (writer);
+                        SaveAttribute (writer, "TaskParameter", TaskParameter);
+                        if (IsOutputProperty)
+                                SaveAttribute (writer, "PropertyName", PropertyName);
+                        else
+                                SaveAttribute (writer, "ItemName", ItemType);
+                }
+                internal override void LoadAttribute (string name, string value)
+                {
+                        switch (name) {
+                        case "TaskParameter":
+                                TaskParameter = value;
+                                break;
+                        case "PropertyName":
+                                PropertyName = value;
+                                break;
+                        case "ItemName":
+                                ItemType = value;
+                                break;
+                        default:
+                                base.LoadAttribute (name, value);
+                                break;
+                        }
                 }
         }
 }