Hi,
I am trying to set a component (using script runner listener) baed on the issue type.
so when issue is created , if issue type is x then set up the component to 1
if issue type is y then set the components to 2 and 3
i have the following code so far:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.customfields.CustomFieldUtils
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.IssueInputParametersImpl
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.bc.project.component.ProjectComponentManager
def issue = event.issue as Issue
def project = issue.getProjectObject()
def componentManager = ComponentAccessor.projectComponentManager
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def component1 = projectComponentManager.findByComponentName(project.getId(), "1")
if(issue.issueType.name == "x"){
issue.setComponents([component1])
}
and I am getting an error "cannot find matching method for issue.set.Components in
<com.atlassian.jira.bc.project.component.ProjectComponentManager>
can anyone assist please? I am using Jira software 7.3, in house solution
Thnaks
Hi Ronen,
I haven't tested it. Put this in a post-function in the creation in the first place and use a store post function (out of the box) just in case it doesn't work:
import com.atlassian.jira.component.ComponentAccessor
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
def component1 = projectComponentManager.findByComponentNameCaseInSensitive('component name')
def component2 = projectComponentManager.findByComponentNameCaseInSensitive('component name')
// whatever you need
if (issue.issueType.name == 'issuetype name') {
issue.setComponent(component1)
} else if (issue.issueType.name == 'issuetype name') {
issue.setComponent(component2)
}
// whatever you need
Tell us if it worked!
Hi Cristian,
I tested and it works!
Thanks so much.
though I do have another question.
I am trying to assign 2 components to 1 issue type:
if (issue.issueType.name == 'issuetype name') {
issue.setComponent(component1)
issue.setComponent(component2)
but only the second one is being added (because I believe it setComponent)
do you know how I can add another component? maybe:
issue.setComponent(component1, component2)
thanks,
Ronen
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It works as a collection, so you need to add the value in the same variable. Try something like this:
def collection1 = projectComponentManager.findByComponentNameCaseInSensitive('component name')
collection1.add(projectComponentManager.findByComponentNameCaseInSensitive('component name'))
I think it should be enough.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
tested and failed, but with a little research I was able to debug:
def collection1 = projectComponentManager.findByComponentNameCaseInSensitive('component name')
collection1.addAll(projectComponentManager.findByComponentNameCaseInSensitive('component name'))
"addAll" resolved the issue
Tested successfully!!!
Thank you so much Cristian - big help!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, Could I use this code if I wanted to base the Component on an issue summary?
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.