internal static RemoteIssue CreateIssue(string token, RemoteIssue remoteIssue) { if (!IsConfigured) { throw new InvalidOperationException("JIRA is not configured"); } if (Log.IsDebugEnabled) { Log.DebugFormat("Creating issue:\n{0}", remoteIssue.ToJson()); } remoteIssue = Service.createIssue(token, remoteIssue); if (Log.IsDebugEnabled) { Log.DebugFormat("Successfully created issue:\n{0}", remoteIssue.ToJson()); } return(remoteIssue); }
public override string CreateDefect(Dictionary <string, string> defectInfos) { Connect(); RemoteIssue issue = new RemoteIssue(); RemotePriority[] priorities = jira.getPriorities(jiraToken); RemoteIssueType[] issueTypes = jira.getIssueTypes(jiraToken); jira.getProjectRoles(jiraToken); issue.created = DateTime.Now; issue.summary = "TOSCA[" + defectInfos["Workspace-User"] + "]: Error in Testcase \"" + defectInfos["TestCase-Name"] + "\""; string description = defectInfos["Log-Description"]; if (!String.IsNullOrEmpty(description)) { issue.description = description; } else { String compressedLog = defectInfos["CompressedLogDetails"]; issue.description = String.IsNullOrEmpty(compressedLog) ? String.Empty : GetLogInfoFromCompressedLogDetails(compressedLog); } issue.assignee = GetDefectIntegrationSetting("DefectAssignee", defectInfos); if (issue.assignee == string.Empty) { issue.assignee = "-1"; } issue.project = GetDefectIntegrationSetting("DefectProject", defectInfos); issue.priority = GetDefectIntegrationSetting("DefectPriority", defectInfos); foreach (RemotePriority priority in priorities) { if (priority.name == issue.priority) { issue.priority = priority.id; break; } } issue.status = GetDefectIntegrationSetting("DefectStatus", defectInfos); issue.type = GetDefectIntegrationSetting("DefectType", defectInfos); foreach (RemoteIssueType issueType in issueTypes) { if (issueType.name == issue.type) { issue.type = issueType.id; break; } } issue.components = GetComponents(GetDefectIntegrationSetting("DefectComponents", defectInfos)); issue.customFieldValues = GetCustomDefectProperties(defectInfos).Select(property => new RemoteCustomFieldValue { customfieldId = "customfield_" + property.id, values = property.value.Split(',') }).ToArray(); issue = jira.createIssue(jiraToken, issue); Disconnect(); return(issue != null ? issue.key : string.Empty); }
public string createIssue(JiraIssue issue) { #if PLVS_133_WORKAROUND object[] issuesTable = service.getIssuesFromTextSearch(Token, "<<<<<<<<<<<<<IHOPETHEREISNOSUCHTEXT>>>>>>>>>>>>>>"); Type issueObjectType = issuesTable.GetType().GetElementType(); object ri = issueObjectType.GetConstructor(new Type[] {}).Invoke(new object[] {}); setObjectProperty(ri, "project", issue.ProjectKey); setObjectProperty(ri, "type", issue.IssueTypeId.ToString()); setObjectProperty(ri, "priority", issue.PriorityId.ToString()); setObjectProperty(ri, "summary", issue.Summary); setObjectProperty(ri, "description", issue.Description); if (issue.Assignee != null) { setObjectProperty(ri, "assignee", issue.Assignee); } if (issue.Components != null && issue.Components.Count > 0) { object[] components = service.getComponents(Token, issue.ProjectKey); setObjectTablePropertyFromObjectList(ri, "components", issue.Components, components); } object[] versions = service.getVersions(Token, issue.ProjectKey); if (issue.Versions != null && issue.Versions.Count > 0) { setObjectTablePropertyFromObjectList(ri, "affectsVersions", issue.Versions, versions); } if (issue.FixVersions != null && issue.FixVersions.Count > 0) { setObjectTablePropertyFromObjectList(ri, "fixVersions", issue.FixVersions, versions); } object createdIssue = service.createIssue(Token, ri); return((string)createdIssue.GetType().GetProperty("key").GetValue(createdIssue, null)); #else RemoteIssue ri = new RemoteIssue { project = issue.ProjectKey, type = issue.IssueTypeId.ToString(), priority = issue.PriorityId.ToString(), summary = issue.Summary, description = issue.Description, }; if (issue.Assignee != null) { ri.assignee = issue.Assignee; } if (issue.Components != null && issue.Components.Count > 0) { IEnumerable <JiraNamedEntity> components = getComponents(issue.ProjectKey); // RemoteComponent[] objects = service.getComponents(Token, issue.ProjectKey); List <RemoteComponent> comps = new List <RemoteComponent>(); foreach (string t in issue.Components) { // fixme: a bit problematic part. What if two objects have the same name? // I suppose JiraIssue class has to be fixed, but that would require more problematic // construction of it during server query string tCopy = t; foreach (JiraNamedEntity component in components.Where(component => component.Name.Equals(tCopy))) { comps.Add(new RemoteComponent { id = component.Id.ToString(), name = component.Name }); break; } } ri.components = comps.ToArray(); } List <JiraNamedEntity> versions = getVersions(issue.ProjectKey); // RemoteVersion[] versions = service.getVersions(Token, issue.ProjectKey); if (issue.Versions != null && issue.Versions.Count > 0) { List <RemoteVersion> vers = new List <RemoteVersion>(); foreach (string t in issue.Versions) { // fixme: a bit problematic part. same as for objects string tCopy = t; foreach (JiraNamedEntity version in versions.Where(version => version.Name.Equals(tCopy))) { vers.Add(new RemoteVersion { id = version.Id.ToString(), name = version.Name }); break; } } ri.affectsVersions = vers.ToArray(); } if (issue.FixVersions != null && issue.FixVersions.Count > 0) { List <RemoteVersion> vers = new List <RemoteVersion>(); foreach (string t in issue.FixVersions) { // fixme: a bit problematic part. same as for objects string tCopy = t; foreach (JiraNamedEntity version in versions.Where(version => version.Name.Equals(tCopy))) { vers.Add(new RemoteVersion { id = version.Id.ToString(), name = version.Name }); break; } } ri.fixVersions = vers.ToArray(); } RemoteIssue createdIssue = service.createIssue(Token, ri); return(createdIssue.key); #endif }