On Jira Server v8.0.2, using ScriptRunner 5.7.2-p5 I tried to use a built-in post function workflow script to add a ticket to active sprint, but it always fails with the following error
java.lang.NullPointerException: Cannot invoke method left() on null object
at com.onresolve.scriptrunner.canned.jira.utils.agile.AddRemoveFromSprint.execute(AddRemoveFromSprint.groovy:260)
at com.onresolve.scriptrunner.canned.jira.utils.agile.AddRemoveFromSprint$execute$2.call(Unknown Source)
at com.onresolve.scriptrunner.canned.jira.workflow.postfunctions.AddRemoveFromSprintProxy.execute(AddRemoveFromSprintProxy.groovy:79)
at com.onresolve.scriptrunner.canned.jira.workflow.postfunctions.AddRemoveFromSprintProxy$execute$1.callCurrent(Unknown Source)
at com.onresolve.scriptrunner.canned.jira.workflow.AbstractWorkflowCannedScript.execute(AbstractWorkflowCannedScript.groovy:18)
at com.onresolve.scriptrunner.canned.jira.workflow.AbstractWorkflowCannedScript$execute$0.call(Unknown Source)
at com.onresolve.scriptrunner.jira.workflow.AbstractScriptWorkflowFunction$_run_closure1.doCall(AbstractScriptWorkflowFunction.groovy:93)
at com.onresolve.scriptrunner.jira.workflow.AbstractScriptWorkflowFunction$_run_closure1.doCall(AbstractScriptWorkflowFunction.groovy)
at com.onresolve.scriptrunner.runner.diag.DiagnosticsManagerImpl$DiagnosticsExecutionHandlerImpl.execute(DiagnosticsManagerImpl.groovy:314)
at com.onresolve.scriptrunner.runner.diag.DiagnosticsExecutionHandler$execute$3.call(Unknown Source)
at com.onresolve.scriptrunner.jira.workflow.AbstractScriptWorkflowFunction.run(AbstractScriptWorkflowFunction.groovy:86)
I'm new to ScriptRunner and I wonder is there any way to see what AddRemoveFromSprint.groovy looks like?
So far following another example which uses `left` method as well, so I assume it has something in common with AddRemoveFromSprint script:
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.greenhopper.service.rapid.view.RapidViewService;
import com.atlassian.greenhopper.service.rapid.RapidViewQueryService;
import com.atlassian.greenhopper.model.rapid.RapidView;
import com.atlassian.greenhopper.service.sprint.Sprint;
import com.atlassian.greenhopper.service.sprint.SprintManager;
def sprintManager = ComponentAccessor.getOSGiComponentInstanceOfType(SprintManager.class);
def rapidViewService = ComponentAccessor.getOSGiComponentInstanceOfType(RapidViewService.class);
def rapidViewQueryService = ComponentAccessor.getOSGiComponentInstanceOfType(RapidViewQueryService.class);
def board_id = 10L;
def sprints = [];
def sprints_two = [];
import com.atlassian.jira.component.ComponentAccessor
def userManager = ComponentAccessor.getUserManager()
def user = userManager.getUserByKey("user.name")
def view = rapidViewService.getRapidView(user, board_id).getValue();
if (view != null)
{
sprints = rapidViewQueryService.getOpenSprintsAndBacklogProjects(user, view).getValue().left();
}
I have confirmed that board_id is correct and matches the one I tried to use in the built-in script as well and above code returns correct sprint.
I will really appreciate any help as well as guidance is it possible to check built-in scripts code somewhere.