summaryrefslogtreecommitdiffstats
path: root/server/sonar-server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-07-31 13:22:18 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-07-31 13:22:25 +0200
commit86c81b2b63375bc87c52c4bebbefe62aa77a8bf7 (patch)
tree7a6d180fcff023231b84e3bfb63c62607ce4161d /server/sonar-server
parent981ba5f21600c0e10d8d37546cc8af86d315251e (diff)
downloadsonarqube-86c81b2b63375bc87c52c4bebbefe62aa77a8bf7.tar.gz
sonarqube-86c81b2b63375bc87c52c4bebbefe62aa77a8bf7.zip
SONAR-5395 Fail to save a measure filter when name criteria contains a comma
Diffstat (limited to 'server/sonar-server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java17
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java34
2 files changed, 50 insertions, 1 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java b/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java
index ef1d68bd1c3..bb6dcdda810 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java
@@ -62,7 +62,7 @@ public class MeasureFilterFactory implements ServerComponent {
if (onBaseComponents != null) {
filter.setOnBaseResourceChildren(Boolean.valueOf(onBaseComponents));
}
- filter.setResourceName((String) properties.get("nameSearch"));
+ filter.setResourceName(toString(properties.get("nameSearch")));
filter.setResourceKey((String) properties.get("keySearch"));
String onFavourites = (String) properties.get("onFavourites");
if (onFavourites != null) {
@@ -204,4 +204,19 @@ public class MeasureFilterFactory implements ServerComponent {
return null;
}
+ @CheckForNull
+ public static String toString(@Nullable Object o) {
+ if (o != null) {
+ if (o instanceof List) {
+ return Joiner.on(",").join((List) o);
+ } else if (o instanceof String[]) {
+ // assume that it contains only strings
+ return Joiner.on(",").join((String[]) o);
+ } else {
+ return o.toString();
+ }
+ }
+ return null;
+ }
+
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java
index e653988c431..20cc5872bee 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java
@@ -33,6 +33,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import static com.google.common.collect.Lists.newArrayList;
import static org.fest.assertions.Assertions.assertThat;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
@@ -208,6 +209,39 @@ public class MeasureFilterFactoryTest {
}
@Test
+ public void name_conditions() {
+ MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system);
+ Map<String, Object> props = ImmutableMap.<String, Object>of(
+ "nameSearch", "SonarQube"
+ );
+ MeasureFilter filter = factory.create(props);
+
+ assertThat(filter.getResourceName()).isEqualTo("SonarQube");
+ }
+
+ @Test
+ public void not_fail_when_name_conditions_contains_array() {
+ MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system);
+ Map<String, Object> props = ImmutableMap.<String, Object>of(
+ "nameSearch", new String[]{"sonar", "qube"}
+ );
+ MeasureFilter filter = factory.create(props);
+
+ assertThat(filter.getResourceName()).isEqualTo("sonar,qube");
+ }
+
+ @Test
+ public void not_fail_when_name_conditions_contains_list() {
+ MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system);
+ Map<String, Object> props = ImmutableMap.<String, Object>of(
+ "nameSearch", newArrayList("sonar", "qube")
+ );
+ MeasureFilter filter = factory.create(props);
+
+ assertThat(filter.getResourceName()).isEqualTo("sonar,qube");
+ }
+
+ @Test
public void ignore_partial_measure_condition() {
MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system);
Map<String, Object> props = ImmutableMap.<String, Object>of(