# curl -v -u admin:admin 'http://localhost:9000/api/issues/search?statuses=OPEN,RESOLVED'
#
def search
- render_result_issues(Api.issues.find(params))
- end
+ results = Api.issues.find(params)
+ hash = {
+ :maxResultsReached => results.maxResultsReached,
+ :paging => paging_to_hash(results.paging),
+ :issues => results.issues.map { |issue| Issue.to_hash(issue) },
+ :components => results.components.map { |component| component_to_hash(component) },
+ :projects => results.projects.map { |project| component_to_hash(project) },
+ :rules => results.rules.map { |rule| Rule.to_hash(rule) },
+ :users => results.users.map { |user| User.to_hash(user) }
+ }
+ hash[:actionPlans] = results.actionPlans.map { |plan| ActionPlan.to_hash(plan) } if results.actionPlans.size>0
- # Load existing filter
- # GET /api/issues/filter?<filter id>
- #
- # -- Example
- # curl -v -u admin:admin 'http://localhost:9000/api/issues/filter?filter=20'
- #
- # since 3.7
- #
- def filter
- require_parameters :filter
- render_result_issues(Internal.issues.execute(params[:filter].to_i))
+ respond_to do |format|
+ format.json { render :json => jsonp(hash) }
+ format.xml { render :xml => hash.to_xml(:skip_types => true, :root => 'issues') }
+ end
end
#
end
end
- def render_result_issues(results)
- hash = {
- :maxResultsReached => results.maxResultsReached,
- :paging => paging_to_hash(results.paging),
- :issues => results.issues.map { |issue| Issue.to_hash(issue) },
- :components => results.components.map { |component| component_to_hash(component) },
- :projects => results.projects.map { |project| component_to_hash(project) },
- :rules => results.rules.map { |rule| Rule.to_hash(rule) },
- :users => results.users.map { |user| User.to_hash(user) }
- }
- hash[:actionPlans] = results.actionPlans.map { |plan| ActionPlan.to_hash(plan) } if results.actionPlans.size>0
- respond_to do |format|
- format.json { render :json => jsonp(hash) }
- format.xml { render :xml => hash.to_xml(:skip_types => true, :root => 'issues') }
- end
- end
-
def component_to_hash(component)
hash = {
:key => component.key,
import org.sonar.wsclient.issue.*;
import javax.annotation.Nullable;
-
import java.util.List;
import java.util.Map;
this.parser = new IssueJsonParser();
}
- @Override
public Issues find(IssueQuery query) {
String json = requestFactory.get(SEARCH_URL, query.urlParams());
return parser.parseIssues(json);
}
- @Override
- public Issues filter(String filterId) {
- Map<String, Object> queryParams = EncodingUtils.toMap("filter", filterId);
- String json = requestFactory.get("/api/issues/filter", queryParams);
- return parser.parseIssues(json);
- }
-
@Override
public Issue create(NewIssue newIssue) {
String json = requestFactory.post("/api/issues/create", newIssue.urlParams());
import org.sonar.wsclient.base.HttpException;
import org.sonar.wsclient.internal.HttpRequestFactory;
import org.sonar.wsclient.issue.*;
+import org.sonar.wsclient.issue.internal.DefaultIssueClient;
import java.util.List;
}
}
- @Test
- public void should_get_issue_filter() {
- HttpRequestFactory requestFactory = new HttpRequestFactory(httpServer.url());
- httpServer.doReturnBody("{\"issues\": [{\"key\": \"ABCDE\"}]}");
-
- IssueClient client = new DefaultIssueClient(requestFactory);
- Issues issues = client.filter("5");
-
- assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/filter?filter=5");
- assertThat(issues.list()).hasSize(1);
- assertThat(issues.list().get(0).key()).isEqualTo("ABCDE");
- }
-
@Test
public void should_set_severity() {
HttpRequestFactory requestFactory = new HttpRequestFactory(httpServer.url());