internal ExceptionEventArgs(Workspace workspace, Failure failure) { this.workspace = workspace; this.failure = failure; }
internal static Failure FromXml(Repository repository, XmlReader reader) { Failure failure = new Failure(); string requestType = reader.GetAttribute("req"); if (!String.IsNullOrEmpty(requestType)) { failure.requestType = (RequestType) Enum.Parse(typeof(RequestType), requestType, true); } failure.code = reader.GetAttribute("code"); failure.localItem = TfsPath.ToPlatformPath(reader.GetAttribute("local")); string elementName = reader.Name; while (reader.Read()) { if (reader.NodeType == XmlNodeType.EndElement && reader.Name == elementName) break; if (reader.NodeType == XmlNodeType.Element && reader.Name == "Message") failure.message = reader.ReadString(); } return failure; }
internal void OnNonFatalError(Workspace workspace, Failure failure) { if (null != NonFatalError) NonFatalError(workspace, new ExceptionEventArgs(workspace, failure)); }
public PendingChange[] QueryPendingSets(string localWorkspaceName, string localWorkspaceOwner, string queryWorkspaceName, string ownerName, ItemSpec[] itemSpecs, bool generateDownloadUrls, out Failure[] failures) { Message msg = new Message(GetWebRequest (new Uri(Url)), "QueryPendingSets"); msg.Body.WriteElementString("localWorkspaceName", localWorkspaceName); msg.Body.WriteElementString("localWorkspaceOwner", localWorkspaceOwner); msg.Body.WriteElementString("queryWorkspaceName", queryWorkspaceName); msg.Body.WriteElementString("ownerName", ownerName); msg.Body.WriteStartElement("itemSpecs"); foreach (ItemSpec item in itemSpecs) { item.ToXml(msg.Body, "ItemSpec"); } msg.Body.WriteEndElement(); msg.Body.WriteElementString("generateDownloadUrls", generateDownloadUrls.ToString().ToLower()); List<PendingChange> changes = new List<PendingChange>(); List<Failure> faillist = new List<Failure>(); using (HttpWebResponse response = Invoke(msg)) { XmlReader results = msg.ResponseReader(response); while (results.Read()) { if (results.NodeType == XmlNodeType.Element) { switch (results.Name) { case "PendingChange": changes.Add(PendingChange.FromXml(this, results)); break; case "Failure": faillist.Add(Failure.FromXml(this, results)); break; } } } } failures = faillist.ToArray(); return changes.ToArray(); }
public int CheckIn(Workspace workspace, string[] serverItems, string comment, ref SortedList <string, bool> undoneServerItems) { Message msg = new Message(GetWebRequest(new Uri(Url)), "CheckIn"); msg.Body.WriteElementString("workspaceName", workspace.Name); msg.Body.WriteElementString("ownerName", workspace.OwnerName); msg.Body.WriteStartElement("serverItems"); foreach (string serverItem in serverItems) { msg.Body.WriteElementString("string", serverItem); } msg.Body.WriteEndElement(); // write info subtree msg.Body.WriteStartElement("info"); DateTime dt = new DateTime(0); msg.Body.WriteAttributeString("date", dt.ToString("s")); msg.Body.WriteAttributeString("cset", "0"); msg.Body.WriteAttributeString("owner", workspace.OwnerName); msg.Body.WriteElementString("Comment", comment); msg.Body.WriteElementString("CheckinNote", ""); msg.Body.WriteElementString("PolicyOverride", ""); msg.Body.WriteElementString("CheckinOptions", "ValidateCheckinOwner"); msg.Body.WriteEndElement(); int cset = 0; using (HttpWebResponse response = Invoke(msg)) { XmlReader results = msg.ResponseReader(response); cset = Convert.ToInt32(results.GetAttribute("cset")); List <Failure> failures = new List <Failure>(); //TODO: read <ImplicitItems /> //<CheckInResponse xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03"><CheckInResult cset="11486"><UndoneServerItems /><ImplicitItems /></CheckInResult><failures /></CheckInResponse> while (results.Read()) { if (results.NodeType == XmlNodeType.Element) { switch (results.Name) { case "Failure": failures.Add(Failure.FromXml(this, results)); break; case "string": undoneServerItems.Add(results.ReadString(), true); break; } } } foreach (Failure failure in failures) { versionControlServer.OnNonFatalError(workspace, failure); } } return(cset); }