Skip to content

Instantly share code, notes, and snippets.

@Qijiang60
Forked from jechlin/components.groovy
Created July 5, 2017 14:09
Show Gist options
  • Save Qijiang60/5340fd011e488d278312ed5926e56b97 to your computer and use it in GitHub Desktop.
Save Qijiang60/5340fd011e488d278312ed5926e56b97 to your computer and use it in GitHub Desktop.
import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
@BaseScript CustomEndpointDelegate delegate
components(httpMethod: "GET") { MultivaluedMap queryParams ->
def projectId = queryParams.getFirst("projectId") as Long
def rt = [:]
def query = queryParams.getFirst("query") as String
def pcm = ComponentAccessor.projectComponentManager
def candidates = pcm.findAllForProject(projectId).findAll {
it.name.contains(query)
}
rt = [
items : candidates.collect { component ->
[
value: component.name,
html : component.name.replaceAll(/(?i)$query/) { "<b>${it}</b>" },
label: component.name,
]
},
total : candidates.size(),
footer: "Choose component... "
]
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