I'm trying to sum a custom field through a jql query result using a groovy script, but I get a null pointer order. Can anyone be of help? My code is as follows:
import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.search.SearchException import com.atlassian.jira.web.bean.PagerFilter def jqlSearch = "project = TISFOLIO" //If you are going to use a JIRA version => 7 then you should get the ApplicationUser instead of User, to do that remove the .directoryUser def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def searchService = ComponentAccessor.getComponentOfType(SearchService.class) SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch) def value = 0 def customFieldManager = ComponentAccessor.getCustomFieldManager() def myCustomField = customFieldManager.getCustomFieldObjectByName("customfield_13312") if (parseResult.isValid()) { try { def results = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()) def issues = results.getIssues() issues.each { if (it.getCustomFieldValue(myCustomField)) value += (double) it.getCustomFieldValue(myCustomField) } } catch (SearchException e) { e.printStackTrace() } } else { log.warn("Invalid query") return null } return value
I am not sure what namely caused NullPointerExeption, usually it happens when there is no value for caustom field. I add hull check and refactored your code:
import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.search.SearchException import com.atlassian.jira.web.bean.PagerFilter //If you are going to use a JIRA version => 7 then you should get the ApplicationUser instead of User, to do that remove the .directoryUser def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def searchService = ComponentAccessor.getComponentOfType(SearchService.class) SearchService.ParseResult parseResult = searchService.parseQuery(user, "project = TISFOLIO") double value = 0 if (parseResult.isValid()) { try { CustomField myCustomField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("customfield_13312") searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()) .getIssues().each { if (it.getCustomFieldValue(myCustomField) != null) // value += (double) it.getCustomFieldValue(myCustomField) } } catch (SearchException e) { e.printStackTrace() } } else { log.warn("Invalid query") return null } return value
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.