Beispiel #1
0
        public SubmissionResult SubmitException(string excString, string excMessage, string excStackTrace, string description, string itnUserName, string itnPassword, int buildNumber, string osVersion, IWebProxy proxy)
        {
            string           md5Hash     = GetExceptionHash(excString);
            ErrorReportProxy reportProxy = new ErrorReportProxy(proxy, myNeedProcessEvents);

            XmlDocument requestDescription = null;

            try
            {
                OnSubmitProgress("Checking...");
                int             itnThread   = -1;
                ExceptionStruct es          = new ExceptionStruct();
                bool            checkFailed = reportProxy.CheckException(md5Hash, ref es);

                if (!checkFailed)
                {
                    itnThread = es.exceptionItnThread;
                }

                OnSubmitProgress("Posting...");
                bool isComment = true;

                string errDescription = (description.Length == 0)
                ? excString
                : description + "\n" + excString;

                if (itnThread == -1)
                {
                    isComment = false;
                    itnThread = ITNProxy.PostNewThread(myProduct, GetExceptionTitle(excMessage, excStackTrace),
                                                       errDescription, itnUserName, itnPassword, buildNumber, osVersion);
                }
                else
                {
                    ITNProxy.PostNewComment(myProduct, errDescription, itnUserName, itnPassword, itnThread);
                }

                if (myITNProjectName != String.Empty)
                {
                    requestDescription = ITNProxy.GetSCR(myITNProjectName, itnThread);
                }

                if (!checkFailed)
                {
                    if (!isComment)
                    {
                        es = new ExceptionStruct();
                        es.exceptionHash        = md5Hash;
                        es.exceptionMessage     = excMessage;
                        es.exceptionDate        = DateTime.Now;
                        es.exceptionStack       = excStackTrace == null ? String.Empty : excStackTrace;
                        es.exceptionItnThread   = itnThread;
                        es.exceptionBuildNumber = buildNumber.ToString();
                        es.exceptionProductCode = myProduct;
                        es.exceptionScrambled   = false;
                    }

                    OnSubmitProgress("Submitting...");
                    reportProxy.SubmitException(itnUserName, es, excString, isComment);
                    return(new SubmissionResult(itnThread, isComment, requestDescription));
                }
                else
                {
                    return(null);
                }
            }
            finally
            {
                OnSubmitProgress("");
            }
        }
Beispiel #2
0
        public SubmissionResult SubmitException(string excString, string excMessage, string excStackTrace, string description, string itnUserName, string itnPassword, int buildNumber, string osVersion, IWebProxy proxy)
        {
            string           md5Hash     = ITNExceptionSubmitter.GetExceptionHash(excString);
            ErrorReportProxy reportProxy = new ErrorReportProxy(proxy, myNeedProcessEvents);

            try
            {
                OnSubmitProgress("Checking...");
                int             itnThread   = -1;
                ExceptionStruct es          = new ExceptionStruct();
                bool            checkFailed = reportProxy.CheckException(md5Hash, ref es);

                if (!checkFailed)
                {
                    itnThread = es.exceptionItnThread;
                }

                OnSubmitProgress("Posting...");
                bool isComment = true;

                string errDescription = (description.Length == 0)
                    ? excString
                    : description + "\n" + excString;

                IJiraService service = (IJiraService)XmlRpcProxyGen.Create(typeof(IJiraService));

                string token;

                if (myDefaultUserName != null && myDefaultPassword != null)
                {
                    try
                    {
                        token = service.login(itnUserName, itnPassword);
                    }
                    catch (XmlRpcFaultException)
                    {
                        token       = service.login(myDefaultUserName, myDefaultPassword);
                        itnUserName = myDefaultUserName;
                        itnPassword = myDefaultPassword;
                    }
                }
                else
                {
                    token = service.login(itnUserName, itnPassword);
                }

                XmlRpcStruct[] statuses    = service.getStatuses(token);
                XmlRpcStruct[] resolutions = service.getResolutions(token);

                XmlRpcStruct issue = new XmlRpcStruct();
                if (itnThread == -1)
                {
                    isComment = false;
                    XmlRpcStruct[] components = service.getComponents(token, myJiraProjectKey);
                    XmlRpcStruct[] issueTypes = service.getIssueTypes(token);
                    XmlRpcStruct[] priorities = service.getPriorities(token);

                    issue["project"] = myJiraProjectKey;
                    if (myComponent != null)
                    {
                        foreach (XmlRpcStruct component in components)
                        {
                            if ((string)component["name"] == myComponent)
                            {
                                issue["components"] = new XmlRpcStruct[] { component }
                            }
                            ;
                        }
                    }
                    MapNameToId(issue, issueTypes, "type", "Exception");
                    MapNameToId(issue, priorities, "priority", "Major");

                    issue["summary"]     = ITNExceptionSubmitter.GetExceptionTitle(excMessage, excStackTrace);
                    issue["description"] = errDescription;

                    issue = service.createIssue(token, issue);
                    string issueKey = (string)issue["key"];
                    itnThread = Int32.Parse(issueKey.Substring(issueKey.IndexOf("-") + 1));

                    if (myStatus != null)
                    {
                        foreach (XmlRpcStruct status in statuses)
                        {
                            if ((string)status["name"] == myStatus)
                            {
                                service.setIssueStatus(itnUserName, itnPassword, issueKey, (string)status["id"], "");
                                break;
                            }
                        }

                        service.setIssueStatus(itnUserName, itnPassword, issueKey, myStatus, "");
                    }
                }
                else
                {
                    string issueKey = myJiraProjectKey + "-" + itnThread;
                    service.addIssueComment(itnUserName, itnPassword, issueKey,
                                            errDescription);
                    issue = service.getIssue(token, issueKey);
                }

                XmlDocument requestDescription = new XmlDocument();
                requestDescription.LoadXml("<scr/>");
                requestDescription.DocumentElement.SetAttribute("url",
                                                                "http://www.jetbrains.net/jira/browse/" + issue["key"]);
                requestDescription.DocumentElement.SetAttribute("state",
                                                                MapIdToName(issue, statuses, "status"));
                requestDescription.DocumentElement.SetAttribute("resolution",
                                                                MapIdToName(issue, resolutions, "resolution"));

                XmlElement fixVersionNodes = requestDescription.CreateElement("fixVersions");
                requestDescription.DocumentElement.AppendChild(fixVersionNodes);

                object[] fixVersions = (object[])issue ["fixVersions"];
                foreach (object fixVersionObj in fixVersions)
                {
                    XmlRpcStruct fixVersion     = (XmlRpcStruct)fixVersionObj;
                    XmlElement   fixVersionNode = requestDescription.CreateElement("version");
                    fixVersionNode.SetAttribute("name", (string)fixVersion ["name"]);
                    fixVersionNodes.AppendChild(fixVersionNode);
                }

                if (!checkFailed)
                {
                    if (!isComment)
                    {
                        es = new ExceptionStruct();
                        es.exceptionHash        = md5Hash;
                        es.exceptionMessage     = excString;
                        es.exceptionDate        = DateTime.Now;
                        es.exceptionStack       = excStackTrace == null ? String.Empty : excStackTrace;
                        es.exceptionItnThread   = itnThread;
                        es.exceptionBuildNumber = buildNumber.ToString();
                        es.exceptionProductCode = myProduct;
                        es.exceptionScrambled   = false;
                    }

                    OnSubmitProgress("Submitting...");
                    reportProxy.SubmitException(itnUserName, es, excString, isComment);
                }
                return(new SubmissionResult(itnThread, isComment, requestDescription));
            }
            finally
            {
                OnSubmitProgress("");
            }
        }