</foreach>
and i.resource_id=project_component.id
</if>
- <if test="keys != null">
+ <if test="issueKeys != null">
and i.kee in
- <foreach item="key" index="index" collection="keys" open="(" separator="," close=")">#{key}
+ <foreach item="key" index="index" collection="issueKeys" open="(" separator="," close=")">#{key}
</foreach>
</if>
<if test="severities != null">
import org.sonar.api.issue.IssueQuery;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.utils.DateUtils;
-import org.sonar.core.issue.db.IssueDao;
-import org.sonar.core.issue.db.IssueDto;
import org.sonar.core.persistence.AbstractDaoTestCase;
import java.util.Collection;
setupData("shared", "should_select_by_query");
IssueQuery query = IssueQuery.builder()
- .keys(newArrayList("ABCDE"))
+ .issueKeys(newArrayList("ABCDE"))
.userLogins(newArrayList("arthur", "otherguy"))
.assignees(newArrayList("perceval", "otherguy"))
.components(newArrayList("Action.java"))
*/
public class IssueQuery {
- private final Collection<String> keys;
+ private final Collection<String> issueKeys;
private final Collection<String> severities;
private final Collection<String> statuses;
private final Collection<String> resolutions;
private final int pageIndex;
private IssueQuery(Builder builder) {
- this.keys = builder.keys;
+ this.issueKeys = builder.issueKeys;
this.severities = builder.severities;
this.statuses = builder.statuses;
this.resolutions = builder.resolutions;
this.pageIndex = builder.pageIndex;
}
- public Collection<String> keys() {
- return keys;
+ public Collection<String> issueKeys() {
+ return issueKeys;
}
public Collection<String> severities() {
private static final int MAX_PAGE_SIZE = 1000;
private static final int DEFAULT_PAGE_INDEX = 1;
- private Collection<String> keys;
+ private Collection<String> issueKeys;
private Collection<String> severities;
private Collection<String> statuses;
private Collection<String> resolutions;
private Builder() {
}
- public Builder keys(Collection<String> l) {
- this.keys = l;
+ public Builder issueKeys(Collection<String> l) {
+ this.issueKeys = l;
return this;
}
@Test
public void should_build_query() throws Exception {
IssueQuery query = IssueQuery.builder()
- .keys(Lists.newArrayList("ABCDE"))
+ .issueKeys(Lists.newArrayList("ABCDE"))
.severities(Lists.newArrayList(Severity.BLOCKER))
.statuses(Lists.newArrayList(Issue.STATUS_RESOLVED))
.resolutions(Lists.newArrayList(Issue.RESOLUTION_FALSE_POSITIVE))
.pageSize(10)
.pageIndex(2)
.build();
- assertThat(query.keys()).containsOnly("ABCDE");
+ assertThat(query.issueKeys()).containsOnly("ABCDE");
assertThat(query.severities()).containsOnly(Severity.BLOCKER);
assertThat(query.statuses()).containsOnly(Issue.STATUS_RESOLVED);
assertThat(query.resolutions()).containsOnly(Issue.RESOLUTION_FALSE_POSITIVE);
import org.sonar.server.platform.UserSession;
import javax.annotation.Nullable;
+
import java.util.Collection;
import java.util.Date;
import java.util.List;
IssueQuery toQuery(Map<String, Object> props) {
IssueQuery.Builder builder = IssueQuery.builder();
- builder.keys(toStrings(props.get("keys")));
+ builder.issueKeys(toStrings(props.get("issueKeys")));
builder.severities(toStrings(props.get("severities")));
builder.statuses(toStrings(props.get("statuses")));
builder.resolutions(toStrings(props.get("resolutions")));
# Used for the permalink, e.g. http://localhost:9000/issue/view/1
def view
- issue_result = find_issues({'keys' => params[:id]})
+ issue_result = find_issues({'issueKeys' => params[:id]})
if issue_result.issues.length == 1
@issue = issue_result.issues[0]
@rule = issue_result.rule(@issue)
@Test
public void test_find() throws Exception {
- facade.find(ImmutableMap.<String, Object>of("keys", Lists.newArrayList("ABCDE")));
+ facade.find(ImmutableMap.<String, Object>of("issueKeys", Lists.newArrayList("ABCDE")));
verify(finder).find(argThat(new ArgumentMatcher<IssueQuery>() {
@Override
public boolean matches(Object o) {
- return ((IssueQuery) o).keys().contains("ABCDE");
+ return ((IssueQuery) o).issueKeys().contains("ABCDE");
}
}), anyInt(), eq(UserRole.CODEVIEWER));
}
@Test
public void should_create_query_from_parameters() {
Map<String, Object> map = newHashMap();
- map.put("keys", newArrayList("ABCDE1234"));
+ map.put("issueKeys", newArrayList("ABCDE1234"));
map.put("severities", newArrayList("MAJOR", "MINOR"));
map.put("statuses", newArrayList("CLOSED"));
map.put("resolutions", newArrayList("FALSE-POSITIVE"));
map.put("pageIndex", 50);
IssueQuery query = new JRubyApiIssues(finder).toQuery(map);
- assertThat(query.keys()).containsOnly("ABCDE1234");
+ assertThat(query.issueKeys()).containsOnly("ABCDE1234");
assertThat(query.severities()).containsOnly("MAJOR", "MINOR");
assertThat(query.statuses()).containsOnly("CLOSED");
assertThat(query.resolutions()).containsOnly("FALSE-POSITIVE");
*/
public class DefaultIssueClient implements IssueClient {
+ private static final String TRANSITIONS_BASE_URL = "/api/issues/transitions";
+ private static final String DO_TRANSITION_BASE_URL = "/api/issues/do_transition";
+
private final HttpRequestFactory requestFactory;
private final IssueParser parser;
public void change(String issueKey, IssueChange change) {
if (!change.urlParams().isEmpty()) {
Map<String, Object> queryParams = new LinkedHashMap<String, Object>(change.urlParams());
- queryParams.put("key", issueKey);
+ queryParams.put("issue", issueKey);
HttpRequest request = requestFactory.post(IssueChange.BASE_URL, queryParams);
if (!request.ok()) {
throw new IllegalStateException("Fail to change issue " + issueKey + ".Bad HTTP response status: " + request.code());
public List<String> transitions(String issueKey) {
Map<String, Object> queryParams = new LinkedHashMap<String, Object>();
queryParams.put("issue", issueKey);
- HttpRequest request = requestFactory.get("/api/issues/transitions", queryParams);
+ HttpRequest request = requestFactory.get(TRANSITIONS_BASE_URL, queryParams);
if (!request.ok()) {
throw new IllegalStateException("Fail to return transition for issue. Bad HTTP response status: " + request.code());
}
}
@Override
- public void transition(String issueKey, IssueTransition transition) {
- if (!transition.urlParams().isEmpty()) {
- Map<String, Object> queryParams = new LinkedHashMap<String, Object>(transition.urlParams());
- queryParams.put("issue", issueKey);
- HttpRequest request = requestFactory.post(IssueTransition.BASE_URL, queryParams);
- if (!request.ok()) {
- throw new IllegalStateException("Fail to execute transition on issue " + issueKey + ".Bad HTTP response status: " + request.code());
- }
+ public void doTransition(String issueKey, String transition) {
+ Map<String, Object> queryParams = new LinkedHashMap<String, Object>();
+ queryParams.put("issue", issueKey);
+ queryParams.put("transition", transition);
+ HttpRequest request = requestFactory.post(DO_TRANSITION_BASE_URL, queryParams);
+ if (!request.ok()) {
+ throw new IllegalStateException("Fail to execute transition on issue " + issueKey + ".Bad HTTP response status: " + request.code());
}
}
}
void create(NewIssue issue);
- void transition(String issueKey, IssueTransition transition);
-
List<String> transitions(String issueKey);
+ void doTransition(String issueKey, String transition);
+
/**
* Shortcut for {@code #change(issueKey, IssueChange.create().comment(comment)}
*/
return params;
}
- public IssueQuery keys(String... keys) {
- return addParam("keys", keys);
+ public IssueQuery issues(String... keys) {
+ return addParam("issues", keys);
}
public IssueQuery severities(String... severities) {
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2013 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.wsclient.issue;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * @since 3.6
- */
-public class IssueTransition {
- static final String BASE_URL = "/api/issues/do_transition";
- private final Map<String, Object> params = new LinkedHashMap<String, Object>();
-
- private IssueTransition() {
- }
-
- public static IssueTransition create() {
- return new IssueTransition();
- }
-
- Map<String, Object> urlParams() {
- return params;
- }
-
- /**
- * Ask to apply a transition
- */
- public IssueTransition transition(String s) {
- params.put("transition", s);
- return this;
- }
-
-}
httpServer.doReturnBody("{\"issues\": [{\"key\": \"ABCDE\"}]}");
IssueClient client = new DefaultIssueClient(requestFactory);
- IssueQuery query = IssueQuery.create().keys("ABCDE");
+ IssueQuery query = IssueQuery.create().issues("ABCDE");
Issues issues = client.find(query);
- assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/search?keys=ABCDE");
+ assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/search?issues=ABCDE");
assertThat(issues.list()).hasSize(1);
assertThat(issues.list().get(0).key()).isEqualTo("ABCDE");
}
IssueClient client = new DefaultIssueClient(requestFactory);
client.change("ABCDE", IssueChange.create().severity("BLOCKER").comment("because!"));
- assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/change?newSeverity=BLOCKER&comment=because!&key=ABCDE");
+ assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/change?newSeverity=BLOCKER&comment=because!&issue=ABCDE");
}
@Test
HttpRequestFactory requestFactory = new HttpRequestFactory(httpServer.url(), null, null);
IssueClient client = new DefaultIssueClient(requestFactory);
- client.transition("ABCDE", IssueTransition.create().transition("resolve"));
+ client.doTransition("ABCDE", "resolve");
- assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/do_transition?transition=resolve&issue=ABCDE");
+ assertThat(httpServer.requestedPath()).isEqualTo("/api/issues/do_transition?issue=ABCDE&transition=resolve");
}
}
@Test
public void get_all_issues_by_parameter() {
IssueQuery query = IssueQuery.create()
- .keys("ABCDE", "FGHIJ")
+ .issues("ABCDE", "FGHIJ")
.assignees("arthur", "perceval")
.components("Action.java", "Filter.java")
.componentRoots("struts")
.pageIndex(4);
assertThat(query.urlParams()).hasSize(13);
- assertThat(query.urlParams()).includes(entry("keys", "ABCDE,FGHIJ"));
+ assertThat(query.urlParams()).includes(entry("issues", "ABCDE,FGHIJ"));
assertThat(query.urlParams()).includes(entry("assignees", "arthur,perceval"));
assertThat(query.urlParams()).includes(entry("components", "Action.java,Filter.java"));
assertThat(query.urlParams()).includes(entry("componentRoots", "struts"));