From: Julien Lancelot Date: Mon, 29 Apr 2013 13:02:39 +0000 (+0200) Subject: SONAR-3755 Rename key by issueKey in IssueQuery X-Git-Tag: 3.6~518 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c96629692ae3e13e4a3f3502156ec1c10033488d;p=sonarqube.git SONAR-3755 Rename key by issueKey in IssueQuery --- diff --git a/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml b/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml index 73c8013715e..1bd983329b0 100644 --- a/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml @@ -163,9 +163,9 @@ and i.resource_id=project_component.id - + and i.kee in - #{key} + #{key} diff --git a/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDaoTest.java b/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDaoTest.java index 965a8195d1e..6330ce885cd 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDaoTest.java @@ -25,8 +25,6 @@ import org.junit.Test; 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; @@ -140,7 +138,7 @@ public class IssueDaoTest extends AbstractDaoTestCase { 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")) diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java b/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java index bffb7cbb0b6..b480b29b39f 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueQuery.java @@ -37,7 +37,7 @@ import java.util.Date; */ public class IssueQuery { - private final Collection keys; + private final Collection issueKeys; private final Collection severities; private final Collection statuses; private final Collection resolutions; @@ -58,7 +58,7 @@ public class IssueQuery { 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; @@ -75,8 +75,8 @@ public class IssueQuery { this.pageIndex = builder.pageIndex; } - public Collection keys() { - return keys; + public Collection issueKeys() { + return issueKeys; } public Collection severities() { @@ -158,7 +158,7 @@ public class IssueQuery { private static final int MAX_PAGE_SIZE = 1000; private static final int DEFAULT_PAGE_INDEX = 1; - private Collection keys; + private Collection issueKeys; private Collection severities; private Collection statuses; private Collection resolutions; @@ -177,8 +177,8 @@ public class IssueQuery { private Builder() { } - public Builder keys(Collection l) { - this.keys = l; + public Builder issueKeys(Collection l) { + this.issueKeys = l; return this; } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java index 9d8a9adbdcc..484119de21d 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/issue/IssueQueryTest.java @@ -34,7 +34,7 @@ public class IssueQueryTest { @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)) @@ -49,7 +49,7 @@ public class IssueQueryTest { .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); diff --git a/sonar-server/src/main/java/org/sonar/server/issue/JRubyApiIssues.java b/sonar-server/src/main/java/org/sonar/server/issue/JRubyApiIssues.java index 513820ea099..6dba7311d73 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/JRubyApiIssues.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/JRubyApiIssues.java @@ -33,6 +33,7 @@ import org.sonar.api.web.UserRole; import org.sonar.server.platform.UserSession; import javax.annotation.Nullable; + import java.util.Collection; import java.util.Date; import java.util.List; @@ -62,7 +63,7 @@ public class JRubyApiIssues implements JRubyIssues { IssueQuery toQuery(Map 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"))); diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb index d8b6e6069d2..58a1959683e 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb @@ -24,7 +24,7 @@ class IssueController < ApplicationController # 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) diff --git a/sonar-server/src/test/java/org/sonar/server/issue/JRubyApiIssuesTest.java b/sonar-server/src/test/java/org/sonar/server/issue/JRubyApiIssuesTest.java index b8468d72427..55f651ec207 100644 --- a/sonar-server/src/test/java/org/sonar/server/issue/JRubyApiIssuesTest.java +++ b/sonar-server/src/test/java/org/sonar/server/issue/JRubyApiIssuesTest.java @@ -46,11 +46,11 @@ public class JRubyApiIssuesTest { @Test public void test_find() throws Exception { - facade.find(ImmutableMap.of("keys", Lists.newArrayList("ABCDE"))); + facade.find(ImmutableMap.of("issueKeys", Lists.newArrayList("ABCDE"))); verify(finder).find(argThat(new ArgumentMatcher() { @Override public boolean matches(Object o) { - return ((IssueQuery) o).keys().contains("ABCDE"); + return ((IssueQuery) o).issueKeys().contains("ABCDE"); } }), anyInt(), eq(UserRole.CODEVIEWER)); } @@ -58,7 +58,7 @@ public class JRubyApiIssuesTest { @Test public void should_create_query_from_parameters() { Map 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")); @@ -73,7 +73,7 @@ public class JRubyApiIssuesTest { 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"); diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/DefaultIssueClient.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/DefaultIssueClient.java index 8069c071747..d9670513957 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/DefaultIssueClient.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/DefaultIssueClient.java @@ -31,6 +31,9 @@ import java.util.Map; */ 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; @@ -55,7 +58,7 @@ public class DefaultIssueClient implements IssueClient { public void change(String issueKey, IssueChange change) { if (!change.urlParams().isEmpty()) { Map queryParams = new LinkedHashMap(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()); @@ -80,7 +83,7 @@ public class DefaultIssueClient implements IssueClient { public List transitions(String issueKey) { Map queryParams = new LinkedHashMap(); 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()); } @@ -89,14 +92,13 @@ public class DefaultIssueClient implements IssueClient { } @Override - public void transition(String issueKey, IssueTransition transition) { - if (!transition.urlParams().isEmpty()) { - Map queryParams = new LinkedHashMap(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 queryParams = new LinkedHashMap(); + 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()); } } } diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueClient.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueClient.java index 04845bf5b6a..85c0b86cf3c 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueClient.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueClient.java @@ -32,10 +32,10 @@ public interface IssueClient { void create(NewIssue issue); - void transition(String issueKey, IssueTransition transition); - List transitions(String issueKey); + void doTransition(String issueKey, String transition); + /** * Shortcut for {@code #change(issueKey, IssueChange.create().comment(comment)} */ diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueQuery.java index e4d38dc3bef..dea74706900 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueQuery.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueQuery.java @@ -44,8 +44,8 @@ public class IssueQuery { 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) { diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueTransition.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueTransition.java deleted file mode 100644 index 24e7f3e1254..00000000000 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueTransition.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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 params = new LinkedHashMap(); - - private IssueTransition() { - } - - public static IssueTransition create() { - return new IssueTransition(); - } - - Map urlParams() { - return params; - } - - /** - * Ask to apply a transition - */ - public IssueTransition transition(String s) { - params.put("transition", s); - return this; - } - -} diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/DefaultIssueClientTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/DefaultIssueClientTest.java index 18352beac9e..aa5fbe62a2f 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/DefaultIssueClientTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/DefaultIssueClientTest.java @@ -39,10 +39,10 @@ public class DefaultIssueClientTest { 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"); } @@ -68,7 +68,7 @@ public class DefaultIssueClientTest { 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 @@ -114,8 +114,8 @@ public class DefaultIssueClientTest { 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"); } } diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueQueryTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueQueryTest.java index 4a37fed1e80..de00cb0af06 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueQueryTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueQueryTest.java @@ -34,7 +34,7 @@ public class IssueQueryTest { @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") @@ -49,7 +49,7 @@ public class IssueQueryTest { .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"));