Browse Source

SONAR-7969 Replace "%2C" by "," in multi values settings

tags/6.1-RC1
Julien Lancelot 7 years ago
parent
commit
bf23163e41

+ 3
- 1
server/sonar-server/src/main/java/org/sonar/server/settings/ws/ValuesAction.java View File

@@ -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);
}

+ 14
- 0
server/sonar-server/src/test/java/org/sonar/server/settings/ws/ValuesActionTest.java View File

@@ -141,6 +141,20 @@ public class ValuesActionTest {
assertThat(bar.hasFieldsValues()).isFalse();
}

@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();

Loading…
Cancel
Save