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);public IdName getScheme(Long projectId);public Collection<IdName> getAllIssueTypeSchemes();public Collection<IdNameIssueType> getIssueTypeSchemeConfiguration(Integer issueTypeSchemeId);public void configureDefaultScheme(Integer issueTypeSchemeId, Integer schemeId);public void configureScheme(Integer issueTypeSchemeId, Integer schemeId, Long issueTypeId);
This is important that getScheme method returns an empty IdName object without id and name set if there is no Issue Type Scheme attached to a project.
Aslo a dedicated methods for each manager:
LinkTypeManagerpublic Collection<IdName> getLinks(Long projectId, Long issueTypeId);
PriorityManagerpublic Collection<IdName> getPriorities(Long projectId, Long issueTypeId);
ResolutionManagerpublic 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;
}
}and where IdNameIssueType is defined as follows:
public class IdNameIssueType {
public String id;
public String name;
public String issueTypeId;
public String issueTypeName;
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;
}
public String getIssueTypeId()
{
return issueTypeId;
}
public void setIssueTypeId(String issueTypeId)
{
this.issueTypeId = issueTypeId;
}
public String getIssueTypeName()
{
return issueTypeName;
}
public void setIssueTypeName(String issueTypeName)
{
this.issueTypeName = issueTypeName;
}
}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.CreateSubtaskManager
import com.develocenter.jira.extschemes.manager.export.IdName
import com.develocenter.jira.extschemes.manager.export.IdNameIssueType
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(2);
/* Find on /secure/admin/ViewIssueTypeExtendedPrioritySchemes.jspa - hoover on(go to) name link and check schemeId in a link*/
Integer issueTypePrioritySchemeId = new Integer(2);
/* Find on /secure/admin/ViewIssueTypeResolutionSchemes.jspa - hoover on(go to) name link and check schemeId in a link*/
Integer issueTypeResolutionSchemeId = new Integer(2);
Long projectId = new Long(10006);
Long issueTypeId = new Long(10002);
StringBuilder stringBuilder = new StringBuilder();
/* Links Example*/
Collection<IdName> allIssueTypeLinkSchemes = linkTypeManager.getAllIssueTypeSchemes()
stringBuilder.append("<b>Links Example</b><br>List of all Issue Type Link Schemes:<br>");
allIssueTypeLinkSchemes.stream().forEach(issueTypeLinkScheme -> {
stringBuilder.append("- "+issueTypeLinkScheme.getName()+" ("+issueTypeLinkScheme.getId()+")<br>")}
);
stringBuilder.append("<br>");
Collection<Project> projects = linkTypeManager.getProjects(issueTypeLinkTypeSchemeId);
stringBuilder.append("List of Projects assigned to scheme:<br>"+projects.toString()+"<br><br>");
linkTypeManager.addSchemeToProject(issueTypeLinkTypeSchemeId,projectId);
projects = linkTypeManager.getProjects(issueTypeLinkTypeSchemeId);
stringBuilder.append("Assigning new project to a scheme and showing updated list:<br>"+projects.toString()+"<br><br>");
Collection<IdName> allowedLinkTypes = linkTypeManager.getLinks(projectId, issueTypeId);
stringBuilder.append("Link Types available for already assigned project and choosen issue type (linkType.getId() is null):<br>");
allowedLinkTypes.stream().forEach(linkType -> {
stringBuilder.append(linkType.getName()+" ("+linkType.getId()+")<br>")}
);
stringBuilder.append("<br>");
IdName itLinkTypeScheme = linkTypeManager.getScheme(projectId);
stringBuilder.append("Getting a scheme from project:<br>"+itLinkTypeScheme.getName()+" ("+itLinkTypeScheme.getId()+")"+"<br><br>");
linkTypeManager.removeSchemesFromProject(projectId);
projects = linkTypeManager.getProjects(issueTypeLinkTypeSchemeId);
stringBuilder.append("Removing newly assigned scheme from a project and showing updated list:<br>"+projects.toString()+"<br><br>");
Collection<IdNameIssueType> issueTypeLinkSchemeConfiguration = linkTypeManager.getIssueTypeSchemeConfiguration(issueTypeLinkTypeSchemeId);
stringBuilder.append("Isuse Type Link Scheme Configuration:<br>");
issueTypeLinkSchemeConfiguration.stream().forEach(configurationItem -> {
stringBuilder.append("- "+configurationItem.getName()+" ("+configurationItem.getId()+") for "+configurationItem.getIssueTypeName()+" ("+configurationItem.getIssueTypeId()+")<br>")}
);
stringBuilder.append("<br>");
linkTypeManager.configureDefaultScheme(issueTypeLinkTypeSchemeId,2);
linkTypeManager.configureScheme(issueTypeLinkTypeSchemeId, 2, 10000);
issueTypeLinkSchemeConfiguration = linkTypeManager.getIssueTypeSchemeConfiguration(issueTypeLinkTypeSchemeId);
stringBuilder.append("Isuse Type Link Scheme Configuration:<br>");
issueTypeLinkSchemeConfiguration.stream().forEach(configurationItem -> {
stringBuilder.append("- "+configurationItem.getName()+" ("+configurationItem.getId()+") for "+configurationItem.getIssueTypeName()+" ("+configurationItem.getIssueTypeId()+")<br>")}
);
stringBuilder.append("<br>");
linkTypeManager.configureDefaultScheme(issueTypeLinkTypeSchemeId,1);
linkTypeManager.configureScheme(issueTypeLinkTypeSchemeId, 4, 10000);
/* Priority Example*/
Collection<IdName> allIssueTypePrioritySchemes = priorityManager.getAllIssueTypeSchemes()
stringBuilder.append("<b>Priority Example</b><br>List of all Issue Type Priority Schemes:<br>");
allIssueTypePrioritySchemes.stream().forEach(issueTypePriorityScheme -> {
stringBuilder.append("- "+issueTypePriorityScheme.getName()+" ("+issueTypePriorityScheme.getId()+")<br>")}
);
stringBuilder.append("<br>");
projects = priorityManager.getProjects(issueTypePrioritySchemeId);
stringBuilder.append("List of Projects assigned to scheme:<br>"+projects.toString()+"<br><br>");
priorityManager.addSchemeToProject(issueTypePrioritySchemeId,projectId);
projects = priorityManager.getProjects(issueTypePrioritySchemeId);
stringBuilder.append("Assigning new project to a scheme and showing updated list:<br>"+projects.toString()+"<br><br>");
Collection<IdName> allowedPrioritires = priorityManager.getPriorities(projectId, issueTypeId);
stringBuilder.append("Priorities available for already assigned project and choosen issue type:<br>");
allowedPrioritires.stream().forEach(priority -> {
stringBuilder.append(priority.getName()+" ("+priority.getId()+")<br>")}
);
stringBuilder.append("<br>");
IdName itPriorityScheme = priorityManager.getScheme(projectId);
stringBuilder.append("Getting a scheme from project:<br>"+itPriorityScheme.getName()+" ("+itPriorityScheme.getId()+")"+"<br><br>");
priorityManager.removeSchemesFromProject(projectId);
projects = priorityManager.getProjects(issueTypePrioritySchemeId);
stringBuilder.append("Removing newly assigned scheme from a project and showing updated list:<br>"+projects.toString()+"<br><br>");
Collection<IdNameIssueType> issueTypePrioritySchemeConfiguration = priorityManager.getIssueTypeSchemeConfiguration(issueTypePrioritySchemeId);
stringBuilder.append("Isuse Type Priority Scheme Configuration:<br>");
issueTypePrioritySchemeConfiguration.stream().forEach(configurationItem -> {
stringBuilder.append("- "+configurationItem.getName()+" ("+configurationItem.getId()+") for "+configurationItem.getIssueTypeName()+" ("+configurationItem.getIssueTypeId()+")<br>")}
);
stringBuilder.append("<br>");
priorityManager.configureDefaultScheme(issueTypePrioritySchemeId,2);
priorityManager.configureScheme(issueTypePrioritySchemeId, 1, 10006);
issueTypePrioritySchemeConfiguration = priorityManager.getIssueTypeSchemeConfiguration(issueTypePrioritySchemeId);
stringBuilder.append("Isuse Type Priority Scheme Configuration:<br>");
issueTypePrioritySchemeConfiguration.stream().forEach(configurationItem -> {
stringBuilder.append("- "+configurationItem.getName()+" ("+configurationItem.getId()+") for "+configurationItem.getIssueTypeName()+" ("+configurationItem.getIssueTypeId()+")<br>")}
);
stringBuilder.append("<br>");
priorityManager.configureDefaultScheme(issueTypePrioritySchemeId,1);
priorityManager.configureScheme(issueTypePrioritySchemeId, 2, 10006);
/* Resolution Example*/
Collection<IdName> allIssueTypeResolutionSchemes = resolutionManager.getAllIssueTypeSchemes()
stringBuilder.append("<b>Resolution Example</b><br>List of all Issue Type Resolution Schemes:<br>");
allIssueTypeResolutionSchemes.stream().forEach(issueTypeResolutionScheme -> {
stringBuilder.append("- "+issueTypeResolutionScheme.getName()+" ("+issueTypeResolutionScheme.getId()+")<br>")}
);
stringBuilder.append("<br>");
projects = resolutionManager.getProjects(issueTypeResolutionSchemeId);
stringBuilder.append("List of Projects assigned to scheme:<br>"+projects.toString()+"<br><br>");
resolutionManager.addSchemeToProject(issueTypeResolutionSchemeId,projectId);
projects = resolutionManager.getProjects(issueTypeResolutionSchemeId);
stringBuilder.append("Assigning new project to a scheme and showing updated list:<br>"+projects.toString()+"<br><br>");
Collection<IdName> allowedResolutions = resolutionManager.getResolutions(projectId, issueTypeId);
stringBuilder.append("Resolution available for already assigned project and choosen issue type:<br>");
allowedResolutions.stream().forEach(resolution -> {
stringBuilder.append(resolution.getName()+" ("+resolution.getId()+")<br>")}
);
stringBuilder.append("<br>");
IdName itResolutionScheme = resolutionManager.getScheme(projectId);
stringBuilder.append("Getting a scheme from project:<br>"+itResolutionScheme.getName()+" ("+itResolutionScheme.getId()+")"+"<br><br>");
resolutionManager.removeSchemesFromProject(projectId);
projects = resolutionManager.getProjects(issueTypeResolutionSchemeId);
stringBuilder.append("Removing newly assigned scheme from a project and showing updated list:<br>"+projects.toString()+"<br><br>");
Collection<IdNameIssueType> issueTypeResolutionSchemeConfiguration = resolutionManager.getIssueTypeSchemeConfiguration(issueTypeResolutionSchemeId);
stringBuilder.append("Isuse Type Resolution Scheme Configuration:<br>");
issueTypeResolutionSchemeConfiguration.stream().forEach(configurationItem -> {
stringBuilder.append("- "+configurationItem.getName()+" ("+configurationItem.getId()+") for "+configurationItem.getIssueTypeName()+" ("+configurationItem.getIssueTypeId()+")<br>")}
);
stringBuilder.append("<br>");
resolutionManager.configureDefaultScheme(issueTypeResolutionSchemeId,3);
resolutionManager.configureScheme(issueTypeResolutionSchemeId, 1, 10006);
issueTypeResolutionSchemeConfiguration = resolutionManager.getIssueTypeSchemeConfiguration(issueTypeResolutionSchemeId);
stringBuilder.append("Isuse Type Resolution Scheme Configuration:<br>");
issueTypeResolutionSchemeConfiguration.stream().forEach(configurationItem -> {
stringBuilder.append("- "+configurationItem.getName()+" ("+configurationItem.getId()+") for "+configurationItem.getIssueTypeName()+" ("+configurationItem.getIssueTypeId()+")<br>")}
);
resolutionManager.configureDefaultScheme(issueTypeResolutionSchemeId,1);
resolutionManager.configureScheme(issueTypeResolutionSchemeId, 2, 10006);
stringBuilder.append("<br>");
Example Result
Links Example
List of all Issue Type Link Schemes:
- Copy of Copy of Scheme (4)
- Default Issue Type Link Scheme (1)
- Magic Scheme (2)
List of Projects assigned to scheme:
[]
Assigning new project to a scheme and showing updated list:
[Project: T3]
Link Types available for already assigned project and choosen issue type (linkType.getId() is null):
blocks (null)
causes (null)
is blocked by (null)
is caused by (null)
relates to (null)
Getting a scheme from project:
Magic Scheme (2)
Removing newly assigned scheme from a project and showing updated list:
[]
Isuse Type Link Scheme Configuration:
- Default Link Scheme (1) for null (null)
- 323 Copy of Copy of My Scheme (4) for Epic (10000)
- Default Link Scheme (1) for Bug (10006)
- 323 Copy of Copy of My Scheme (4) for Subtask (10003)
Isuse Type Link Scheme Configuration:
- My Links (2) for null (null)
- My Links (2) for Epic (10000)
- Default Link Scheme (1) for Bug (10006)
- 323 Copy of Copy of My Scheme (4) for Subtask (10003)
Priority Example
List of all Issue Type Priority Schemes:
- Copy of Great Priorities (3)
- Default Issue Type Priority Scheme (1)
- Fixed Scheme (2)
List of Projects assigned to scheme:
[]
Assigning new project to a scheme and showing updated list:
[Project: T3]
Priorities available for already assigned project and choosen issue type:
High (2)
Low (4)
Blocker (10100)
Getting a scheme from project:
Fixed Scheme (2)
Removing newly assigned scheme from a project and showing updated list:
[]
Isuse Type Priority Scheme Configuration:
- Default Priority Scheme (1) for Error (10004)
- Copy of Support (3) for Support (10100)
- Default Priority Scheme (1) for null (null)
- Some Scheme (2) for Bug (10006)
Isuse Type Priority Scheme Configuration:
- Default Priority Scheme (1) for Error (10004)
- Copy of Support (3) for Support (10100)
- Some Scheme (2) for null (null)
- Default Priority Scheme (1) for Bug (10006)
Resolution Example
List of all Issue Type Resolution Schemes:
- Copy of Max (3)
- Max (2)
- Default Issue Type Resolution Scheme (1)
List of Projects assigned to scheme:
[]
Assigning new project to a scheme and showing updated list:
[Project: T3]
Resolution available for already assigned project and choosen issue type:
Fixed (10000)
Wont Fix (10001)
Done (10005)
Rejected (10100)
Getting a scheme from project:
Max (2)
Removing newly assigned scheme from a project and showing updated list:
[]
Isuse Type Resolution Scheme Configuration:
- Default Resolution Scheme (1) for null (null)
- Getting Better Results (2) for Bug (10006)
Isuse Type Resolution Scheme Configuration:
- Copy of Getting Better Results (3) for null (null)
- Default Resolution Scheme (1) for Bug (10006)