aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-ws
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-08-23 17:50:44 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2016-08-25 11:29:41 +0200
commit7d3c46217fc528ab36b53db9c0c431d7365e8c4e (patch)
treef40327cc3a3c3ee9235d7bacaadccbcaa6378773 /sonar-ws
parent4beb2af88d3e1378d19bbaec1859c4c59acb6252 (diff)
downloadsonarqube-7d3c46217fc528ab36b53db9c0c431d7365e8c4e.tar.gz
sonarqube-7d3c46217fc528ab36b53db9c0c431d7365e8c4e.zip
SONAR-7969 Create client for values WS
Diffstat (limited to 'sonar-ws')
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsService.java11
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsWsParameters.java6
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/setting/ValuesRequest.java97
-rw-r--r--sonar-ws/src/test/java/org/sonarqube/ws/client/setting/SettingsServiceTest.java25
-rw-r--r--sonar-ws/src/test/java/org/sonarqube/ws/client/setting/ValuesRequestTest.java81
5 files changed, 215 insertions, 5 deletions
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsService.java
index ff5e53d669e..1b9f14007ca 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsService.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsService.java
@@ -20,6 +20,7 @@
package org.sonarqube.ws.client.setting;
import org.sonarqube.ws.Settings.ListDefinitionsWsResponse;
+import org.sonarqube.ws.Settings.ValuesWsResponse;
import org.sonarqube.ws.client.BaseService;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.WsConnector;
@@ -27,7 +28,9 @@ import org.sonarqube.ws.client.WsConnector;
import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_COMPONENT_ID;
import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_COMPONENT_KEY;
import static org.sonarqube.ws.client.setting.SettingsWsParameters.ACTION_LIST_DEFINITIONS;
+import static org.sonarqube.ws.client.setting.SettingsWsParameters.ACTION_VALUES;
import static org.sonarqube.ws.client.setting.SettingsWsParameters.CONTROLLER_SETTINGS;
+import static org.sonarqube.ws.client.setting.SettingsWsParameters.PARAM_KEYS;
public class SettingsService extends BaseService {
public SettingsService(WsConnector wsConnector) {
@@ -41,4 +44,12 @@ public class SettingsService extends BaseService {
return call(getRequest, ListDefinitionsWsResponse.parser());
}
+ public ValuesWsResponse values(ValuesRequest request) {
+ GetRequest getRequest = new GetRequest(path(ACTION_VALUES))
+ .setParam(PARAM_KEYS, inlineMultipleParamValue(request.getKeys()))
+ .setParam(PARAM_COMPONENT_ID, request.getComponentId())
+ .setParam(PARAM_COMPONENT_KEY, request.getComponentKey());
+ return call(getRequest, ValuesWsResponse.parser());
+ }
+
}
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsWsParameters.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsWsParameters.java
index e8b9f515cbc..9c21076f684 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsWsParameters.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/SettingsWsParameters.java
@@ -24,8 +24,14 @@ public class SettingsWsParameters {
public static final String CONTROLLER_SETTINGS = "api/settings";
public static final String ACTION_LIST_DEFINITIONS = "list_definitions";
+ public static final String ACTION_VALUES = "values";
public static final String PARAM_COMPONENT_ID = "componentId";
public static final String PARAM_COMPONENT_KEY = "componentKey";
+ public static final String PARAM_KEYS = "keys";
+
+ private SettingsWsParameters() {
+ // Only static stuff
+ }
}
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/ValuesRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/ValuesRequest.java
new file mode 100644
index 00000000000..3c1d8d212a3
--- /dev/null
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/setting/ValuesRequest.java
@@ -0,0 +1,97 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program 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.
+ *
+ * This program 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.sonarqube.ws.client.setting;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Arrays.asList;
+import static java.util.Objects.requireNonNull;
+import static org.sonarqube.ws.client.setting.SettingsWsParameters.PARAM_KEYS;
+
+public class ValuesRequest {
+
+ private final String componentId;
+ private final String componentKey;
+ private final List<String> keys;
+
+ public ValuesRequest(Builder builder) {
+ this.componentId = builder.componentId;
+ this.componentKey = builder.componentKey;
+ this.keys = builder.keys;
+ }
+
+ @CheckForNull
+ public String getComponentId() {
+ return componentId;
+ }
+
+ @CheckForNull
+ public String getComponentKey() {
+ return componentKey;
+ }
+
+ public List<String> getKeys() {
+ return keys;
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+ private String componentId;
+ private String componentKey;
+ private List<String> keys = new ArrayList<>();
+
+ private Builder() {
+ // enforce factory method use
+ }
+
+ public Builder setComponentId(@Nullable String componentId) {
+ this.componentId = componentId;
+ return this;
+ }
+
+ public Builder setComponentKey(@Nullable String componentKey) {
+ this.componentKey = componentKey;
+ return this;
+ }
+
+ public Builder setKeys(List<String> keys) {
+ this.keys = requireNonNull(keys);
+ return this;
+ }
+
+ public Builder setKeys(String... keys) {
+ return setKeys(asList(keys));
+ }
+
+ public ValuesRequest build() {
+ checkArgument(!keys.isEmpty(), "'%s' cannot be empty", PARAM_KEYS);
+ return new ValuesRequest(this);
+ }
+ }
+
+}
diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/SettingsServiceTest.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/SettingsServiceTest.java
index e8578b56990..57607b16704 100644
--- a/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/SettingsServiceTest.java
+++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/SettingsServiceTest.java
@@ -22,7 +22,8 @@ package org.sonarqube.ws.client.setting;
import org.junit.Rule;
import org.junit.Test;
-import org.sonarqube.ws.Settings;
+import org.sonarqube.ws.Settings.ListDefinitionsWsResponse;
+import org.sonarqube.ws.Settings.ValuesWsResponse;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.ServiceTester;
import org.sonarqube.ws.client.WsConnector;
@@ -30,6 +31,7 @@ import org.sonarqube.ws.client.WsConnector;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.sonarqube.ws.client.setting.SettingsWsParameters.PARAM_COMPONENT_KEY;
+import static org.sonarqube.ws.client.setting.SettingsWsParameters.PARAM_KEYS;
public class SettingsServiceTest {
@@ -40,15 +42,28 @@ public class SettingsServiceTest {
@Test
public void list_definitions() {
- ListDefinitionsRequest request = ListDefinitionsRequest.builder()
+ underTest.listDefinitions(ListDefinitionsRequest.builder()
.setComponentKey("KEY")
- .build();
+ .build());
+ GetRequest getRequest = serviceTester.getGetRequest();
+
+ assertThat(serviceTester.getGetParser()).isSameAs(ListDefinitionsWsResponse.parser());
+ serviceTester.assertThat(getRequest)
+ .hasParam(PARAM_COMPONENT_KEY, "KEY")
+ .andNoOtherParam();
+ }
- underTest.listDefinitions(request);
+ @Test
+ public void values() {
+ underTest.values(ValuesRequest.builder()
+ .setKeys("sonar.debt,sonar.issue")
+ .setComponentKey("KEY")
+ .build());
GetRequest getRequest = serviceTester.getGetRequest();
- assertThat(serviceTester.getGetParser()).isSameAs(Settings.ListDefinitionsWsResponse.parser());
+ assertThat(serviceTester.getGetParser()).isSameAs(ValuesWsResponse.parser());
serviceTester.assertThat(getRequest)
+ .hasParam(PARAM_KEYS, "sonar.debt,sonar.issue")
.hasParam(PARAM_COMPONENT_KEY, "KEY")
.andNoOtherParam();
}
diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/ValuesRequestTest.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/ValuesRequestTest.java
new file mode 100644
index 00000000000..1ee0d1763bd
--- /dev/null
+++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/setting/ValuesRequestTest.java
@@ -0,0 +1,81 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program 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.
+ *
+ * This program 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.sonarqube.ws.client.setting;
+
+import java.util.List;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ValuesRequestTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ ValuesRequest.Builder underTest = ValuesRequest.builder();
+
+ @Test
+ public void create_request_with_no_component() {
+ ValuesRequest result = underTest.setKeys("sonar.debt").build();
+
+ assertThat(result.getComponentId()).isNull();
+ assertThat(result.getComponentKey()).isNull();
+ assertThat(result.getKeys()).containsOnly("sonar.debt");
+ }
+
+ @Test
+ public void create_request_with_component_id() {
+ ValuesRequest result = underTest.setKeys("sonar.debt").setComponentId("projectId").build();
+
+ assertThat(result.getComponentId()).isEqualTo("projectId");
+ assertThat(result.getComponentKey()).isNull();
+ assertThat(result.getKeys()).containsOnly("sonar.debt");
+ }
+
+ @Test
+ public void create_request_with_component_key() {
+ ValuesRequest result = underTest.setKeys("sonar.debt").setComponentKey("projectKey").build();
+
+ assertThat(result.getComponentId()).isNull();
+ assertThat(result.getComponentKey()).isEqualTo("projectKey");
+ assertThat(result.getKeys()).containsOnly("sonar.debt");
+ }
+
+ @Test
+ public void fail_when_keys_is_null() throws Exception {
+ expectedException.expect(NullPointerException.class);
+ underTest
+ .setKeys((List<String>) null)
+ .setComponentId("projectId")
+ .build();
+ }
+
+ @Test
+ public void fail_when_keys_is_empty() throws Exception {
+ expectedException.expect(IllegalArgumentException.class);
+ expectedException.expectMessage("'keys' cannot be empty");
+
+ underTest.setComponentId("projectId").build();
+ }
+
+}