You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.
View groupJoin the community to find out what other Atlassian users are discussing, debating and creating.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
To see this feature in action check out our recent dependencies demo here: https /www.youtube.com/watch?v=eQu5VsUqyZA Keeping on top of your dependencies is a key part of ensuring project success....
Connect with like-minded Atlassian users at free events near you!
Find an eventConnect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.
Host an eventYou're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.