I am trying to update Parent Link of issue and set its value from Epic link value. I've found a post where some person were managed to do this, however, I've always get the following error:
WARN [http.RESTClient]: Error parsing 'text/html;charset=UTF-8' response groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object The current character read is '<' with an int value of 60 Unable to determine the current character, it is not a string, number, array, or object line number 11 index number 10 <html>
However, if I insert the url into browser, I'll get the JSON response. My fullAddress variable has the following value:
Jira version is 8.4.1
The whole code looks like this:
import groovy.json.*
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
import groovyx.net.http.RESTClient
import groovyx.net.http.HttpResponseException
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import org.apache.log4j.Logger
def log = Logger.getLogger("com.acme.CreateSubtask")
def issue = ComponentAccessor.getIssueManager().getIssueObject("TS-74")
log.info('Current issue is: ' + issue)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
//def newParentLink = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(0000L) // <- here is ID custom field what u have to update.
def jsonObj = new JsonSlurper().parseText('{ "fields": { "customfield_10976": "GP-259"} }') //customfield_23280 is Parent Link ID
def parentLink = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10976L) // <- id parent link custom field
def userName = "user"
def password = "password"
def fullAddress = "https://onetwo.com/rest/api/2/issue/${issue.key}"
def authString = "${userName}:${password}".getBytes().encodeBase64().toString()
log.info(fullAddress);
log.info("parentLink ${parentLink}")
def client = new RESTClient(fullAddress)
try{
//necessary to overwrite the value of custom field, via rest only update if custom field have value null.
parentLink.updateValue(null, issue, new ModifiedValue(
issue.getCustomFieldValue(parentLink), null),
new DefaultIssueChangeHolder())
client.put(path: fullAddress,
contentType: groovyx.net.http.ContentType.JSON,
body: jsonObj,
headers: [Accept: 'application/json',
Authorization: "Basic ${authString}"]
)
} catch (final HttpResponseException e) {
log.warn e
}
What am I doing wrong?
One thing I can spot is, you are using `fullAddress` while initializing RESTClient and also as `path` parameter.
def client = new RESTClient(fullAddress) // LOOK HERE
try{
//necessary to overwrite the value of custom field, via rest only update if custom field have value null.
parentLink.updateValue(null, issue, new ModifiedValue(
issue.getCustomFieldValue(parentLink), null),
new DefaultIssueChangeHolder())
client.put(path: fullAddress, // LOOK HERE
contentType: groovyx.net.http.ContentType.JSON,
body: jsonObj,
headers: [Accept: 'application/json',
Authorization: "Basic ${authString}"]
)
} catch (final HttpResponseException e) {
log.warn e
}
You can define `fullAddress` and `path` as follows,
def fullAddress = "https://onetwo.com/rest/api/2"
def issuePath = "/issue/${issue.key}"
def client = new RESTClient(fullAddress)
try{
//necessary to overwrite the value of custom field, via rest only update if custom field have value null.
parentLink.updateValue(null, issue, new ModifiedValue(
issue.getCustomFieldValue(parentLink), null),
new DefaultIssueChangeHolder())
client.put(path: issuePath, // LOOK CHANGE HERE
contentType: groovyx.net.http.ContentType.JSON,
body: jsonObj,
headers: [Accept: 'application/json',
Authorization: "Basic ${authString}"]
)
} catch (final HttpResponseException e) {
log.warn e
}
Thank you for your reply!
Could you see this question, please,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you for your reply!
Could you see this question, please,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Sure @zaharovvv_suek_ru
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.