Java API
From 1.7.7.1 for JIRA up to 9.16
From 1.7.9 for JIRA 9.17+
Please find an example ScriptRunner code below which showcase usage of 3 managers LinkTypeManager, PriorityManager and ResolutionManager
with the common following methods:
public Collection<Project> getProjects(Integer issueTypeSchemeId);
public Boolean addSchemeToProject(Integer issueTypeSchemeId, Long projectId)
public void removeSchemesFromProject(Long projectId)
and dedicated methods for each manager:
LinkTypeManager
public Collection<IdName> getLinks(Long projectId, Long issueTypeId);
PriorityManager
public Collection<IdName> getPriorities(Long projectId, Long issueTypeId);
ResolutionManager
public Collection<IdName> getResolutions(Long projectId, Long issueTypeId);
where IdName
is defined as follows:
public class IdName {
public String id;
public String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Java Example
import java.lang.StringBuilder
import com.develocenter.jira.extschemes.manager.export.ResolutionManager
import com.develocenter.jira.extschemes.manager.export.PriorityManager
import com.develocenter.jira.extschemes.manager.export.LinkTypeManager
import com.develocenter.jira.extschemes.manager.export.IdName
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.atlassian.jira.project.Project
@WithPlugin("com.develocenter.jira.links-scheme")
@PluginModule LinkTypeManager linkTypeManager
@PluginModule PriorityManager priorityManager
@PluginModule ResolutionManager resolutionManager
/* Find on /secure/admin/ViewIssueTypeLinkSchemes.jspa - hoover on(go to) name link and check schemeId in a link*/
Integer issueTypeLinkTypeSchemeId = new Integer(3);
/* Find on /secure/admin/ViewIssueTypeExtendedPrioritySchemes.jspa - hoover on(go to) name link and check schemeId in a link*/
Integer issueTypePrioritySchemeId = new Integer(3);
/* Find on /secure/admin/ViewIssueTypeResolutionSchemes.jspa - hoover on(go to) name link and check schemeId in a link*/
Integer issueTypeResolutionSchemeId = new Integer(3);
Long projectId = new Long(10301);
Long issueTypeId = new Long(10002);
StringBuilder stringBuilder = new StringBuilder();
/* Links Exampe*/
Collection<Project> projects = linkTypeManager.getProjects(issueTypeLinkTypeSchemeId);
stringBuilder.append("<b>Links Exampe</b><br>"+projects.toString()+"<br><br>");
linkTypeManager.addSchemeToProject(issueTypeLinkTypeSchemeId,projectId);
projects = linkTypeManager.getProjects(issueTypeLinkTypeSchemeId);
stringBuilder.append(projects.toString()+"<br><br>");
Collection<IdName> allowedLinkTypes = linkTypeManager.getLinks(projectId, issueTypeId);
stringBuilder.append("Link Types:<br>");
allowedLinkTypes.stream().forEach(linkType -> {
stringBuilder.append(linkType.getName()+" ("+linkType.getId()+")<br>")}
);
stringBuilder.append("<br>");
linkTypeManager.removeSchemesFromProject(projectId);
projects = linkTypeManager.getProjects(issueTypeLinkTypeSchemeId);
stringBuilder.append(projects.toString()+"<br><br>");
/* Priority Example*/
projects = priorityManager.getProjects(issueTypePrioritySchemeId);
stringBuilder.append("<b>Priority Example</b><br>"+projects.toString()+"<br><br>");
priorityManager.addSchemeToProject(issueTypePrioritySchemeId,projectId);
projects = priorityManager.getProjects(issueTypePrioritySchemeId);
stringBuilder.append(projects.toString()+"<br><br>");
Collection<IdName> allowedPrioritires = priorityManager.getPriorities(projectId, issueTypeId);
stringBuilder.append("Priorities:<br>");
allowedPrioritires.stream().forEach(priority -> {
stringBuilder.append(priority.getName()+" ("+priority.getId()+")<br>")}
);
stringBuilder.append("<br>");
priorityManager.removeSchemesFromProject(projectId);
projects = priorityManager.getProjects(issueTypePrioritySchemeId);
stringBuilder.append(projects.toString()+"<br><br>");
/* Resolution Example*/
projects = resolutionManager.getProjects(issueTypeResolutionSchemeId);
stringBuilder.append("<b>Resolution Example</b><br>"+projects.toString()+"<br><br>");
resolutionManager.addSchemeToProject(issueTypeResolutionSchemeId,projectId);
projects = resolutionManager.getProjects(issueTypeResolutionSchemeId);
stringBuilder.append(projects.toString()+"<br><br>");
Collection<IdName> allowedResolutions = resolutionManager.getResolutions(projectId, issueTypeId);
stringBuilder.append("Resolution:<br>");
allowedResolutions.stream().forEach(resolution -> {
stringBuilder.append(resolution.getName()+" ("+resolution.getId()+")<br>")}
);
stringBuilder.append("<br>");
resolutionManager.removeSchemesFromProject(projectId);
projects = resolutionManager.getProjects(issueTypeResolutionSchemeId);
stringBuilder.append(projects.toString()+"<br><br>");
Example Result
[Project: SC2, Project: SD]
[Project: SC2, Project: SD, Project: SC]
Link Types:
clones (null)
is blocked by (null)
is cloned by (null)
[Project: SC2, Project: SD]
Priority Example
[Project: KAN2]
[Project: KAN2, Project: SC]
Priorities:
High (2)
Low (4)
Blocker (10100)
Minor (10101)
[Project: KAN2]
Resolution Example
[Project: TEST]
[Project: TEST, Project: SC]
Resolution:
Done (10000)
Won't Fix (10001)
Rejected (10300)
[Project: TEST]