I was working on script for a Custom Listener (using Jira 7.3 and ScriptRunner 4.3) and noticed that following piece of code works:
import com.atlassian.jira.component.ComponentAccessor
def issueKey = "JIRA-1234";
def issueManager = ComponentAccessor.getIssueManager()
def issueObject = issueManager.getIssueObject("JIRA-1234")
def issueObjectID = issueObject.getId()
But when:
def issueObject = issueManager.getIssueObject("KEY-1234")
is being replaced by:
def issueObject = issueManager.getIssueObject(issueKey)
The code just assigns null to the issueObject variable and code returns following error:
java.lang.NullPointerException: Cannot invoke method getId() on null object
So in other words when the issue key is used directly as parameter for getIssueObject method - the code works. But when variable is used as a parameter - the code doesn't work.
Any idea why this is happening?
In the meantime, I have circumvented this problem using Search Provider (I share workaround in case somebody has similar problem and needs working solution):
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.web.bean.PagerFilter
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser);
def searchProvider = ComponentAccessor.getComponent(SearchProvider);
def authContext = ComponentAccessor.getJiraAuthenticationContext();
def issueKey = "JIRA-1234";
def jqlQuery = jqlQueryParser.parseQuery(issueKey);
def user = authContext.getLoggedInUser();
def results = searchProvider.search(jqlQuery, user, PagerFilter.getUnlimitedFilter());
def issues = results.getIssues();
def issueObject = issues[0];
def issueObjectID = issueObject.getId();
But still would like to know why getIssueObject method is not working with string variable.
Thanks in advance for clarifying this oddity for me!