Skip to content

Instantly share code, notes, and snippets.

@ItaloQualisoni
Created July 9, 2020 00:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ItaloQualisoni/e663e7f6da3d3893fee37cb188d4cc28 to your computer and use it in GitHub Desktop.
Save ItaloQualisoni/e663e7f6da3d3893fee37cb188d4cc28 to your computer and use it in GitHub Desktop.
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.bc.project.component.ProjectComponent
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
@BaseScript CustomEndpointDelegate delegate
def projectManager = ComponentAccessor.getProjectManager()
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
getComponent(httpMethod: "GET",groups: ["jira-software-users","jira-administrators"]) { MultivaluedMap queryParams, String body ->
def query = queryParams.getFirst("query") as String
def projectKey = queryParams.getFirst("projectKey") as String
assert projectKey != null
def projectSource = projectManager.getProjectObjByKeyIgnoreCase(projectKey)
assert projectSource != null
def componentList = projectComponentManager.findAllForProject(projectSource.getId())
if(query!=null){
componentList = componentList.findAll {it->it.getName().toLowerCase().contains(query.toLowerCase())}
}
def rt = [
items : componentList.collect { ProjectComponent row ->
[
value: row.getName(),
html: "<b>${row.getName()}</b>" ,
label: row.getName(),
]
},
total: componentList.size(),
footer: "Choose component from project ${projectKey}... "
]
return Response.ok(new JsonBuilder(rt).toString()).build();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment