How to get issues of specific type with Java api

Sergii Nozhka February 8, 2018

Hi, I'm newbie to Jira plugin development. I need get all issues for specific project by specifying type.

I've tried JqlQueryBuilder, but it's very slow.

Currently I'm getting list of all issues for project and then filtering them:

Collection<Long> issuesIds = issueManager.getIssueIdsForProject(project.getId());
List<Issue> issues = issueManager.getIssueObjects(issuesIds);

However it's not best solution, since getting all issues for project taking also lots of time (less then JqlQueryBuilder, but still too much).

 

Is there any chance to specify issue type for search to cut unwanted issues?

1 answer

1 accepted

1 vote
Answer accepted
Sergii Nozhka February 26, 2018

After further investigation I've figured out the way how specify issue type and sprint in JqlQueryBuilder query:

 

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CustomField customField = customFieldManager.getCustomFieldObjectByName("Sprint");
SearchService searchProvider = ComponentAccessor.getComponentOfType(SearchService.class);

JqlQueryBuilder builder = JqlQueryBuilder.newBuilder();
builder.where()
.project(project.getId())
.and()
.sub()
.issueType("Story").or().issueType("Bug")
.endsub()
.and()
.customField(customField.getIdAsLong()).eq(sprint.trim());

SearchResults results = searchProvider
.searchOverrideSecurity(user, builder.buildQuery(), PagerFilter.getUnlimitedFilter());

List<Issue> issues = results.getIssues();

As result you're getting all desired issues.

Sergi Dehesa December 11, 2019

In Jira 8, getIssues() method has been replaced with getResults()

Suggest an answer

Log in or Sign up to answer