diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2017-09-06 12:28:04 +0200 |
---|---|---|
committer | Stas Vilchik <stas.vilchik@sonarsource.com> | 2017-09-11 11:28:29 +0200 |
commit | 0926670e79d919e0afa3f0a2e11f656bdcd05916 (patch) | |
tree | fb2b9fbc78a38460fd914729b810afdbb8021cbb /sonar-ws | |
parent | 272dfe918009de0938fde9835961b37420808ffa (diff) | |
download | sonarqube-0926670e79d919e0afa3f0a2e11f656bdcd05916.tar.gz sonarqube-0926670e79d919e0afa3f0a2e11f656bdcd05916.zip |
SONAR-9181 WS api/projects/bulk_delete accepts the sames parameters as api/projects/search
Diffstat (limited to 'sonar-ws')
5 files changed, 32 insertions, 16 deletions
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/BaseService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/BaseService.java index edfd8c7339b..9d5f9e9ce39 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/BaseService.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/BaseService.java @@ -19,7 +19,6 @@ */ package org.sonarqube.ws.client; -import com.google.common.base.Joiner; import com.google.protobuf.Message; import com.google.protobuf.Parser; import java.io.InputStream; @@ -34,8 +33,6 @@ import static com.google.common.base.Strings.isNullOrEmpty; public abstract class BaseService { - private static final Joiner MULTI_VALUES_JOINER = Joiner.on(","); - private final WsConnector wsConnector; protected final String controller; @@ -71,6 +68,6 @@ public abstract class BaseService { @CheckForNull protected static String inlineMultipleParamValue(@Nullable List<String> values) { - return values == null ? null : MULTI_VALUES_JOINER.join(values); + return values == null ? null : String.join(",", values); } } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java index 6ebe8424074..11dc0c4495f 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/ProjectsService.java @@ -85,10 +85,15 @@ public class ProjectsService extends BaseService { .setParam("project", request.getKey())); } - public void bulkDelete(BulkDeleteRequest request) { + public void bulkDelete(SearchWsRequest request) { PostRequest post = new PostRequest(path("bulk_delete")) - .setParam("organization", request.getOrganization()) - .setParam("projects", String.join(",", request.getProjectKeys())); + .setParam(PARAM_ORGANIZATION, request.getOrganization()) + .setParam(PARAM_QUALIFIERS, inlineMultipleParamValue(request.getQualifiers())) + .setParam(PARAM_ANALYZED_BEFORE, request.getAnalyzedBefore()) + .setParam(TEXT_QUERY, request.getQuery()) + .setParam(PARAM_ON_PROVISIONED_ONLY, request.isOnProvisionedOnly()) + .setParam(PARAM_PROJECTS, inlineMultipleParamValue(request.getProjects())) + .setParam(PARAM_PROJECT_IDS, inlineMultipleParamValue(request.getProjectIds())); call(post); } @@ -121,8 +126,8 @@ public class ProjectsService extends BaseService { .setParam(PAGE, request.getPage()) .setParam(PAGE_SIZE, request.getPageSize()) .setParam(PARAM_ON_PROVISIONED_ONLY, request.isOnProvisionedOnly()) - .setParam(PARAM_PROJECTS, request.getProjects()) - .setParam(PARAM_PROJECT_IDS, request.getProjectIds()); + .setParam(PARAM_PROJECTS, inlineMultipleParamValue(request.getProjects())) + .setParam(PARAM_PROJECT_IDS, inlineMultipleParamValue(request.getProjectIds())); return call(get, SearchWsResponse.parser()); } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/SearchWsRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/SearchWsRequest.java index 422bb90f6d9..90544b37fc2 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/project/SearchWsRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/project/SearchWsRequest.java @@ -19,12 +19,13 @@ */ package org.sonarqube.ws.client.project; -import java.util.ArrayList; import java.util.List; import javax.annotation.CheckForNull; import javax.annotation.Nullable; +import org.sonar.api.resources.Qualifiers; import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Collections.singletonList; import static java.util.Objects.requireNonNull; import static org.sonarqube.ws.client.project.ProjectsWsParameters.MAX_PAGE_SIZE; @@ -108,7 +109,7 @@ public class SearchWsRequest { public static class Builder { private String organization; - private List<String> qualifiers = new ArrayList<>(); + private List<String> qualifiers = singletonList(Qualifiers.PROJECT); private Integer page; private Integer pageSize; private String query; diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/project/ProjectsServiceTest.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/project/ProjectsServiceTest.java index f3727f38851..d1a094f3fcc 100644 --- a/sonar-ws/src/test/java/org/sonarqube/ws/client/project/ProjectsServiceTest.java +++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/project/ProjectsServiceTest.java @@ -125,11 +125,24 @@ public class ProjectsServiceTest { @Test public void bulk_delete() { - BulkDeleteRequest request = BulkDeleteRequest.builder().setProjectKeys(Arrays.asList("p1", "p2")).setOrganization("my-org").build(); - underTest.bulkDelete(request); + underTest.bulkDelete(SearchWsRequest.builder() + .setOrganization("default") + .setQuery("project") + .setQualifiers(asList("TRK", "VW")) + .setAnalyzedBefore("2017-09-01") + .setProjects(Arrays.asList("P1", "P2")) + .setOnProvisionedOnly(true) + .build()); - assertThat(serviceTester.getPostRequest().getPath()).isEqualTo("api/projects/bulk_delete"); - assertThat(serviceTester.getPostRequest().getParams()).containsOnly(entry("organization", "my-org"), entry("projects", "p1,p2")); + serviceTester.assertThat(serviceTester.getPostRequest()) + .hasPath("bulk_delete") + .hasParam("organization", "default") + .hasParam("q", "project") + .hasParam("analyzedBefore", "2017-09-01") + .hasParam("qualifiers", "TRK,VW") + .hasParam("onProvisionedOnly", "true") + .hasParam("projects", "P1,P2") + .andNoOtherParam(); } @Test diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/project/SearchWsRequestTest.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/project/SearchWsRequestTest.java index 121a6d5b075..bf0f455215d 100644 --- a/sonar-ws/src/test/java/org/sonarqube/ws/client/project/SearchWsRequestTest.java +++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/project/SearchWsRequestTest.java @@ -50,7 +50,7 @@ public class SearchWsRequestTest { } @Test - public void fail_when_page_size_is_greather_then_500() throws Exception { + public void fail_when_page_size_is_greater_then_500() throws Exception { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Page size must not be greater than 500"); |