xl8bot
November 4, 2024, 7:41am
1
Originally asked by Jasmin on 24 February 2022 (original question)
Hi, I found a script example for issuelinktype mapping in this community for Jira cloud. I want to map specific issuelinktypes from service desk to default Jira software issuelinktypes.
This is my incoming script:
def issueLinkTypeMapping = [
// replace the mapping below accordingly "Remote side" : "Local side"
"Blocks" : "Relates"
]
issue.issueLinks = replica.issueLinks.collect { issueLink ->
issueLink.linkTypeName = (issueLinkTypeMapping[issueLink.linkTypeName])? issueLinkTypeMapping[issueLink.linkTypeName] : issueLink.linkTypeName
}
Unfortunately, I get an exception:
class java.lang.String cannot be cast to class com.exalate.basic.domain.hubobject.v1.BasicHubIssueLink (java.lang.String is in module java.base of loader 'bootstrap'; com.exalate.basic.domain.hubobject.v1.BasicHubIssueLink is in unnamed module of loader 'app')
Any ideas?
Best, Jasmin
xl8bot
November 4, 2024, 7:41am
2
Answer by Sim Hua Soon on 03 March 2022
Hi Jasmin,
Let me try this question.
I guess the root cause is you are returning a list of issuelink type names instead of modifying the issuelink type names
import groovy.json.JsonSlurper;
def jsonSlurper = new JsonSlurper();
def originalList = jsonSlurper.parseText('[{"app":"Gauge Gadgets", "platform":"jira"}, {"app":"Out of Office", "platform": "jira"}]');
log.warn("---- original List ------")
log.warn(originalList);
//[{app=Gauge Gadgets, platform=jira}, {app=Out of Office, platform=jira}]
def partialList = [];
partialList = originalList.collect {element -> element.platform = 'Jira'};
log.warn(partialList);
//This will return
//[Jira, Jira]
def fullList = [];
fullList = originalList.collect { Map<String, Object> element ->
return [
"app": element.app as String,
"platform": "Jira" as String
]
};
log.warn(fullList)
//this method will return this
//[{app=Gauge Gadgets, platform=Jira}, {app=Out of Office, platform=Jira}]
You probably need to return something like this (and modify linkTypeName)
replica.issueLinks.collect { jLink ->
return [
"id" : jLink.id as String,
"linkTypeName" : jLink.issueLinkType.name as String,
"otherIssueId" : otherIssueId as String,
"otherIssueKey" : otherIssue.key,
"isOutward" : isOutward,
"linkTypeStyle" : jLink.issueLinkType.style
]}