aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-08-26 13:50:50 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2016-08-26 14:46:49 +0200
commitbf23163e41dcdb85b0610ffbfdcdd233d96a682b (patch)
tree875ac89a0ca889fa3f9a927ef4d336538c9b3c14 /server
parent8de13aed2d978699d7f8d379f6af8610c173c29e (diff)
downloadsonarqube-bf23163e41dcdb85b0610ffbfdcdd233d96a682b.tar.gz
sonarqube-bf23163e41dcdb85b0610ffbfdcdd233d96a682b.zip
SONAR-7969 Replace "%2C" by "," in multi values settings
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/settings/ws/ValuesAction.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/settings/ws/ValuesActionTest.java14
2 files changed, 17 insertions, 1 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/settings/ws/ValuesAction.java b/server/sonar-server/src/main/java/org/sonar/server/settings/ws/ValuesAction.java
index a82fe4db3e9..e12b72add4c 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/settings/ws/ValuesAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/settings/ws/ValuesAction.java
@@ -61,6 +61,7 @@ import static org.sonarqube.ws.client.setting.SettingsWsParameters.PARAM_KEYS;
public class ValuesAction implements SettingsWsAction {
private static final Splitter COMMA_SPLITTER = Splitter.on(",");
+ private static final String COMMA_ENCODED_VALUE = "%2C";
private final DbClient dbClient;
private final ComponentFinder componentFinder;
@@ -224,7 +225,8 @@ public class ValuesAction implements SettingsWsAction {
}
valueBuilder.setFieldsValues(builder);
} else if (definition.multiValues()) {
- valueBuilder.setValues(Settings.Values.newBuilder().addAllValues(COMMA_SPLITTER.split(value)));
+ List<String> values = COMMA_SPLITTER.splitToList(value).stream().map(v -> v.replace(COMMA_ENCODED_VALUE, ",")).collect(Collectors.toList());
+ valueBuilder.setValues(Settings.Values.newBuilder().addAllValues(values));
} else {
valueBuilder.setValue(value);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/settings/ws/ValuesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/settings/ws/ValuesActionTest.java
index 878af164059..01eb10674ff 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/settings/ws/ValuesActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/settings/ws/ValuesActionTest.java
@@ -142,6 +142,20 @@ public class ValuesActionTest {
}
@Test
+ public void return_multi_value_with_coma() throws Exception {
+ setUserAsSystemAdmin();
+ propertyDefinitions.addComponent(PropertyDefinition.builder("global").multiValues(true).build());
+ insertProperties(newGlobalPropertyDto().setKey("global").setValue("three,four%2Cfive"));
+
+ ValuesWsResponse result = executeRequestForGlobalProperties("global");
+
+ assertThat(result.getSettingsList()).hasSize(1);
+ Settings.Setting setting = result.getSettings(0);
+ assertThat(setting.getKey()).isEqualTo("global");
+ assertThat(setting.getValues().getValuesList()).containsOnly("three", "four,five");
+ }
+
+ @Test
public void return_property_set() throws Exception {
setUserAsSystemAdmin();
propertyDefinitions.addComponent(PropertyDefinition