Java API

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:

  • 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; } }

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)