No signature of method getProjectRole() is applicable for argument types Long or String

Peter Macdonald February 11, 2016

I am trying to return a Project Role as part of a script that is ultimately going to provide the Project Role Actors for a given Project Role in a specified project. My script keeps getting:

groovy.lang.MissingMethodException: No signature of method: static com.atlassian.jira.security.roles.ProjectRoleManager.getProjectRole() is applicable for argument types: (java.lang.String) values: [Operations Manager]

OR

groovy.lang.MissingMethodException: No signature of method: static com.atlassian.jira.security.roles.ProjectRoleManager.getProjectRole() is applicable for argument types: (java.lang.Integer) values: [10200]

depending on whether I pass the variable roleId or roleName to he function. 

The script currently looks like :

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.security.roles.ProjectRole
import com.atlassian.jira.security.roles.ProjectRoleActors
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def projectManager = ComponentAccessor.getProjectManager()
//def projectRoleManager = ProjectRoleManager.getProjectRoleManager()
//def componentManager = ComponentAccessor.getInstance()
//def optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager.class)
//def customFieldManager = componentManager.getCustomFieldManager()

def cf = customFieldManager.getCustomFieldObjectByName("Affected Project")
def roleProject = issue.getCustomFieldValue(cf)
// added this line
def project = issue.getProjectObject()
//
long roleId = 10200
def roleName = "Operations Manager"
//def project = projectManager.getProjectObjByName(String roleProject)
def projectRole = ProjectRoleManager.getProjectRole(roleId)
// changed roleProject to project
def projectRoleActors = ProjectRoleManager.getProjectRoleActors(projectRole, project)
return roleProject

Can you please explain what I am doing wrong?

2 answers

1 vote
Jeremy Gaudet
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.
February 11, 2016

Maybe it's not static, so you need to instantiate a ProjectRoleManager.  I use this:

ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager

ProjectRole devsRole = projectRoleManager.getProjectRole("Developers")

There's probably a cleaner way to do it, I just pulled that off the net somewhere.

JamieA
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.
February 12, 2016

Use ComponentAccessor.getComponent(...) but otherwise yes that's the problem. You can tell by:

No signature of method: static com.atlassian.jira.security.roles.ProjectRoleManager.getProjectRole() 

 

0 votes
DonPerera August 15, 2019
ProjectRole projectRoles = ComponentAccessor.getComponentOfType(ProjectRoleManager.class).getProjectRole("");

Suggest an answer

Log in or Sign up to answer