Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Cannot set component of issue in a ScriptRunner post-function

Amir Katz (Outseer)
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 31, 2018

I created the groovy code below to have the post-function set the issue's component. However, I get an error in the call to issue.setComponentObjects():

foo.png

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.project.Project
import com.onresolve.scriptrunner.runner.util.UserMessageUtil

MutableIssue issue = issue
Project project = issue.getProjectObject()

def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def componentFRIproduct = projectComponentManager.findByComponentName(project.getId(), "FRI Product")

if (componentFRIproduct != null) {
UserMessageUtil.info("Post-02: my issue type, setting component...")
issue.setComponentObjects([componentFRIproduct])
}

It seems that issue.setComponentObjects() expects a list of component objects, but projectComponentManager.findByComponentName() returns a ProjectComponent object.

How can I make this work? 

3 answers

Suggest an answer

Log in or Sign up to answer
1 vote
Amir Katz (Outseer)
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 26, 2018

Found the solution: use issue.setComponent().

Here is the full working code:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.project.Project

final String compName = "FRI Product"
final issueTypes = ["FRI Incident", "FRI Service Request"]

MutableIssue issue = issue
Project project = issue.getProjectObject()

def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def componentFRIproduct = projectComponentManager.findByComponentName(project.getId(), compName)
def isMyType = issue.issueType.name in issueTypes

if (isMyType && (componentFRIproduct != null)) {
issue.setComponent([componentFRIproduct])
}
0 votes
Amir Katz (Outseer)
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 31, 2018

Here's a reference post:

https://community.atlassian.com/t5/Answers-Developer-Questions/Post-function-groovy-search-summary-and-according-to-keywords/qaq-p/502061

Which I based my code on. But I suspect that the Jira API has changed and projectComponent and component are not the same now.

I'm using Jira 7.4.1

0 votes
Moses Thomas
Community Champion
May 31, 2018
Amir Katz (Outseer)
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 31, 2018

Thanks Moses, but this is an old post (2013) and it doesn't work for me.

I modified my code to use this:

import com.atlassian.jira.ComponentManager
ComponentManager componentManager = ComponentManager.getInstance()
def component = componentManager.getProjectComponentManager().findByComponentName(project.getId(),'ComponentName')

And I now get error on line 3 (line 18 in my full code):

bar.png

TAGS
AUG Leaders

Atlassian Community Events