Hello, I am trying to create a rest endpoint script that retrieves an issue key and then writes this key to a separate text file. The idea is that I have a premade text file with "#issueKey" in the text file, and I want to replace #issueKey with the actual issue key of the selected issue.
What I've done is put a web item into an issue so that a button appears in the "operations-restore" section of the issue, and when that button is pressed on, the rest endpoint script will run, retrieving the issue key and project name. However, I can't seem to retrieve the issue key. Here is my code
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import javax.ws.rs.core.Response
import javax.ws.rs.core.MultivaluedMap
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.util.json.JSONObject
@BaseScript CustomEndpointDelegate delegate
WriteToDocument(httpMethod: "GET") { MultivaluedMap queryParams, String body ->
String issueKey = queryParams.getFirst("issueKey")
String defaultIssueKey = "#issueKey"
File myFile = new File("C:/Users/name/Desktop/scriptrunner.txt")
String fileTest = myFile.text;
fileTest = fileTest.replaceAll(defaultIssueKey, issueKey);
new File ("C:/Users/name/Desktop", "newScriptRunner.txt").withWriter('utf-8') {
writer -> writer.writeLine(fileTest);
}
}
When I run this, I get this error
{"message":null,"stack-trace":"java.lang.NullPointerException\tat Script75$_run_closure1.doCall(Script75.groovy:34)\tat com.onresolve.scriptrunner.runner.rest.common.UserCustomScriptEndpoint$_doEndpoint_closure2.doCall(UserCustomScriptEndpoint.groovy:225)\tat com.onresolve.scriptrunner.runner.rest.common.UserCustomScriptEndpoint$_doEndpoint_closure2.doCall(UserCustomScriptEndpoint.groovy)\tat com.onresolve.scriptrunner.runner.diag.DiagnosticsManagerImpl$DiagnosticsExecutionHandlerImpl$_execute_closure1.doCall(DiagnosticsManagerImpl.groovy:345)\tat com.onresolve.scriptrunner.runner.diag.DiagnosticsManagerImpl$DiagnosticsExecutionHandlerImpl$_execute_closure1.doCall(DiagnosticsManagerImpl.groovy)\tat com.onresolve.scriptrunner.runner.ScriptExecutionRecorder.withRecording(ScriptExecutionRecorder.groovy:13)\tat com.onresolve.scriptrunner.runner.ScriptExecutionRecorder$withRecording$0.call(Unknown Source)\tat com.onresolve.scriptrunner.runner.diag.DiagnosticsManagerImpl$DiagnosticsExecutionHandlerImpl.execute(DiagnosticsManagerImpl.groovy:343)\tat com.onresolve.scriptrunner.runner.rest.common.UserCustomScriptEndpoint.doEndpoint(UserCustomScriptEndpoint.groovy:215)\tat com.onresolve.scriptrunner.runner.rest.common.UserCustomScriptEndpoint.getUserEndpoint(UserCustomScriptEndpoint.groovy:108)","status-code":"INTERNAL_SERVER_ERROR"}
I'm fairly new to ScriptRunner so I'm not even sure how to diagnose this error and I don't have much familiarity with all the imports so I'm kind of stuck here. I would really appreciate if anyone could help me diagnose this. Thanks