Hi,
I have script runner script that should create WebLink:
import com.atlassian.jira.ComponentManager import com.atlassian.jira.bc.customfield.CreateValidationResult import com.atlassian.jira.bc.issue.link.RemoteIssueLinkService import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.IssueFieldConstants import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.fields.CustomFieldFactory import com.atlassian.jira.issue.link.RemoteIssueLink import com.atlassian.jira.issue.link.RemoteIssueLinkBuilder import com.atlassian.jira.user.ApplicationUser import com.atlassian.jira.user.util.UserUtil import com.atlassian.jira.web.bean.PagerFilter import com.opensymphony.workflow.InvalidInputException import webwork.action.ActionContext import org.apache.log4j.Category //RemoteIssueLinkService remoteIssueLinkService = ComponentManager.getComponent(RemoteIssueLinkService.class) ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def authContext = ComponentAccessor.getJiraAuthenticationContext() IssueManager issueManager = ComponentAccessor.getIssueManager() SearchService searchService = ComponentAccessor.getComponent(SearchService.class) UserUtil userUtil = ComponentAccessor.getUserUtil() CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager() def jqlSearch = "cf[10502] ~ \"http\"" List<MutableIssue> issues = null SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch) if (parseResult.isValid()) { def searchResult = searchService.search( user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter() ) // Transform issues from DocumentIssueImpl to the "pure" form IssueImpl (some methods don't work with DocumentIssueImps) issues = searchResult.issues.collect {issueManager.getIssueObject(it.id)} } else { log.error("Invalid JQL: " + jqlSearch); } for(currentIssue in issues) { //RemoteIssueLinkService.RemoteIssueLinkListResult links = remoteIssueLinkService.getRemoteIssueLinksForIssue(user, currentIssue) def link = new RemoteIssueLinkBuilder() link.issueId(currentIssue.getId()) def cField = customFieldManager.getCustomFieldObject("customfield_10502") link.url = currentIssue.getCustomFieldValue(cField) link.title = "title" link.summary = "cummary" link.relationship("Remote Link") link.build() def remoteIssueLinkService = ComponentManager.getComponentInstanceOfType(RemoteIssueLinkService.class) def validationResult = remoteIssueLinkService.validateCreate(authContext.getLoggedInUser(), link) //def createResult = remoteIssueLinkService.create(authContext.getLoggedInUser(), validationResult) //RemoteIssueLinkService.RemoteIssueLinkListResult links = remoteIssueLinkService.getRemoteIssueLinksForIssue(authContext.getLoggedInUser(), issue) log.info("Link Collection: " + validationResult.errorCollection) }
But this script fails with:
Error No signature of method: com.atlassian.jira.bc.issue.link.DefaultRemoteIssueLinkService.validateCreate() is applicable for argument types: (com.atlassian.jira.user.DelegatingApplicationUser, com.atlassian.jira.issue.link.RemoteIssueLinkBuilder) values: [Szostak_G(szostak_g), com.atlassian.jira.issue.link.RemoteIssueLinkBuilder@35493b38] Possible solutions: validateCreate(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.link.RemoteIssueLink), validateUpdate(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.link.RemoteIssueLink)
As I understand:
com.atlassian.jira.bc.issue.link.DefaultRemoteIssueLinkService.validateCreate() takes two arguments of type ApplicationUser and RemoteIssueLink
I've tested different combinations from authContext like getUser, getUser() and other functions. But none works.
Community moderators have prevented the ability to post new answers.
It seems the error is in your code
You are passing "RemoteIssueLinkBuilder" object in the "validateCreate() method instead of the "remoteIssueLink" object.
You should change the code to
def validationResult = remoteIssueLinkService.validateCreate(authContext.getLoggedInUser(), link.build())
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.